Hướng Dẫn Tạo Home Server Đa Năng Từ Android TV Box

by tamcongnghe

VIDEO HƯỚNG DẪN

Video chi tiết ở đây nha anh em:

Anh em chưa có TV Box có thể mua ở link sau:
https://tamcongnghe.com/tv-box-1
https://tamcongnghe.com/tv-box-2
https://tamcongnghe.com/tv-box-3
https://tamcongnghe.com/tv-box-4

HƯỚNG DẪN CÀI ARCANE

Bình thường khi quản lý docker thì chúng ta sẽ thao tác thông qua giao diện dòng lệnh, điều đó gây khó khăn cho những người mới tìm hiểu do không thể nhớ hết tất cả các dòng lệnh ngay được.

Do đó Arcane ra đời để giúp quản lý docker từ giao diện trực quan, thay vì phải nhớ dòng lệnh phức tạp thì bạn sẽ chọn các chức năng mong muốn ngay trên giao diện web.

Để cài nó, bạn cần đảm bảo đã cài thành công docker và docker compose lên hệ thống. Sau đó thực hiện theo các bước sau:

Bước 1: Chuẩn bị thư mục

Mở Terminal (hoặc SSH vào server) và chạy lệnh sau để tạo thư mục mới dành cho arcane và di chuyển vào thư mục đó:

mkdir -p ~/arcane && cd ~/arcane

Bước 2: Tạo file docker-compose.yml

Tạo một file tên là docker-compose.yml trong thư mục vừa tạo:

nano docker-compose.yml

Dán nội dung sau vào file vừa tạo:

Nếu bạn hiểu mục đích và muốn chỉnh ENCRYPTION_KEY và JWT_SECRET thì có thể vào trang https://getarcane.app/ và chọn vào Compose Generator để tự tạo dãy ký tự ngẫu nhiên. Còn không thì có thể dùng luôn cấu hình phía dưới vẫn đảm bảo hoạt động tốt.
services:
  arcane:
    image: ghcr.io/getarcaneapp/arcane:latest
    container_name: arcane
    restart: unless-stopped
    ports:
      - 3552:3552
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - arcane-data:/app/data
    environment:
      - APP_URL=http://localhost:3552
      - PUID=1000
      - PGID=1000
      - ENCRYPTION_KEY=7bbf32cffc1be11ef5387363cdf3323bcb0660252a329db3b8dcb64cff5d18c3
      - JWT_SECRET=a71054d5129105d7ee1536b8e7dd7b2612a00526be71824af2947b7fba89f9ba
      - LOG_LEVEL=info
      - LOG_JSON=false
      - OIDC_ENABLED=false
      - DATABASE_URL=file:data/arcane.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(2500)&_txlock=immediate

volumes:
  arcane-data:
    driver: local

Lưu lại file bằng cách ấn Ctrl + X, sau đó nhập Y rồi ấn Enter.

Bước 3: Khởi chạy

Chạy lệnh sau để khởi động:

docker compose up -d

Bước 4: Đăng nhập trang quản lý

Bây giờ bạn mở trình duyệt và truy cập vào arcane thông qua địa chỉ dạng IP:3552

Ví dụ địa chỉ IP LAN chiếc Android TV Box của mình là 192.168.1.25 thì mình sẽ nhập vào trình duyệt: 192.168.1.25:3552

Sử dụng thông tin sau để đăng nhập:

Username:

arcane

Password:

arcane-admin

Ấn Sign in to Arcane để đăng nhập. Ngay sau khi đăng nhập thành công nó sẽ cho chúng ta đổi mật khẩu.

Bạn nhập mật khẩu muốn đặt và nhập lại lần nữa rồi chọn Change Password.

Vậy là đã cài xong Arcane!

HƯỚNG DẪN CÀI ADGUARD HOME

Đây là cụ chặn quảng cáo cho toàn bộ mạng trong gia đình mà mình đã giới thiệu và hướng dẫn cài chi tiết ở bài viết Hướng Dẫn Cài AdGuard Home Lên Docker Compose

Chúng ta sẽ cài thông qua các bước dưới đây.

Bước 1: Giải phóng port 53

Adguard Home sau khi khởi chạy sẽ lắng nghe DNS thông qua cổng 53. Tuy nhiên trên Linux (đặc biệt là Ubuntu), cổng 53 thường bị chiếm bởi systemd-resolved. Vì thế chúng ta cần phải giải phóng cổng này để cho adguard home sử dụng.

Chạy lệnh sau:

sudo mkdir -p /etc/systemd/resolved.conf.d/
sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf

Nhập vào nội dung:

[Resolve]
DNS=127.0.0.1
DNSStubListener=no

Lưu lại file bằng cách ấn Ctrl + X, sau đó nhập Y rồi ấn Enter.

chạy lệnh sau để áp dụng thay đổi:

sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl restart systemd-resolved

Kiểm tra xem cổng 53 còn bị chiếm dụng bởi dịch vụ nào khác không:

sudo lsof -i :53

Nếu không thấy kết quả nào trả lại nghĩa là port 53 đã sẵn sàng để Adguard Home sử dụng.

Bước 2: Tạo file docker compose trên arcane

Ngay ở bước trước, chúng ta vừa cài xong Arcane nên từ giờ trở đi chúng ta sẽ sử dụng nó.

Mở giao diện quản lý của Arcane lên, truy cập vào Projects -> Create Project.

Click vào chữ “My New Project” để đổi tên thành adguardhome.

Tại tab Docker Compose File, hãy xoá hết nội dung cũ đi, Paste nội dung sau vào:

services:
  adguardhome:
    image: adguard/adguardhome:latest
    container_name: adguardhome
    ports:
      - 53:53/tcp     # DNS TCP
      - 53:53/udp     # DNS UDP
      - 8080:80/tcp   # Web UI HTTP
      - 3131:3000/tcp # Port Setup Ban Dau
    volumes:
      - ./workdir:/opt/adguardhome/work
      - ./confdir:/opt/adguardhome/conf
    restart: unless-stopped

tại tab Environment (.env) bạn cũng xoá hết nội dung mặc định và để trống.

Cuối cùng chọn Create Project để tạo.

Bước 3: Khởi chạy

Ở giao diện tiếp theo, ấn vào Up để khởi chạy rồi đợi vài phút cho quá trình tải bộ cài adguard home diễn ra.

Cạnh tên Project “adguardhome” có dòng chữ Stopped nền đỏ chuyển thành Running nền xanh lá cây là đã khởi chạy thành công.

Bước 4: Cấu hình ban đầu

Bước này sẽ cho phép chúng ta tạo tên đăng nhập và mật khẩu cho trang quản lý của adguard home.

Mở trình duyệt và truy cập vào địa chỉ dạng IP:3131

Bấm “Get Started”. Các bước còn lại chúng ta làm theo hướng dẫn tại đây.

HƯỚNG DẪN CÀI UPTIME KUMA

Uptime Kuma là một phần mềm giám sát (monitoring) mã nguồn mở dùng để theo dõi trạng thái hoạt động (up/down) của website, server, VPS, container Docker, API… theo thời gian thực.

👉 Nó giúp bạn biết dịch vụ của mình có đang “sống” hay “chết” và báo cho bạn ngay khi có sự cố.

Các bước cài y tương tự như các phần đã hướng dẫn Quan trọng nhất là file docker-compose.yml này:

services:
  uptime-kuma:
    image: louislam/uptime-kuma:2
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Ho_Chi_Minh
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"

HƯỚNG DẪN CÀI N8N

n8n là một nền tảng tự động hóa workflow (workflow automation) mã nguồn mở, dùng để kết nối các ứng dụng, dịch vụ và API với nhau mà không (hoặc rất ít) cần viết code.

Thiết lập file docker-compose.yml như sau:

services:
  # Cài PostgreSQL
  postgres:
    image: postgres:15-alpine
    container_name: n8n_postgres
    env_file:
      - .env
    environment:
      - POSTGRES_DB=${DB_POSTGRES_DATABASE}
      - POSTGRES_USER=${DB_POSTGRES_USER}
      - POSTGRES_PASSWORD=${DB_POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    restart: unless-stopped
    networks:
      - n8n-network

  # Cài N8N
  n8n:
    image: n8nio/n8n:latest
    container_name: n8n
    env_file:
      - .env
    environment:
      # Cấu hình PostgreSQL
      - DB_TYPE=postgresdb
      - DB_POSTGRESDB_HOST=postgres
      - DB_POSTGRESDB_PORT=5432
      - DB_POSTGRESDB_DATABASE=${DB_POSTGRES_DATABASE}
      - DB_POSTGRESDB_USER=${DB_POSTGRES_USER}
      - DB_POSTGRESDB_PASSWORD=${DB_POSTGRES_PASSWORD}
      # Cấu hình cho webhook
      - N8N_PROTOCOL=${N8N_PROTOCOL}
      - N8N_HOST=${N8N_HOST}
      - WEBHOOK_URL=${WEBHOOK_URL}
      # Bật MCP trong AI Agents
      - N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true
      # Option
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
      - N8N_RUNNERS_ENABLED=true
      - N8N_GIT_NODE_DISABLE_BARE_REPOS=true
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true

    ports:
      - "${N8N_PORT}:5678"  # Mở port ra host
    volumes:
      - n8n_data:/home/node/.n8n
    depends_on:
      - postgres
    restart: unless-stopped
    networks:
      - n8n-network

networks:
  n8n-network:
    name: n8n-network
    driver: bridge
volumes:
  n8n_data:
  postgres_data:

Và thêm cả file .env như sau:

# PUBLIC
N8N_PORT=5678
N8N_HOST=domain.com
N8N_PROTOCOL=https

WEBHOOK_URL=https://domain.com/
N8N_EDITOR_BASE_URL=https://domain.com/

# DATABASE (POSTGRESQL)
DB_POSTGRES_DATABASE=dat_ten_database
DB_POSTGRES_USER=dat_ten_user
DB_POSTGRES_PASSWORD=dat_mat_khau

# OPTION
GENERIC_TIMEZONE=Asia/Ho_Chi_Minh

# PROXY (Cloudflare Tunnel)
N8N_PROXY_HOPS=1
N8N_TRUST_PROXY=true

Nhớ thay các thông tin phù hợp với bạn.

HƯỚNG DẪN CÀI HOME ASSISTANT

Home Assistant là một nền tảng nhà thông minh (smart home) mã nguồn mở, cho phép bạn kết nối – điều khiển – tự động hóa các thiết bị trong nhà ngay tại máy của bạn (local), không phụ thuộc cloud.

Tạo một thư mục riêng để chứa file cấu hình và dữ liệu của Home Assistant.

mkdir -p ~/homeassistant_data && cd ~/homeassistant_data

Tại thư mục này, bạn tạo file cấu hình:

nano docker-compose.yml

Dán nội dung sau vào.

services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - ./config:/config
      - /run/dbus:/run/dbus:ro
    restart: unless-stopped
    privileged: true
    network_mode: host
    environment:
      - TZ=Asia/Ho_Chi_Minh

Vẫn tại thư mục đó, bạn chạy lệnh sau để khởi chạy:

docker compose up -d

Để sửa cấu hình HA

nano /homeassistant_data/config/configuration.yaml

HƯỚNG DẪN CÀI CLOUDFLARE TUNNEL

Cloudflare Tunnel (tên cũ: Argo Tunnel) là một công nghệ của Cloudflare cho phép bạn đưa dịch vụ nội bộ (local / private server) lên Internet một cách an toàn mà không cần mở port trên router hay VPS.

Để sử dụng nó, bạn cần có ít nhất 1 tên miền đã chuyển Name Server về Cloudflare quản lý. Sau đó truy cập vào Networks -> Connectors -> Create a tunnel.

Chọn Cloudflared, tại mục Name your tunnel hãy đặt tên mà bạn thích rồi chọn Save tunnel.

Tại Choose your environment chọn Docker và copy nội dung chạy về.

Lấy mình token rồi thay vào đoạn thay_token_vao_day

docker run -d \
  --name cloudflared \
  --restart unless-stopped \
  --network host \
  --dns 1.1.1.1 \
  --dns 8.8.8.8 \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run \
  --token thay_token_vao_day

Chạy lệnh trên trong terminal để khởi chạy.