Biến TV Box thành ổ lưu trữ đám mây với Nextcloud

Trong thời đại dữ liệu cá nhân ngày càng nhiều, việc sở hữu một giải pháp lưu trữ riêng tư là nhu cầu thiết yếu. Thay vì phụ thuộc vào Google Drive hay Dropbox, bạn hoàn toàn có thể biến chiếc TV Box cũ thành một máy chủ Nextcloud – nền tảng cloud mã nguồn mở, mạnh mẽ và dễ dùng.

Với máy chủ armbian/Debian đang dùng để chạy Home Assistant, các bạn có thể dễ dàng set up 1 ổ lưu trữ thay thế Google Drive hay Dropbox để truy cập từ xa qua internet với Cloudflare Tunnel và Nextcloud

Nextcloud là gì?

Nextcloud là một hệ thống lưu trữ đám mây tự host, cho phép bạn:

  • Lưu trữ, chia sẻ, đồng bộ dữ liệu (ảnh, video, tài liệu).
  • Truy cập từ mọi thiết bị (PC, điện thoại, tablet).
  • Tích hợp lịch, danh bạ, chat, và nhiều ứng dụng mở rộng.
  • Bảo mật dữ liệu tuyệt đối vì bạn tự quản lý server.

Chuẩn bị trước khi cài đặt

  • TV Box chạy Armbian/Ubuntu/Debian.
  • Ổ cứng SSD/HDD gắn ngoài để lưu dữ liệu.
  • Docker + Docker Compose (giúp triển khai nhanh).
  • Kết nối mạng ổn định.

Các bước cài đặt Nextcloud trên TV Box

Các bước cài đặt Nextcloud trên TV Box

1. Chuẩn bị Ổ cứng và Môi trường

  • Mount ổ cứng: Đảm bảo SSD đã được mount vào hệ thống (ví dụ: /mnt/nextcloud).
  • Tạo thư mục dữ liệu::mkdir -p /mnt/nextcloud/data
  • Phân quyền (Quan trọng): Nextcloud yêu cầu user www-data (UID 33) làm chủ dữ liệu.Bashchown -R 33:33 /mnt/nextcloud/data chmod -R 770 /mnt/nextcloud/data

2. File cấu hình Docker Compose

Tạo thư mục dự án và file docker-compose.yml tại bộ nhớ trong của TV Box (eMMC/SD) để tăng tốc độ phản hồi hệ thống.

Cấu trúc File docker-compose.yml (Bản chuẩn 2025):

YAML

services: db: image: mariadb:10.6 container_name: nextcloud_db restart: always command: –transaction-isolation=READ-COMMITTED –binlog-format=ROW environment: – MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} – MYSQL_DATABASE=${MYSQL_DATABASE} – MYSQL_USER=${MYSQL_USER} – MYSQL_PASSWORD=${MYSQL_PASSWORD} volumes: – ./db_data:/var/lib/mysql redis: image: redis:alpine container_name: nextcloud_redis restart: always app: image: nextcloud:latest container_name: nextcloud_app restart: always depends_on: – db – redis ports: – “8888:80” environment: – MYSQL_DATABASE=${MYSQL_DATABASE} – MYSQL_USER=${MYSQL_USER} – MYSQL_PASSWORD=${MYSQL_PASSWORD} – MYSQL_HOST=db – REDIS_HOST=redis – NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} – NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASS} – NEXTCLOUD_CHMOD_RESILIENT=true # Quan trọng cho ổ cứng ngoài volumes: – /mnt/nextcloud/data:/var/www/html/data # SSD Gắn ngoài – ./config:/var/www/html/config # Bộ nhớ trong TV Box – ./custom_apps:/var/www/html/custom_apps cron: image: nextcloud:latest container_name: nextcloud_cron restart: always volumes: – /mnt/nextcloud/data:/var/www/html/data – ./config:/var/www/html/config entrypoint: /cron.sh

3. Triển khai hệ thống

  1. Chạy Docker:Bash
    • docker compose up -d
  2. Truy cập giao diện Web: Mở trình duyệt nhập http://<IP-TVBOX>:8888.
  3. Xử lý lỗi định dạng ổ cứng (nếu dùng NTFS/exFAT):
    • Nếu gặp lỗi “Data directory is readable by other people”, hãy thêm dòng sau vào ./config/config.php:PHP:
      • 'check_data_directory_permissions' => false,

4. Quản lý và Di chuyển dữ liệu

Dọn dẹp tàn dư: Xóa các thư mục cũ (config, appdata_old) không còn sử dụng để làm sạch SSD.

Di chuyển file thủ công: Nếu bạn copy file trực tiếp vào SSD bằng lệnh mv hoặc cp, hãy đảm bảo chạy lại lệnh: chown -R 33:33.

Quét dữ liệu (Scan files):

Để Nextcloud nhận diện file mới copy thủ công:

docker exec --user www-data nextcloud_app php occ files:scan --all