跳至正文

在群晖NAS上搭建全自动电影下载系统

花了两天时间,终于在群晖NAS上把一整套电影自动下载系统跑通了。从搜索、下载、整理到电视播放,全程自动化。记录一下整个过程,也给有类似需求的朋友参考。

最终效果

在手机或电脑上打开 Jellyseerr(一个类似豆瓣电影的应用),搜索想看的电影,点一下”请求”。系统会自动:

  1. 在资源站搜索高清种子
  2. 推送到下载工具开始下载
  3. 下载完成后自动整理到媒体库
  4. 媒体服务器自动扫描入库
  5. 小米电视上打开 Jellyfin 就能直接看

全程零人工干预,从请求到能看大概只需要等下载完成的时间。

系统架构

整个系统由 6 个 Docker 容器组成,跑在群晖 DS420+ 上:

Jellyseerr(5055) → Radarr(7878)/Sonarr(8989) → qBittorrent(8090) → 下载
                                                              ↓
Prowlarr(9696) 管理 Indexer                          Jellyfin(8096) → 电视播放

简单解释一下各自的角色:

  • Jellyseerr:入口,像豆瓣电影一样的界面,负责搜索电影/电视剧、发请求
  • Radarr:电影管理器,负责搜索电影资源、管理已下载的电影
  • Sonarr:电视剧管理器,功能和 Radarr 类似,但管的是电视剧
  • Prowlarr:资源索引管理器,统一管理各种种子站的接口,同步给 Radarr/Sonarr
  • qBittorrent:BT 下载客户端,负责实际下载
  • Jellyfin:媒体服务器,像 Netflix 一样的界面,管理所有电影/电视剧,支持各种客户端

硬件环境

  • NAS:群晖 DS420+,Intel Celeron J4025 双核,10GB 内存
  • 存储:两块硬盘,Volume 1 放媒体文件,Volume 2 跑 Docker 服务
  • 播放设备:小米电视(安装 Jellyfin for Android TV)

搭建步骤

第一步:Docker Compose 部署

所有服务用一个 docker-compose.yaml 管理最省心。关键配置点:

  • 所有容器放在同一个 Docker 网络(media-server_default),这样容器之间可以用名字互相访问
  • 统一挂载 /volume1/docker/media-server/media 到各容器的 /media 目录
  • 设置 PUID/PGID 匹配 NAS 用户(我用的是 1026/100)

第二步:配置 qBittorrent

坑点来了:qBittorrent 默认每次容器重启都会生成随机临时密码,导致 WebUI 登不上。解决方法是用 API 先登录临时密码,再设一个固定密码。

另外要创建下载分类(movies、tv),每个分类指定保存路径,这样 Radarr/Sonarr 下载的东西才能自动归类。

第三步:配置 Prowlarr + Indexer

Prowlarr 是资源站的管理中心。目前配了 YTS(一个公开的 HD 电影种子站,资源质量不错,体积也小)。

配好 Prowlarr 之后,需要把它作为应用同步到 Radarr 和 Sonarr,这样 Radarr/Sonarr 就能通过 Prowlarr 的接口去搜索资源了。

第四步:配置 Radarr 和 Sonarr

Radarr/Sonarr 分别管理电影和电视剧。主要配置:

  • 连接 qBittorrent 作为下载客户端
  • 设置质量配置(我选了 HD 720p/1080p)
  • 设置根目录(电影 /media/movies,电视剧 /media/tv)

配置好之后,Indexer 会自动从 Prowlarr 同步过来。

第五步:配置 Jellyseerr

Jellyseerr 是整个系统的门面。它连接 Radarr(电影)和 Sonarr(电视剧),还连接 Jellyfin(媒体库展示)。

这里有个坑:TMDB(电影数据库)在国内被墙了,Jellyseerr 搜索不了电影。解决方案是在云服务器上用 Nginx 做反向代理,把 TMDB 的 API 和图片 CDN 反代到自己的域名下。

第六步:配置 Jellyfin

Jellyfin 是最终播放端。需要创建媒体库,指向 Radarr 和 qBittorrent 下载文件保存的目录。元数据语言设为中文。

小米电视上安装 Jellyfin for Android TV(到 GitHub 下载 APK,U 盘安装),填上 NAS 地址就能用了。

踩过的坑

1. SSH 写文件被转义

写 docker-compose.yaml 时,YAML 里的 $ 符号会被 shell 当变量解释,导致文件内容被破坏。最后改用 Python3 脚本来写文件才解决了。

2. Docker 网络互通

Docker 默认的 bridge 网络不支持容器名互相访问。必须在 docker-compose 里定义自定义网络,所有服务加入同一个网络才能用容器名互通。

3. Jellyseerr 配置不持久化

通过 API 配置的 Radarr/Sonarr 连接,容器重启后会丢失。需要通过正确的 API 路径重新配置。

4. qBittorrent 密码重置

每次容器重启密码都变,必须用 API 设固定密码。这件事我只做了一次就忘了,下次重启又得来一遍。建议在 docker-compose 里设置环境变量。

5. TMDB 被墙

Jellyseerr 依赖 TMDB 来搜索和展示电影信息,但国内直连不通。好在有云服务器,Nginx 反代一下就搞定了。

最终体验

现在整个流程是:打开手机 → 搜索电影 → 点请求 → 等下载 → 电视上看。中间完全不用管。

下载速度取决于种子和带宽,YTS 的资源一般在 1-2MB/s,一部 1080p 电影大约 2-3GB,二十来分钟就下完了。下完自动入库,Jellyfin 自动刷新,电视上立即就能看到。

整个过程最难的不是技术,而是把六七个软件的配置串起来。每个软件的文档都是英文的,API 也不太直观。但只要搞清楚了数据流向,一步一步配就对了。

下一步打算加更多 Indexer(资源站),让能搜到的电影更多。Prowlarr 支持几百个种子站,很多是公开的不需要注册。等有精力了慢慢加吧。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注