Dừng việc tải xuống thủ công: Tự động hóa thư viện giải trí tại nhà với Docker ‘Arr’ Stack

HomeLab tutorial - IT technology blog
HomeLab tutorial - IT technology blog

Khởi đầu nhanh trong 5 phút

Docker Compose là tiêu chuẩn vàng để triển khai stack này. Trước khi chạm vào bất kỳ dòng mã nào, bạn phải thiết lập cấu trúc thư mục hợp lý. Hầu hết mọi người đều làm sai bước này, dẫn đến việc truyền tệp chậm và lãng phí tài nguyên CPU. Chúng ta muốn đảm bảo hệ thống sử dụng ‘Hardlinks’ để các tệp được di chuyển tức thì.

mkdir -p ~/homelab/data/{downloads,media/{movies,tv}}
mkdir -p ~/homelab/config/{sonarr,radarr,prowlarr,qbittorrent}

Tiếp theo, tạo một tệp docker-compose.yml trong thư mục homelab của bạn. Cấu hình này sử dụng một điểm gắn kết (mount point) /data duy nhất để cho phép quản lý tệp cực nhanh.

services:
  prowlarr:
    image: lscr.io/linuxserver/prowlarr:latest
    container_name: prowlarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/prowlarr:/config
    ports:
      - 9696:9696
    restart: unless-stopped

  radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/radarr:/config
      - ./data:/data
    ports:
      - 7878:7878
    restart: unless-stopped

  sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
    volumes:
      - ./config/sonarr:/config
      - ./data:/data
    ports:
      - 8989:8989
    restart: unless-stopped

  qbittorrent:
    image: lscr.io/linuxserver/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/New_York
      - WEBUI_PORT=8080
    volumes:
      - ./config/qbittorrent:/config
      - ./data:/data
    ports:
      - 8080:8080
    restart: unless-stopped

Chạy lệnh docker-compose up -d. Chỉ trong vài giây, bạn sẽ có một hệ thống xử lý media (media pipeline) cấp độ chuyên nghiệp chạy trên mạng nội bộ của mình.

Phân tích sâu: Tại sao ‘Arr’ Stack lại quan trọng

Sau khi xây dựng hàng chục hệ thống như thế này, tôi nhận ra rằng điều kỳ diệu không chỉ nằm ở việc tải xuống. Đó là sự chuyển đổi từ mớ hỗn độn thủ công sang một quy trình tự động hóa chuyên nghiệp. Mỗi ứng dụng có một nhiệm vụ cụ thể. Khi chúng giao tiếp với nhau một cách chính xác, HomeLab của bạn sẽ trở thành một thư viện có khả năng tự vận hành.

Prowlarr: Trung tâm điều phối

Hãy coi Prowlarr như chất keo kết nối. Thay vì thêm các indexer yêu thích vào Sonarr và Radarr một cách riêng lẻ, bạn chỉ cần thêm chúng một lần tại đây. Nó sẽ tự động đồng bộ hóa các cài đặt đó ở mọi nơi. Nếu một tracker thay đổi URL, bạn chỉ cần cập nhật tại một nơi và toàn bộ hệ thống vẫn duy trì kết nối.

Sonarr & Radarr: Những quản thủ thư viện số

Sonarr quản lý các phim bộ (TV series), trong khi Radarr xử lý phim lẻ (movies). Đây không chỉ là những trình tải xuống đơn thuần; chúng là những trình quản lý cơ sở dữ liệu tinh vi. Chúng giám sát thư viện cục bộ của bạn 24/7. Chúng xác định các tập phim còn thiếu và tìm kiếm các bản phát hành có chất lượng tốt nhất—như 1080p BluRay hoặc 4K HEVC—dựa trên các quy tắc cụ thể của bạn.

Bí mật của ‘Atomic Move’

Người mới bắt đầu thường gắn (mount) các volume riêng biệt như /downloads/movies. Đây là một sai lầm lớn. Khi Docker coi đây là các hệ thống tệp khác nhau, nó phải sao chép dữ liệu vật lý. Quá trình này rất chậm và làm giảm tuổi thọ của ổ SSD.

Bằng cách sử dụng một volume /data duy nhất, hệ thống sẽ thực hiện ‘Atomic Move’ (di chuyển tức thời). Một bộ phim 4K dung lượng 60GB sẽ xuất hiện trong thư viện của bạn chỉ trong vài mili giây. Không có dữ liệu thực tế nào được di chuyển trên đĩa vật lý. Điều này cho phép bạn tiếp tục seeding tệp gốc trong khi phiên bản đã đổi tên nằm gọn gàng trong thư mục media của bạn.

Tinh chỉnh nâng cao: Chất lượng và Định dạng tùy chỉnh

Khi việc đồng bộ hóa cơ bản đã hoạt động, đã đến lúc cần khắt khe hơn. Bạn không chỉ muốn bất kỳ tệp 1080p nào. Bạn có khả năng sẽ muốn các nhóm phát hành (release groups) cụ thể hoặc các codec như H.265 để tiết kiệm tới 40% dung lượng đĩa.

Nhập cấu hình từ Trash Guides

Để có kết quả tốt nhất, hãy tìm hiểu về ‘Trash Guides’. Các cấu hình do cộng đồng tuyển chọn này đảm bảo hệ thống của bạn ưu tiên các bản phát hành có bitrate cao (ví dụ: >20 Mbps) và bỏ qua các bản ‘CAM’ quay trộm trong rạp. Bạn có thể nhập trực tiếp các cấu hình JSON này vào Radarr để tự động hóa trải nghiệm của một ‘tín đồ chất lượng’.

Vượt rào cản với FlareSolverr

Một số tracker công khai sử dụng Cloudflare để chặn bot tự động. Nếu Prowlarr không thể kết nối với một số trang web nhất định, hãy thêm container FlareSolverr. Nó hoạt động như một proxy giúp tự động giải quyết các thử thách ‘I am human’ (Tôi là con người) một cách tự động.

  flaresolverr:
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    environment:
      - LOG_LEVEL=info
    ports:
      - 8191:8191
    restart: unless-stopped

Những bài học xương máu từ thực tế

Tôi đã vận hành stack này trong nhiều năm. Ba thói quen sau đây sẽ giúp bạn tránh khỏi việc phải xây dựng lại toàn bộ hệ thống khi xảy ra mất điện hoặc lỗi phần cứng.

  • Sử dụng tên Container: Đừng bao giờ sử dụng localhost trong phần cài đặt. Hãy sử dụng tên dịch vụ Docker (ví dụ: http://qbittorrent:8080). Điều này đảm bảo các ứng dụng có thể tìm thấy nhau ngay cả khi địa chỉ IP nội bộ của chúng thay đổi.
  • Bảo vệ quyền riêng tư: Nếu bạn sử dụng torrent, hãy định tuyến client tải xuống của bạn qua một VPN. Một container như gluetun có thể hoạt động như một cổng bảo mật (secure gateway) cho lưu lượng truy cập qBittorrent của bạn.
  • Theo dõi dung lượng lưu trữ: Radarr làm việc rất hiệu quả—đôi khi là quá mức. Nó có thể dễ dàng làm đầy ổ cứng 10TB chỉ trong một kỳ nghỉ cuối tuần nếu bạn đăng ký danh sách ‘Trending’. Hãy thiết lập Discord webhooks hoặc thông báo qua Apprise để nhận cảnh báo khi dung lượng đĩa đạt mức 90%.

Thiết lập stack này là một dự án nền tảng cho bất kỳ ai đam mê máy chủ tại gia (home server). Nó minh chứng hoàn hảo lý do tại sao container hóa lại mạnh mẽ đến vậy. Một khi hệ thống tự động hóa bắt đầu vận hành, bạn sẽ không bao giờ muốn tìm kiếm tệp thủ công một lần nữa.

Share: