Đừng thêm phim thủ công nữa: Triển khai Jellyseerr trên Docker cho HomeLab của bạn

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

Nỗi lo quản lý thư viện phim thủ công

Quản lý một thư viện phim ngày càng lớn lúc đầu là một sở thích thú vị. Tuy nhiên, nó sẽ nhanh chóng trở thành một gánh nặng khi có thêm nhiều bạn bè và gia đình tham gia vào HomeLab của bạn. Nếu bạn đang chạy Jellyfin, Sonarr và Radarr, bạn chắc hẳn đã quen với việc này: Ai đó nhắn tin yêu cầu một bộ phim cụ thể, bạn đăng nhập vào Radarr, tìm kiếm, chọn cấu hình chất lượng và nhấn tải xuống. Cách này vẫn hoạt động, nhưng quy trình này khá rườm rà và tốn thời gian.

Jellyseerr giải quyết vấn đề này bằng cách đóng vai trò như một giao diện khám phá hiện đại cho các công cụ tự động hóa của bạn. Thay vì nhắn tin cho bạn, người dùng chỉ cần duyệt qua giao diện kiểu Netflix và nhấn ‘Request’. Hệ thống sẽ lo phần còn lại. Kể từ khi chuyển sang thiết lập này, công việc quản trị hàng ngày của tôi đã giảm xuống gần như bằng không. Nó thường sử dụng ít hơn 200MB RAM, là một sự bổ sung nhẹ nhàng cho bất kỳ máy chủ nào.

Tại sao nên chọn Jellyseerr thay vì Overseerr?

Overseerr là một công cụ tuyệt vời, nhưng nó được xây dựng dành riêng cho Plex. Jellyseerr là một bản fork chuyên dụng được tối ưu hóa cho Jellyfin và Emby. Nó tích hợp sâu với thư viện Jellyfin của bạn để biết những gì bạn đã sở hữu. Nó vẫn sử dụng logic mạnh mẽ tương tự cho Radarr và Sonarr, khiến nó trở thành lựa chọn tốt nhất cho những người đam mê mã nguồn mở.

Cài đặt: Triển khai với Docker Compose

Docker là tiêu chuẩn vàng để chạy Jellyseerr. Nó giữ cho hệ điều hành gốc sạch sẽ và việc cập nhật trở nên cực kỳ dễ dàng. Sử dụng Docker Compose cho phép bạn quản lý các thiết lập mạng và lưu trữ trong một tệp duy nhất.

1. Thiết lập các thư mục

Đầu tiên, hãy tạo một nơi lưu trữ dữ liệu cho Jellyseerr. Điều này đảm bảo các cài đặt và cơ sở dữ liệu người dùng của bạn không bị mất khi bạn cập nhật container.

mkdir -p ~/homelab/jellyseerr/config
cd ~/homelab/jellyseerr

2. Cấu hình Docker Compose

Tạo một tệp docker-compose.yml. Chúng ta sẽ sử dụng image chính thức được duy trì bởi FallenBagel. Cấu hình này rất ổn định và sẵn sàng cho nhu cầu sử dụng thực tế.

services:
    jellyseerr:
        image: fallenbagel/jellyseerr:latest
        container_name: jellyseerr
        environment:
            - LOG_LEVEL=debug
            - TZ=Asia/Ho_Chi_Minh # Thay đổi thành múi giờ địa phương của bạn
        ports:
            - 5055:5055
        volumes:
            - ./config:/app/config
        restart: unless-stopped

Hãy chú ý đến cổng 5055. Nếu bạn đã có một dịch vụ khác sử dụng cổng đó, hãy thay đổi số bên trái (ví dụ: 5060:5055). Việc thiết lập biến TZ chính xác sẽ đảm bảo lịch sử yêu cầu hiển thị đúng thời gian thực tế.

3. Khởi chạy

Khởi chạy container ở chế độ chạy ngầm bằng một câu lệnh:

docker compose up -d

Xác nhận mọi thứ đang hoạt động bằng cách kiểm tra trạng thái container:

docker ps | grep jellyseerr

Kết nối các thành phần: Tích hợp

Truy cập vào http://IP_CUA_MAY_CHU:5055 để bắt đầu trình hướng dẫn thiết lập. Mặc dù trình hướng dẫn khá trực quan, các kết nối backend vẫn yêu cầu các chi tiết cụ thể để hoạt động chính xác.

Kết nối máy chủ Jellyfin của bạn

Jellyseerr cần giao tiếp với Jellyfin để biết những gì đã có trong thư viện của bạn. Bạn sẽ cần URL máy chủ và một API key. Hãy tạo một key trong Jellyfin bằng cách truy cập vào Dashboard > API Keys.

  • Server URL: Sử dụng IP nội bộ của máy chủ. Nếu chúng chia sẻ cùng một mạng Docker, bạn có thể sử dụng http://jellyfin:8096.
  • Syncing: Chọn các thư viện muốn giám sát, chẳng hạn như “4K Movies” hoặc “Kids TV.” Điều này ngăn người dùng yêu cầu phim The Batman nếu bạn đã có nó.

Tự động hóa Radarr và Sonarr

Đây là nơi điều kỳ diệu xảy ra. Đi tới Settings > Services để thêm các trình tải xuống của bạn. Đối với Radarr, bạn sẽ cần API key tìm thấy trong mục Settings > General trong giao diện của Radarr.

Khi thêm máy chủ, bạn phải chọn một Quality Profile (như 1080p) và một Root Folder. Tôi khuyên bạn nên tạo một profile “Requests” riêng biệt. Điều này cho phép bạn giới hạn các tệp được yêu cầu ở mức 5GB, ngăn người dùng vô tình làm đầy ổ cứng của bạn với các bản remux 4K dung lượng 80GB.

Kiểm tra toàn bộ quy trình

Sau khi cấu hình xong, Jellyseerr sẽ quét thư viện của bạn. Với một bộ sưu tập khoảng 1.000 phim, việc này thường mất khoảng 5 đến 10 phút. Bây giờ, hãy thử tìm kiếm một bộ phim bạn chưa có và nhấn Request.

Hãy xem quy trình tự động hóa bắt đầu. Jellyseerr gửi lệnh đến Radarr. Radarr tìm torrent hoặc NZB và bắt đầu tải xuống. Khi tệp đã tải xong và Jellyfin quét xong, Jellyseerr sẽ tự động đánh dấu yêu cầu là “Available” (Đã có sẵn).

Khắc phục sự cố và xem Log

Nếu một yêu cầu không xuất hiện trong Radarr, hãy kiểm tra log ngay lập tức. Sử dụng lệnh này để xem lỗi theo thời gian thực:

docker logs -f jellyseerr

Hầu hết các vấn đề bắt nguồn từ việc gõ sai API key hoặc các container không thể giao tiếp với nhau do khác mạng Docker. Đảm bảo tất cả các container media của bạn nằm trên cùng một mạng bridge để có kết quả tốt nhất.

Những bước hoàn thiện chuyên nghiệp

Đừng quên thiết lập thông báo. Trong mục Settings > Notifications, bạn có thể kết nối Discord Webhook. Bạn sẽ nhận được thông báo khi một người bạn yêu cầu một bộ phim và một thông báo khác khi phim đã sẵn sàng để xem. Điều này làm cho HomeLab của bạn mang lại cảm giác như một dịch vụ streaming riêng tư cao cấp thay vì một dự án tự làm đơn thuần.

Share: