Install Arr suite (Sonarr, Radarr, Prowlarr, Bazarr) to automate your movie library!

November 29, 2024 (2y ago)

0 views

Bữa thấy các bác bên voz cài mà không biết dùng như nào. Nay mò được bài hướng dẫn của thuanbui,

nên muốn viết lại cho cá nhân mình dùng để sau setup lại chỉ việc vào copy.

Đầu tiên phải tìm id, chạy lênh sau:

id

nếu mà không có thì cài coreutils xong đó chạy lại id:

sudo apt update
sudo apt install coreutils
id

chạy xong nó ra như này

uid=1001(cee) gid=1001(cee) groups=1001(cee),100(users),989(docker)

uid=1001 và gid=1001. 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.

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

có thể tạo bằng tay hoặc dùng lệnh sau:

cd /mnt/nvme0n1p1/pnas
mkdir -p ./{torrents/{tv,movies,music},media/{tv,movies,music}}

lệnh trên là mình muốn lưu trữ ở ổ nvme0n1p1 ( nó là ổ cứng ssd gắn ngoài của mình ), các bạn có thể thay đổi đường dẫn tùy ý.

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

Cài đặt docker compose

Trên con PI mình tạo folder docker docker/servarr (/home/cee/docker/servarr) để làm nơi chứa file docker-compose.yml và file .env

(lưu ý đường dẫn này bạn có thể thay đổi của riêng bạn)

file docker-compose.yml

docker-compose.yml
version: "3.2"
services:
  qbittorrent:
    container_name: qbittorrent
    image: ghcr.io/hotio/qbittorrent
    restart: unless-stopped
    ports:
      - 8090:8090
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - UMASK=002
      - WEBUI_PORTS=8090/tcp,8090/udp
    volumes:
      - ${DOCKERCONFDIR}/config:/config
      - ${DOCKERSTORAGEDIR}:/data
  flood:
    image: jesec/flood:latest
    container_name: flood
    restart: always
    depends_on:
      - qbittorrent
    volumes:
      - ${DOCKERCONFDIR}/flood_config:/config
      - ${DOCKERSTORAGEDIR}:/data
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 4000:3000
    command:
      - --auth=none
      - --qburl=http://qbittorrent:8090
      - --qbuser=admin
      - --qbpass=123456
  # 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

và file .env

.env
COMPOSE_PROJECT_NAME=servarr
DOCKERCONFDIR=/home/cee/docker/servarr
DOCKERSTORAGEDIR=/mnt/nvme0n1p1/pnas
PUID=1001
PGID=1001
TZ=Asia/Ho_Chi_Minh
DOCKERLOGGING_MAXFILE=10
DOCKERLOGGING_MAXSIZE=200k

2 file này đều nằm trong thư mục docker/servarr

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  phim lẻ)
- Sonarr (Quản  phim bộ)
- Bazarr (Quản  phụ đề)
- Prowlarr (Quản  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.

bên voz có bác làm như này, có thể tham khảo thêm https://pastebin.com/NhkyeHJW (https://voz.vn/t/xin-huong-dan-tao-sever-plex-tu-a-z.674478/post-28985727)

Chạy docker compose

docker-compose up -d

Cài đặt Torrent client

Như bài post của bác thuanbui thì bác ấy tách riêng ra 1 docker compose, nhưng mình thích gộp chung.

Cái Floot khi chạy nó sẽ yêu cầu đăng nhập account của thằng qbittorrent, mà ở file docker compose của thằng flood mình đã

set sẵn account password cho nó là admin/123456. mà password của thằng qbittorrent được sinh ra ngẫu nhiên.

Nên sau khi chạy docker compose xong mình cần xem password của thằng qbittorrent rồi login vào và đổi mật khẩu

chạy lệnh

docker logs qbittorrent

nó sẽ show ra như sau:

******** Information ********
To control qBittorrent, access the WebUI at: http://localhost:8090
The WebUI administrator username is: admin
The WebUI administrator password was not set. A temporary password is provided for this session: ItRmQy2Ar

Mở trình duyệt, gõ vào địa chỉ IP của server với port 8090 để truy cập WebUI của qBittorrrent.

Đăng nhập bằng tài khoản admin vừa mới lấy ở bước trên. Sau khi đăng nhập thành công vào các bước sau để đổi mk:

To change the password in qBitTorrent:

Log into the qBitTorrent app.

vào Tools → Options .

Click vào tab Web UI.

trong mục Authentication, set password là 123456 (password mình đã set ở file docker compose của flood)

Kéo xuống dưới cùng và click vào Save.

qbittorrent.png

Sau khi đổi mật khẩu xong, bạn có thể vào flood để xem trạng thái của qbittorrent.

gõ vào địa chỉ IP của server với port 4000 để truy cập WebUI để xem trạng thái của flood

Lúc đầu sẽ sẽ báo lỗi Cannot connect to the client.` ở giữa màn hình.

Lỗi này là lỗi xuất hiện khi giao diện web Flood không thể kết nối được với qBittorrent.

Vì lần đầu chạy docker compose thì password set bị sai và sau đó mình đã đổi lại

Nên lúc này cần chạy lại service Flood để nó cập nhật lại password mới.

docker-compose restart flood

nếu không được thì chạy lệnh tạo mới lại flood

docker-compose up -d flood

Note: Docker Compose tự động tạo một mạng nội bộ, trong đó các container có thể giao tiếp qua tên container,

nên có thể để tên container ở cái dòng --qburl=http://qbittorrent:8090

Trường hợp mà sửa mãi nó vẫn lỗi Cannot connect to the client thì bạn có thể xem xét tách riêng docker compose của 2 thằng này ra

Sau khi chạy xong, bạn có thể vào flood (id của bạn:4000) để xem trạng thái của nó, nó sẽ hiển thị No torrents to display. như sau

flood.png

Thế là nó đã connect được đến qbittorrent rồi, giờ vào vào phần Setting > Resources

và cập nhật lại thư mục Default Download Directory thành /data/torrents

Lý do data/torrents là vì mình đã set path ${DOCKERSTORAGEDIR}:/data trong file docker-compose.yml

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

radarr-missing-index.png

để sửa cái này thì bạn cần vào Setting > Download Client bấm vào dấu + để thêm mới

radarr-add-index.png

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

raddar-add-index-flood.png

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

radarr-add-flood.png

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

radarr-add-root-path.png

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

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.

Cái này mình không biết cái nào ngon nữa, nên đang add bừa vài cái như sau:

prowlarr.png

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

prowlarr-add-application.png

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

prowlarr-add-radarr.png

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.

radarr-key.png

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.

prowlarr-add-key.png

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

rardar-index.png

Cấu hình bazarr

Sau khi cài xong Bazarr, bạn cần phải cấu hình nó. Vào ip:6767

Vào tab Radarr để setup key cho thằng bazarr này nó connect tới radarr

bazarr-radarr.png

sau khi bỏ key của thằng rardar vào đây rồi thì ấn nút Test để kiểm tra kết nối, nó hiển thị ra được version của radarr là ok.

xong ấn Save ở trên cùng. Nếu có sonarr thì làm tương tự.

Setup language và provider cho bazarr

bazarr-language-1.png bazarr-language-2.png

Thêm languge vietnamese vào profile

bazarr-language-2.1.png bazarr-language-3.png

Tiếp đó add subtitle provider, đầu tiên vào các trang subtitle để đăng ký tài khoản.

Đăng ký xong vào đây add, trang nào yêu cầu account thì thêm account vào

bazarr-provider.png

Quản lý phim trên Radarr

Thêm phim mới

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

radarr-search.png

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-add-film.png

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

Tải phim

Ấn vào phim, xong nó sẽ ra trang mới, bạn có thểm bấm vào nút Interactive Search để tìm link tải phim

radarr-interactive-search.png

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.

radarr-download.png

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. Radarr cũng tự động gửi yêu cầu đến bazarr để tải phụ đề.

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>

tham khảo copy và chỉnh sửa từ https://thuanbui.me/cai-dat-arr-suite-sonarr-radarr-prowlarr-bazarr/

https://trash-guides.info/Hardlinks/How-to-setup-for/Synology/, https://wiki.servarr.com/