Chuyên mục
Docker

Cài đặt Arr suite (Sonarr, Radarr, Prowlarr, Bazarr) tự động hóa thư viện phim ảnh

Trong hướng dẫn bên dưới, mình sẽ cài đặt trọn bộ ăn chơi Arr suite (Sonarr, Radarr, Prowlarr, Bazarr) trên XPEnology. Tất cả ứng dụng được thiết lập thông qua Docker nên bạn có thể áp dụng được trên bất kỳ hệ điều hành nào khác hỗ trợ Docker.

I. Chuẩn bị hệ thống

1. Cài đặt Docker

Tham khảo hướng dẫn cài đặt Docker lên Synology / XPEnology ở đây

Cài đặt Docker lên DSM 7.2 (Synology / Xpenlogy)

Bạn nào xài Ubuntu / Debian thì tham khảo cái này

Hướng dẫn cài đặt Docker, Docker Compose trên Linux (Ubuntu / Arch / Debian …)

2. Kích hoạt tính năng SSH

Bạn cần mở tính năng SSH Service trên Synology để có thể truy cập vào bằng SSH để thao tác bằng dòng lệnh.

Đăng nhập vào giao diện web của DSM, truy cập vào phần Control Panel > Terminal & SNMP > Enable SSH service. Tích chọn vào mục Enable SSH service và bấm Apply.

Sau đó dùng Terminal / Putty để đăng nhập SSH vào Synology / XPEnology.

3. Tìm uid, gid

Xác định uid, gid của tài khoản đang dùng bằng lệnh id

Kết quả sẽ trả về bên dưới:

uid=1026(thuanbui) gid=100(users) groups=100(users),101(administrators),65536(docker)

uid=1026gid=100. Mình sẽ dùng các thông số này để cài đặt các ứng dụng ở các bước sau.

4. Tạo hệ thống thư mục

Để trọn bộ arr suites hoạt động trơn tru, chúng ta cần phải tạo hệ thống thư mục tiêu chuẩn như bên dưới. Trong đó thư mục media sẽ là nơi lưu trữ phim / tv shows / nhạc còn thư mục torrents sẽ là nơi để tải file.

├── media
│   ├── movies
│   ├── music
│   └── tv
└── torrents
    ├── movies
    ├── music
    └── tv

Truy cập vào thư mục lưu trữ trên Synology vào tạo thêm các thư mục cần thiết. Ví dụ mình sẽ lưu tất cả trên ổ cứng gắn ngoài volumeUSB3, tạo thư mục bằng lệnh sau

mkdir -p /volumeUSB3/usbshare/{torrents/{tv,movies,music},media/{tv,movies,music}}

5. Tạo Docker network

Mình tạo sẵn 1 Docker network với tên gọi arr để kết nối tất cả các docker container liên quan vào cùng network này.

docker network create arr

II. Cài đặt Torrent client

Mình cài đặt qBittorrent + Flood theo hướng dẫn đã chia sẻ ở đây.

https://blntech.asia/?p=1773

1. Cập nhật thông số

Sau khi cài thành công, cần phải sửa lại file compose.yml đôi chút ở phần khải báo environment, volumes và networks để có thể kết nối với ứng dụng arr suites.

  • PUID=1026 thay 1026 thành số uid đã được tìm thấy ở bước I.3
  • PGID=1000 thay 1000 thành số gid đã được tìm thấy ở bước I.3
  • thay /volumeUSB3/usbshare thành đường dẫn thư mục bạn sử dụng ở bước I.4

File compose.yml sau khi cập nhật sẽ như bên dưới

services:
  qbittorrent:
    container_name: qbittorrent
    image: ghcr.io/hotio/qbittorrent
    ports:
      - 8090:8090
    environment:
      - PUID=1026
      - PGID=1000
      - UMASK=002
      - WEBUI_PORTS=8090/tcp,8090/udp
    volumes:
      - ./config:/config
      - /volumeUSB3/usbshare:/data
  flood:
    image: jesec/flood:latest
    container_name: flood
    restart: always
    depends_on:
      - qbittorrent
    volumes:
      - ./flood_config:/config
      - /volumeUSB3/usbshare:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 3000:3000
    command:
      - --auth=none
      - --qburl=http://qbittorrent:8090
      - --qbuser=admin
      - --qbpass=123456
networks:
  default:
    name: arr
    external: true

sau đó cho kích hoạt lại ứng dụng

3. Cập nhật thư mục lưu trữ

Truy cập vào Floor ở địa chỉ http://:3000, vào phần Setting > Resources và cập nhật lại thư mục Default Download Directory thành /data/torrents

III. Cài đặt Arr Suite

1. Tạo thư mục

Do Docker trên Synology không tự động tạo các thư mục khi kích hoạt Docker nên mình cần tạo sẵn các thư mục cần thiết cho Arr suite.

mkdir -p /volume1/docker/servarr/{radarr,sonarr,bazarr,plex,prowlarr}

2. Tạo file compose.yml và .env

Truy cập vào thư mục servarr

cd /volume1/docker/servarr/

và tạo file compose.yml với nội dung sau

version: "3.2"
services:
  # Radarr - https://hotio.dev/containers/radarr/
  # mkdir /volume1/docker/servarr/radarr
  radarr:
    container_name: radarr
    image: ghcr.io/hotio/radarr:latest
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-file: ${DOCKERLOGGING_MAXFILE}
        max-size: ${DOCKERLOGGING_MAXSIZE}
    ports:
      - 7878:7878
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ${DOCKERCONFDIR}/radarr:/config
      - ${DOCKERSTORAGEDIR}:/data

   # Sonarr - https://hotio.dev/containers/sonarr/
   # mkdir /volume1/docker/servarr/sonarr
  sonarr:
    container_name: sonarr
    image: ghcr.io/hotio/sonarr:release
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-file: ${DOCKERLOGGING_MAXFILE}
        max-size: ${DOCKERLOGGING_MAXSIZE}
    ports:
      - 8989:8989
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ${DOCKERCONFDIR}/sonarr:/config
      - ${DOCKERSTORAGEDIR}:/data

  # Bazarr - https://hotio.dev/containers/bazarr/
  # mkdir /volume1/docker/servarr/bazarr
  bazarr:
    container_name: bazarr
    image: ghcr.io/hotio/bazarr
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-file: ${DOCKERLOGGING_MAXFILE}
        max-size: ${DOCKERLOGGING_MAXSIZE}
    ports:
      - 6767:6767
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - ${DOCKERCONFDIR}/bazarr:/config
      - ${DOCKERSTORAGEDIR}/media:/data/media

  # Prowlarr - https://hotio.dev/containers/prowlarr/
  prowlarr:
    container_name: prowlarr
    image: hotio/prowlarr
    restart: unless-stopped
    logging:
      driver: json-file
      options:
        max-file: ${DOCKERLOGGING_MAXFILE}
        max-size: ${DOCKERLOGGING_MAXSIZE}
    ports:
      - 9696:9696
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=002
      - ARGS=
    volumes:
      - ${DOCKERCONFDIR}/prowlarr:/config:rw

networks:
  default:
    name: arr
    external: true

Tạo thêm file .env

COMPOSE_PROJECT_NAME=servarr
DOCKERCONFDIR=/volume1/docker/servarr
DOCKERSTORAGEDIR=/volumeUSB3/usbshare
PUID=1026
PGID=100
TZ=Asia/Ho_Chi_Minh
DOCKERLOGGING_MAXFILE=10
DOCKERLOGGING_MAXSIZE=200k

Bạn cần thay đổi các thông số DOCKERSTORAGEDIR, PUID, PGID, TZ cho tương ứng với hệ thống của mình.

Bộ Arr suite này bao gồm 4 ứng dụng

- Radarr (Quản lý phim lẻ)
- Sonarr (Quản lý phim bộ)
- Bazarr (Quản lý phụ đề)
- Prowlarr (Quản lý indexer/tracker)

Ngoài các ứng dụng này ra, còn có thêm Whisparr, Tidarr, Readarr phục vụ các món ăn chơi khác. Bạn nào quan tâm có thể nghiên cứu thêm.

3. Cấu hình quyền truy cập

Trước khi kích hoạt, mình cần thiết lập quyền truy cập cho các thư mục đã tạo để tránh bị lỗi permission denied. Nhớ thay thế /volumeUSB3/usbshare bằng đường dẫn thư mục của bạn và thuanbui:users thành tên user:group tương ứng.

sudo chown -R thuanbui:users /volumeUSB3/usbshare /volume1/docker
sudo chmod -R a=,a+rX,u+w,g+w /volumeUSB3/usbshare /volume1/docker

4. Kích hoạt Arr suite

Kích hoạt Arr suite

docker-compose up -d

IV. Cấu hình Radarr

Radarr là ứng dụng quản lý phim lẻ trong bộ Arr suite. Mình chỉ hướng dẫn cách cách cấu hình Radarr, bên Sonarr thao tác gần như y hệt nhé.

Truy cập vào Radarr ở địa chỉ http://:7878

1. Cấu hình đăng nhập

Ở lần truy cập đầu tiên, Radarr sẽ yêu cầu cấu hình bảo mật. Mình chọn cách đăng nhập bằng Login Page sau đó bấm Save.

Sau khi đăng nhập, hệ thống sẽ báo lỗi chưa có Indexer, chưa có trình tải file (download client) như hình bên dưới

2. Cấu hình Download Clients

Truy cập vào phần Settings > Download Clients, bấm vào dấu + để thêm mới

Mình chọn Flood vì thích quản lý torren với nó

Do các container đều kết nối chung với Docker network arr nên có thể truy cập trực tiếp bằng tên của service. Phần Host nhập flood, Port: 3000. Sau đó bấm Test để kiểm tra thử kết nối. OK thì bấm Save

3. Cấu hình Root Folders

Truy cập vào mục Setings > Media Management, kéo xuống dưới cùng, bấm Add Root Folder và thêm vào thư mục /data/meda/movies

V. Cấu hình Prowlarr

Prowlarr đóng vai trò làm người trung gian, chuyển các yêu cầu tìm kiếm từ Radarr / Sonarr lên các Tracker để tìm kiếm thông tin, sau đó trả về kết quả về ngược lại các ứng dụng này.

Đăng nhập vào Prowlarr theo đường dẫn http:\\<IP>:9696, rồi cấu hình đăng nhập y hệt như bước đã làm cho Radarr

1. Thêm Inderxers

Indexers có thể hiểu là các trang tìm kiếm như Google / Bing, nó sẽ trả về kết quả là các đường dẫn / file torrent để tải dữ liệu

Truy cập vào mục Inderxers, bấm Add Indexers để thêm Indexer. Phần này hơi nhảy nhạy cảm, mọi người vui lòng tự mò.

2. Kết nối với Radarr / Sonarr

Truy cập vào Settings > Apps, bấm vào dấu + để thêm kết nối

Chọn ứng dụng tương ứng. Mình chọn Radarr

Quay lại Radarr, truy cập vào mục Settings > General và kéo đến mục API Key để copy sẵn key này.

Nhập vào các thông tin sau

  • Prowlarr Server: https://prowlarr:9696
  • Radarr Server: http://radarr:7878
  • API Key: Nhập vào API Key vừa mới lấy bên Radarr

Bấm Test để kiểm tra kết nối và sau đó Save.

Nếu kết nối thành công, quay lại vào mục Indexers của Radarr, bạn sẽ thấy nó tự thêm vào 1 mục mới như bên dưới

VI. Quản lý phim trên Radarr

1. Thêm phim mới

Vào mục Add New trên Radarr để tìm tên phim, ví dụ Oppenheimer

Bấm vào tên phim, thiết lập các thông số cần thiết rồi bấm Add Movie.

Radarr sẽ tự động tải các thôgn tin liên quan đến phim từ các cơ sở dữ liệu trên mạng.

2. Tải phim

Bạn có thểm bấm vào nút Interactive Search để tìm link tải phim

Chờ 1-2 phút, kết quả sẽ trả về danh sách file có thể tải. Danh sách này sẽ tùy thuộc vào Inderxers bạn đã cầu hình bên Prowlarr. Bấm vào nút Download để tải về máy.

Nếu hệ thống hoạt động thông suốt, Radarr sẽ tự động gửi yêu cầu qua Flood để tải phim. Sau khi tải xong, nó sẽ tự động tạo hardlink cho phim vừa tải và lưu vào thư mục /data/media/movies/<tên phim>


Bên Sonarr, Whisparr, Readarr, Lidarr thao tác gần như tương tự như Radarr nên mình không cần hướng dẫn nhé

Nguồn tham khảo: https://trash-guides.info/Hardlinks/How-to-setup-for/Synology/, https://wiki.servarr.com/

Nguồn: thuanbui