这次我们来看一套跑在飞牛 fnOS 上的全自动追剧观影方案。不是单装一个播放器,而是把“订阅 -> 下载 -> 整理 -> 刮削 -> 播放”整条链路用 Docker 串起来:你只要维护一个订阅列表,剩下的交给 NAS 自动完成。上一期聊的是飞牛 Docker 的基础玩法,这一期直接进入实用组合拳,重点解决“剧集更新没人提醒、下载完文件名乱、播放器海报墙空荡荡”这三个 NAS 影音玩家的高频痛点。
整套方案的核心组件是 Sonarr(剧集管理)+ Radarr(电影管理)+ qBittorrent(下载器)+ Jackett(索引器)+ Jellyfin(媒体服务器)。它们各自是独立容器,通过 Docker 网络互相通信,最终在 Jellyfin 里形成自动更新的海报墙。这套组合在群晖、威联通、绿联、飞牛上都能跑,本文以飞牛 fnOS 为例,因为它的 Docker 管理器自带 Compose 支持,部署最省事。
先给结论:这套方案对硬件要求不高,x86 架构的 NAS 都能带得动。Jellyfin 转码建议 Intel 核显(Quick Sync),但如果你的播放设备支持直接解码,纯下载和整理场景下 2 核 CPU + 4G 内存就够用。部署完成后你只需要做两件事:在 Sonarr/Radarr 里添加订阅,然后打开 Jellyfin 看片。下面从架构设计开始,逐步带你把这套系统搭起来。
1. 核心能力速览
先看这套方案整体能力,方便你判断要不要继续往下读。
| 能力项 | 说明 |
|---|---|
| 方案类型 | NAS 全自动追剧 + 媒体库管理 + 多端播放 |
| 适用系统 | 飞牛 fnOS(Docker + Compose),群晖/威联通/绿联可平滑迁移 |
| 核心组件 | Sonarr、Radarr、Jackett、qBittorrent、Jellyfin |
| 硬件要求 | x86 架构 NAS,2 核 CPU + 4G 内存起步;Jellyfin 转码建议 Intel 核显 |
| 磁盘要求 | 建议至少 2T 空间;下载盘和媒体库可分目录或分盘 |
| 启动方式 | Docker Compose 一键创建全部容器 |
| 接口能力 | Sonarr/Radarr 提供 REST API,可对接第三方 App 或自动化脚本 |
| 批量任务 | 支持剧集/电影批量订阅,下载完成后自动整理入库 |
| 自动刮削 | Sonarr 自动重命名,Jellyfin 自动抓取海报、简介、演员信息 |
| 适合场景 | 追美剧/日剧更新、电影收藏整理、家庭媒体库建设 |
这套方案的核心逻辑是:Jackett 负责对接各类资源索引站,Sonarr/Radarr 根据订阅自动搜索并推送下载任务给 qBittorrent,下载完成后 Sonarr/Radarr 自动整理文件并重命名,最后 Jellyfin 扫描入库完成海报墙展示。
2. 适用场景与使用边界
这套方案最适合这几类用户:
- 追剧党:美剧、日剧、韩剧按季订阅,更新集数自动下载,不用每天手动刷站点。
- 电影收藏控:想按 IMDB/TMDB 标准整理本地电影库,自动抓取封面、简介、评分。
- 家庭媒体库建设者:希望全家人在电视、手机、平板上通过 Jellyfin 直接看 NAS 里的内容。
- NAS 折腾玩家:已经装了飞牛 fnOS,想试试 Docker 组合拳,理解服务间通信和自动化流程。
不适合的场景:
- 不看剧、不整理媒体文件,只想要一个能播本地视频的工具,那直接装飞牛自带影视即可。
- 不懂 Docker 也不想维护,想要“装完就不管”的体验,这套方案需要偶尔处理索引失效、下载失败等运维问题。
合规与版权边界,这里必须明确提醒:这套方案本身是媒体自动化管理工具链,不包含任何盗版资源,也不内置任何侵权内容。请确保你订阅和下载的内容拥有合法授权,包括但不限于公开版权内容、已购买的数字内容备份、创作者授权分发的素材等。不要使用它批量抓取未授权内容,也不要将刮削后的媒体库对外公开分享。家庭私有媒体库的使用边界是“自用”,超出这个范围会有法律风险。
涉及下载器的使用,同样需要遵守当地法律法规和网络服务条款。本文出现的所有容器均为开源软件,用途是搭建个人媒体管理流程,请勿用于任何侵权场景。
3. 环境准备与前置条件
3.1 飞牛 fnOS 环境检查
在你开始部署之前,先确认 NAS 满足以下条件:
| 检查项 | 要求 | 说明 |
|---|---|---|
| 系统版本 | 飞牛 fnOS 0.8.x 或更新版本 | 需要自带 Docker 管理器 |
| 架构 | x86_64 | ARM 设备需单独确认镜像兼容性 |
| 内存 | 4G 起步,8G 更稳 | 5 个容器同时运行,内存占用较高 |
| 存储 | 建议 SSD 做系统盘 + 机械盘做存储盘 | 下载缓存建议放在机械盘 |
| 网络 | 能正常访问 Docker Hub | 拉取镜像需要网络通畅;国内网络慢时可配置镜像加速 |
| 端口 | 7880/7881/7878/8989/8096 等端口空闲 | 如果被占用,Compose 里可自行调整 |
3.2 目录规划
这是整套方案里最重要的一步。目录规划不清晰,后面文件整理就是一团乱麻。推荐按“下载暂存区”和“媒体库”分开的方式:
/vol1/1000/media/ ├── downloads/ │ ├── tv/ # 剧集下载暂存区 │ └── movies/ # 电影下载暂存区 ├── library/ │ ├── tv/ # 剧集最终入库目录 │ └── movies/ # 电影最终入库目录 └── docker/ ├── sonarr/ # Sonarr 配置目录 ├── radarr/ # Radarr 配置目录 ├── jackett/ # Jackett 配置目录 ├── qbittorrent/ # qBittorrent 配置目录 └── jellyfin/ # Jellyfin 配置目录飞牛 fnOS 的存储卷一般挂在/vol1/1000下,具体路径以你在“文件管理”里看到的位置为准。先在文件管理里把上述目录建好,建议使用英文路径,避免中文路径在某些容器里出现编码问题。
3.3 确认 Docker Compose 支持
飞牛 fnOS 的 Docker 管理器已经内置了 Compose 功能。你在 Docker 应用里找到“项目”或“Compose”入口即可。如果找不到,也可以通过 SSH 连接 NAS,使用命令行直接执行docker compose up -d。下面会给出完整 Compose 文件,两种方式都能用。
4. 安装部署与启动方式
4.1 编写 docker-compose.yml
在/vol1/1000/media/docker/下创建docker-compose.yml文件,内容如下。我加了详细注释,便于你理解每个服务的用途和端口映射。
version: "3.8" services: # ---- 索引器:对接资源站点,提供统一搜索 API ---- jackett: image: linuxserver/jackett:latest container_name: jackett environment: - PUID=1000 # 飞牛 fnOS 默认用户 UID,可用 id 命令查看 - PGID=1000 - TZ=Asia/Shanghai volumes: - /vol1/1000/media/docker/jackett:/config - /vol1/1000/media/downloads:/downloads ports: - "9117:9117" # Jackett WebUI 端口 restart: unless-stopped # ---- 下载器:负责实际下载任务 ---- qbittorrent: image: linuxserver/qbittorrent:latest container_name: qbittorrent environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai - WEBUI_PORT=8081 volumes: - /vol1/1000/media/docker/qbittorrent:/config - /vol1/1000/media/downloads:/downloads ports: - "8081:8081" # qBittorrent WebUI - "6881:6881" # BT 下载端口 - "6881:6881/udp" restart: unless-stopped # ---- 剧集自动订阅管理 ---- sonarr: image: linuxserver/sonarr:latest container_name: sonarr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - /vol1/1000/media/docker/sonarr:/config - /vol1/1000/media/downloads:/downloads - /vol1/1000/media/library/tv:/tv # 剧集媒体库 ports: - "8989:8989" # Sonarr WebUI restart: unless-stopped # ---- 电影自动订阅管理 ---- radarr: image: linuxserver/radarr:latest container_name: radarr environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - /vol1/1000/media/docker/radarr:/config - /vol1/1000/media/downloads:/downloads - /vol1/1000/media/library/movies:/movies # 电影媒体库 ports: - "7878:7878" # Radarr WebUI restart: unless-stopped # ---- 媒体服务器:刮削 + 海报墙 + 多端播放 ---- jellyfin: image: lscr.io/linuxserver/jellyfin:latest container_name: jellyfin environment: - PUID=1000 - PGID=1000 - TZ=Asia/Shanghai volumes: - /vol1/1000/media/docker/jellyfin:/config - /vol1/1000/media/library/tv:/data/tv - /vol1/1000/media/library/movies:/data/movies ports: - "8096:8096" # Jellyfin WebUI restart: unless-stopped将PUID和PGID换成你 NAS 实际用户的值,在 SSH 执行id就能看到,默认一般是 1000。如果飞牛 fnOS 的 WebUI 创建用户时有不同设定,以实际为准。
4.2 启动容器
如果你在飞牛 WebUI 的 Docker 项目里操作,选择“添加项目”,把上面的 Compose 内容粘贴进去即可。如果使用命令行,SSH 到 NAS 后在docker-compose.yml所在目录执行:
cd /vol1/1000/media/docker docker compose up -d第一次拉取 5 个镜像需要一点时间,镜像大小加起来大约 2-3 GB。启动完成后执行:
docker ps看到 5 个容器状态都是Up,部署就算成功了。
4.3 访问各服务 WebUI
| 服务 | 地址 | 默认端口 |
|---|---|---|
| Jackett | http://NAS_IP:9117 | 9117 |
| qBittorrent | http://NAS_IP:8081 | 8081 |
| Sonarr | http://NAS_IP:8989 | 8989 |
| Radarr | http://NAS_IP:7878 | 7878 |
| Jellyfin | http://NAS_IP:8096 | 8096 |
首次访问 qBittorrent 时,默认用户名admin,密码在容器日志里,执行docker logs qbittorrent可以在日志末尾看到临时密码,登录后记得修改。
5. 功能配置与联动设置
容器全部启动只是第一步,真正让这套系统“全自动”运转,需要完成服务间的配置联动。
5.1 Jackett 配置索引器
打开 Jackett WebUI,点击 “Add Indexer” 添加你需要的资源索引站。这里需要注意:索引站的可访问性会直接影响 Sonarr/Radarr 的搜索结果,建议挑选你本地网络能正常访问的站点添加。
配置完成后,Jackett 会给每个索引器生成一个独立的 API Key 和 Torrent 搜索链接。在 Sonarr/Radarr 里添加索引器时会用到这个链接,格式一般是:
http://NAS_IP:9117/api/v2.0/indexers/站点名/results/torznab/因为两个容器都映射到了宿主机网络,Sonarr 里可以直接填http://192.168.1.100:9117这样的地址(改成你实际的 NAS IP),不需要填容器内部 IP。
5.2 qBittorrent 配置下载路径
打开 qBittorrent WebUI,进入 “设置 -> 下载”,把“保存管理”中的默认保存路径设置为/downloads。实际下载的子目录由 Sonarr/Radarr 自动创建。
建议做一个关键设置:勾选“Torrent 完成时运行外部程序”,并填入 Sonarr/Radarr 的 API 通知地址。不过更推荐直接用后面的连接配置方式,Sonarr/Radarr 会主动轮询下载器状态。
5.3 Sonarr 连接 qBittorrent
打开 Sonarr WebUI,进入 “设置 -> 下载客户端”,点击“添加”,类型选qBittorrent,填写:
| 字段 | 值 |
|---|---|
| 主机 | NAS_IP |
| 端口 | 8081 |
| 用户名 | admin |
| 密码 | 你修改后的密码 |
| 类别 | tv-sonarr |
点击“测试”,显示连接成功即可。Radarr 的操作完全一致,只是类别建议填movies-radarr。
5.4 Sonarr 配置根目录和媒体库
在 Sonarr 的 “设置 -> 媒体管理” 中,把根文件夹设为/tv,重命名规则保持默认即可。Sonarr 会自动把剧集整理成以下格式:
/电视剧名/季数/电视剧名 - S01E01 - 集标题.mkvRadarr 同样把根文件夹设为/movies,电影命名格式为:
/电影名 (年份)/电影名 (年份) - 质量来源.mkv注意,Sonarr 和 Radarr 的根目录必须是容器内路径,不是 NAS 的物理路径。
6. 功能测试与效果验证
配置完成,进入功能测试阶段。建议按下面的顺序逐项验证。
6.1 测试 Jackett 搜索
在 Jackett WebUI 的搜索框输入你要找的资源名,比如blade runner 2049,能返回搜索结果,说明索引器配置正常。这一步是承上启下的关键,Jackett 如果搜不到结果,Sonarr/Radarr 肯定也搜不到。
6.2 测试 Sonarr 自动订阅
在 Sonarr 界面点击 “添加剧集”,输入剧名,选择正确的剧集条目后点确定。
预期结果:Sonarr 会自动搜索该剧的种子资源,推送下载任务到 qBittorrent,qBittorrent 开始下载。
判断成功的标准:
- Sonarr 的 “活动” 页面能看到当前下载队列。
- qBittorrent 的 “种子” 列表里出现了对应任务。
- 界面右上角没有红色警报。
如果搜不到资源,优先检查 Jackett 是否配置了可用索引器,以及索引器返回结果是否需要特殊参数(例如部分站点需要自定义 FlareSolverr 处理)。
6.3 测试 qBittorrent 下载完成后的自动整理
等待一个测试下载任务完成后,观察 Sonarr 的“活动 -> 历史记录”。如果显示Grabbed、Downloaded、Imported三个状态流转,说明整套自动化链路已经跑通。
此时去 NAS 的媒体库目录library/tv下查看,文件应该已经按标准格式重命名并归入对应季目录。
6.4 测试 Jellyfin 媒体库刮削
打开 Jellyfin WebUI,首次使用需要创建管理员账号。创建完成后进入“仪表盘 -> 媒体库”,添加媒体库,内容类型选“电视节目”,文件夹路径填/data/tv。电影媒体库同理,路径填/data/movies。
添加完成后 Jellyfin 会自动扫描,并匹配 TMDB 元数据。打开首页,能看到海报墙、剧集简介、演员列表,说明刮削成功。
如果刮削匹配不到,常见原因是文件名信息不完整。确认 Sonarr 的重命名规则里包含剧集名和集号,不要用纯数字文件名。
6.5 端到端回归测试
完整的回归测试流程如下:
- 在 Sonarr 添加一部美剧订阅。
- 等待 Jackett 自动搜索 -> Sonarr 推送任务 -> qBittorrent 开始下载。
- 下载完成后 Sonarr 自动重命名并移动文件。
- Jellyfin 检测到新文件,自动扫描入库。
- 打开 Jellyfin 首页,海报墙出现新剧,点进去可以正常播放。
这一整套流程全部自动完成、无需人工干预,就算验收通过。
7. 接口 API 与批量任务扩展
这套方案里的 Sonarr 和 Radarr 都提供完整 REST API,配合批量任务可以在追剧场景之外做更多自动化。
7.1 用 API 批量添加剧集
如果你搬家式的从旧媒体库迁移一批剧集,不想在 WebUI 里一个个添加,可以通过 API 批量导入。先到 Sonarr 的“设置 -> 常规”页面复制 API Key,然后使用下面的 Python 示例:
import requests import json # 配置区 SONARR_URL = "http://NAS_IP:8989" API_KEY = "你的API_Key" TVDB_ID = 121361 # 剧集的 TVDB ID,可在 Sonarr 搜索页面获取 url = f"{SONARR_URL}/api/v3/series" headers = {"X-Api-Key": API_KEY} payload = { "tvdbId": TVDB_ID, "title": "测试剧集", "qualityProfileId": 1, # 质量配置 ID,可按需调整 "languageProfileId": 1, "seasonFolder": True, "monitored": True, "rootFolderPath": "/tv", "addOptions": {"searchForMissingEpisodes": True} } response = requests.post(url, headers=headers, json=payload, timeout=30) print(response.status_code) print(response.json())searchForMissingEpisodes设为true,添加成功后 Sonarr 会立即开始搜索缺失剧集,自动生成下载任务。
7.2 用 API 批量整理已下载资源
如果你之前已经有一批手动下载的文件,不想重新下载,可以使用 Sonarr 的“导入”功能。通过 API 返回的候选文件列表,可以写脚本自动做批量导入:
import requests SONARR_URL = "http://NAS_IP:8989" API_KEY = "你的API_Key" url = f"{SONARR_URL}/api/v3/importlist" headers = {"X-Api-Key": API_KEY} response = requests.get(url, headers=headers, timeout=30) print(response.json())建议第一次跑通全链路后再做这些高级扩展,先把核心订阅流程搞清楚,比单纯追求 API 数量更有价值。
7.3 下载器批量限速与队列管理
qBittorrent 本身提供 Web API,可以用来批量管理下载任务。例如批量给所有 5 个以上的种子限速到 5MB/s:
import requests QB_URL = "http://NAS_IP:8081" QB_USER = "admin" QB_PASS = "你的密码" # 登录获取 cookie session = requests.Session() session.post(f"{QB_URL}/api/v2/auth/login", data={"username": QB_USER, "password": QB_PASS}) # 获取所有种子 torrents = session.get(f"{QB_URL}/api/v2/torrents/info").json() # 批量限速 for torrent in torrents: if torrent["hash"]: session.post(f"{QB_URL}/api/v2/torrents/setLimit", data={ "hash": torrent["hash"], "limit": 5120 # 单位 KB/s }) print(f"已对 {len(torrents)} 个种子设置限速")8. 资源占用与性能观察
这套系统属于“常驻后台”型服务,了解资源占用情况有助于评估是否需要扩大内存,或者哪些容器吃资源最严重。
8.1 如何观察资源占用
在飞牛 fnOS 的 WebUI 里直接看“资源监控”即可,能看到每个容器的 CPU 和内存实时曲线。更精确的观察可以通过 SSH 执行:
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"运行docker stats能看到类似下面的输出:
NAME CPU % MEM USAGE / LIMIT sonarr 0.35% 480MiB / 7.6GiB radarr 0.20% 350MiB / 7.6GiB jackett 0.10% 250MiB / 7.6GiB qbittorrent 2.50% 620MiB / 7.6GiB jellyfin 3.20% 720MiB / 7.6GiB以上只是示意数据,实际以你 NAS 的真实输出为准。总体规律是:空闲时这套系统内存占用大概在 2-3 GB 之间,下载和转码时 CPU 会明显上升。
8.2 性能影响分析
- Jellyfin 转码是资源消耗大户。如果你用手机流量播放 NAS 里的 4K 原盘,Jellyfin 会触发转码,CPU 占用可能直接拉满。解决方式是在客户端开启“直接播放”,或者给 Jellyfin 挂载 Intel 核显做硬件转码。
- qBittorrent 大量并发任务会占用较多内存。如果你同时跑几百个种子,内存占用会显著上升,建议下载完成后自动做种上限设置,不要无限做种。
- Jackett 和 Sonarr/Radarr 的搜索过程是短暂的 CPU 波动,因为需要同时发起很多索引请求,峰值 CPU 会短暂升高,属于正常现象。
8.3 如何降低资源占用
如果 NAS 配置较低,比如只有 4G 内存,可以做一些取舍:
- 不需要追剧的话,可以不部署 Radarr,少一个常驻容器。
- qBittorrent 设置“全局最大连接数”为 300,降低网络和内存开销。
- Jellyfin 关闭不必要的转码格式支持,尽量在播放端解码。
- Jackett 只保留必要的索引器,索引器越多,搜索时 CPU 和网络开销越大。
9. 常见问题与排查方法
基于实际部署中最常踩的坑,整理出下面的排查表。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 容器启动后马上退出 | 目录映射不存在或权限不足 | 查看docker logs 容器名 | 确认主机目录已创建,PUID/PGID 设置正确 |
| Sonarr/Radarr 提示下载客户端连接失败 | qBittorrent 密码被修改过 | 在 Sonarr 里重新测试连接 | 更新 qBittorrent 密码 |
| Sonarr 搜索不到任何资源 | Jackett 索引器配置失效 | 在 Jackett WebUI 里手动搜索测试 | 更新索引器 Cookie/API Key,或添加新的索引器 |
| 下载完成但 Sonarr 不导入 | 下载目录和媒体库目录映射不一致 | 检查 Sonarr 的路径映射设置 | 确保容器内/downloads与/tv路径映射正确 |
| Jellyfin 刮削不到海报 | 文件名不规范或网络无法访问 TMDB | 在 Jellyfin 日志里查看元数据抓取报错 | 规范命名,或检查 NAS 网络解析是否正常 |
| Docker Hub 拉取镜像超时 | 网络问题 | 尝试重新拉取 | 配置国内镜像加速源 |
| qBittorrent 无法下载,显示 tracker 未连接 | 网络或 tracker 问题 | 查看 qBittorrent 的 Tracker 状态 | 添加备用 tracker,或检查网络连通性 |
| 重启 NAS 后容器未自动启动 | restart 策略没设置 | 查看容器运行状态 | 在 Compose 里确保restart: unless-stopped |
9.1 端口冲突排查
如果你发现某个端口被占用导致容器无法启动,可以用下面的命令查看端口占用情况:
netstat -tlnp | grep 8989找到占用进程后,换一个宿主机端口映射即可。例如 Sonarr 的端口映射改成"8989:8989"为"18989:8989",访问地址相应变成http://NAS_IP:18989。注意只有冒号左侧可以改,右侧是容器内部端口,不要动。
9.2 路径映射排查
这是整个方案里最容易出问题的地方。出现“找不到文件”类错误时,进入容器内部确认路径是否能访问到数据:
docker exec -it sonarr bash ls /downloads ls /tv如果ls /downloads能看到文件,说明下载器和 Sonarr 的路径映射是一致的。看不到文件,说明 Compose 里的 volumes 映射有问题,需要回到宿主机路径和容器路径一一核对。
9.3 Jellyfin 硬解配置排查
如果 Jellyfin 转码特别卡,可能是没有开启硬件加速。在 Jellyfin 的“仪表盘 -> 播放”里,勾选 Intel Quick Sync,然后重启 Jellyfin 容器。确认你的 NAS CPU 是否支持 Quick Sync,飞牛 fnOS 内核只要包含 i915 驱动,一般都能识别到/dev/dri设备。
10. 最佳实践与使用建议
10.1 目录规划要一次到位
不要下载完再移动文件。下载暂存区和媒体库从一开始就分开,能避免 Sonarr/Radarr 在硬链接和文件移动时出现跨文件系统问题。如果下载盘和媒体库是同一块物理盘,Sonarr 默认会优先使用硬链接,实现“秒入库”且不占用额外空间。如果分属不同磁盘,硬链接不生效,会执行真实的文件复制,耗时更长。
验证硬链接是否生效,可以执行:
stat /downlo ads/xxx.mkv /tv/xxx.mkv两个文件如果 Inode 相同,说明是硬链接;不同则是复制。
10.2 索引器要克制
Jackett 每添加一个索引器,Sonarr 搜索时就会多一个查询目标。索引器太多会导致搜索速度变慢,且某些不稳定的索引器会让搜索超时。建议保留 3-5 个稳定的索引器即可,质量优先而不是数量优先。
10.3 留好配置备份
容器配置目录都在/vol1/1000/media/docker/下面,定期把这个目录整体备份到另一块硬盘,或者用飞牛的自带备份功能同步到网盘。更换 NAS 或者系统重装时,只要恢复这些目录,重新docker compose up -d,整套系统就能恢复原样。
10.4 下载完成留种策略
qBittorrent 默认会一直做种,长期挂机既不节能,也会占用网络上行。在 qBittorrent 设置里把做种限制改成“分享率达成 1.0 或做种时间满 72 小时自动停止”,既能保证基本的分享义务,又不会拖垮 NAS 网络。
10.5 合规与授权提醒
重要的事情说三遍:确保下载内容有合法授权。这套自动下载工具链不内置任何内容源,也不帮你找盗版资源。索引器列表里的站点如果是公开的,也意味着它的可用性随时可能变化,不要在生产环境过度依赖某一个索引器。直接对外发布 Jellyfin 媒体库链接、分享账号给非家庭成员,都存在版权风险和安全风险,请务必慎重。
11. 总结与下一步
这套方案最值得尝试的点是:一次配置,长期自动。只要 Jackett 索引器稳定,Sonarr/Radarr 的订阅列表就是你的“追剧清单”,下载、整理、入库、刮削全部自动完成,Jellyfin 打开就是干净的海报墙。
最先应该验证的功能是 Jackett 手动搜索 + Sonarr 添加剧集测试。这两步跑通,说明索引、下载、管理链路是通的,后面 Jellyfin 入库只是时间问题。
最容易踩的坑是路径映射不一致,其次是 qBittorrent 默认密码找不到。前者的解决方式是每次改 Compose 都确认宿主机路径和容器路径一一对应,后者则是在首次启动后第一时间看容器日志拿临时密码并完成修改。
后续可以继续扩展的方向包括:给 Sonarr/Radarr 接入 Telegram/微信通知机器人,剧集下载完成自动推送到手机;给 Jellyfin 配置 SSL 证书后在外网安全访问;或者引入硬链接批量整理脚本,把已有的散乱资源库快速整理成标准格式。每一块都可以单独写一篇,先把手头的自动追剧链路跑稳,再逐步加功能。
建议收藏备用。如果你已经有一台飞牛 NAS,现在就可以打开 Docker 项目模块,把上面的 Compose 文件粘贴进去,体验一下全自动追剧的快乐。