NAS 做下载机:qBittorrent 与 Transmission 部署要点
选哪个客户端
| 客户端 | Web UI 端口 | 特点 | 适合 |
|---|---|---|---|
| qBittorrent | 8080 | 功能最全,支持 RSS、分类、标签、搜索插件 | 主力下载、需要管理大量任务 |
| Transmission | 9091 | 极简轻量,资源占用低 | 只需要基本下载、设备性能弱 |
| Deluge | 8112 | 插件丰富,介于两者之间 | 需要插件扩展 |
大多数场景推荐 qBittorrent。 它的 Web UI 功能接近桌面版,支持 RSS 自动订阅、任务分类、标签管理、速度限制策略,而且跨平台客户端(qBittorrent Enhanced Edition 等)生态成熟。Transmission 胜在轻,但功能偏少,管理几十个任务时比较吃力。
(这两者都是 BitTorrent 客户端。本文只讨论在自有 NAS 上部署下载服务的技术实现,不涉及任何侵权内容的获取。)
部署:用 Docker 还是系统包
Docker 是更好的选择,理由:
- 版本更新及时,不受 NAS 系统自带源的版本限制
- 配置与数据都在挂载目录里,迁移方便
- 出问题不会污染 NAS 系统
linuxserver 维护的镜像是社区里用得最多的,它们在权限处理(PUID/PGID)上做得比较规范。
关键点:
services:
qbittorrent:
image: lscr.io/linuxserver/qbittorrent:latest
environment:
- PUID=1000 # 宿主机用户 ID
- PGID=1000 # 宿主机用户组 ID
- TZ=Asia/Shanghai
- WEBUI_PORT=8080
volumes:
- ./config:/config
- /volume1/downloads:/downloads
ports:
- 8080:8080
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
PUID/PGID 必须填对。 这是 NAS 上跑 Docker 最常见的权限问题根源:容器内进程以错误的用户身份创建文件,导致 NAS 上的其他服务(比如媒体服务器)读不到。用 id 用户名 在宿主机上查到实际的 uid/gid 再填。
BT 端口要同时映射 TCP 和 UDP。 上面配置里 6881 同时映射了两种协议,这是必须的。
端口转发与连通性
BT 的下载速度高度依赖”可连接性”——如果你的客户端处于无法被外部连接的状态(显示为”无连接”或防火墙图标),就只能在别人主动连你时才有速度,做种效率大幅下降。
改善连通性的三种方式:
一、UPnP。 在路由器上开启 UPnP,客户端会自动请求端口映射。最省事,但安全性有争议(任何内网设备都能开端口)。
二、手动端口转发。 在路由器上把 6881(TCP+UDP)转发到 NAS 的内网 IP。最可控。
三、VPN 的端口转发功能。 如果你走了 VPN,需要 VPN 服务商支持端口转发,并在客户端里配置对应的端口。
验证方法:在客户端里看状态栏的 connectivity 图标,或者用在线的端口检测工具扫一下你的公网 IP 和端口。
目录规划:这是最重要的一节
下载目录和存放目录必须分开。 这是下载机配置里最容易做错、后果最严重的一点。
错误做法:下载目录和媒体库目录是同一个,下载完文件就直接躺在媒体库里。
问题在于:
- 做种的文件在持续被读取。BT 做种时客户端要不断读取文件并上传分片,这是持续的随机读
- 媒体服务器会扫描半个文件。文件还在下载中,Jellyfin/Plex 就开始扫描,扫到一半的 .mkv 会产生错误的条目
- 无法自动整理。下载的文件名通常是发布组的命名格式,需要重命名归类
正确的目录结构:
/downloads
├── incomplete/ # 下载中(未完成)
└── complete/ # 已完成,等待整理
/media
├── movies/
└── tv/
开启”未完成目录”功能(qBittorrent 里叫 “Temporary download path”)。这样下载中的文件待在 incomplete 里,完成后自动移动到 complete。媒体服务器只扫描 /media,永远看不到半成品。
更进一步:下载目录放在单独的硬盘或 SSD 上。理由:
- BT 下载会产生大量随机读写,与媒体库的顺序读取互相干扰
- 下载目录下的文件频繁创建删除,会造成严重的磁盘碎片
- 下载盘坏掉不影响媒体库(代价低)
如果只有一块盘,至少用独立的共享文件夹做隔离。
磁盘 IO 是最大的副作用
做种是持续 IO 的来源。 一个活跃的种子会持续被其他 peer 请求数据,意味着硬盘一直在随机读。这带来三个后果:
1. 硬盘永远无法休眠(下载机会让休眠功能彻底失效) 2. 其他服务的响应速度下降(随机读抢占机械盘的磁头时间) 3. 硬盘磨损增加
缓解办法:
- 限制上传速度。给上传设一个合理的上限(比如带宽的 50–70%),既保留分享率又不过度消耗 IO
- 限制活跃种子数。同时做种的不要太多
- 上传时段控制。部分客户端支持按时段限速,可以设置在夜间全速上传
- 用 SSD 做下载盘。下载和做种在 SSD 上跑,完成后再移到机械盘归档,这是最彻底的方案
分享率(ratio)的取舍:纯下载不做种在 PT 社区会被惩罚,公开种子则没有硬性要求。从 NAS 健康角度,做种到 1.0 以上就可以考虑停止,长期无限制做种对机械盘是实实在在的消耗。
RSS 自动化
qBittorrent 支持 RSS 订阅 + 自动下载规则,这是把下载机变成”自动追更”的关键。
流程:订阅源的 RSS 地址 → 配置下载规则(正则过滤标题、指定分类和保存路径)→ 自动匹配下载。
常见的用法是追剧集:订阅一个剧集的 RSS,用正则匹配 剧名.S01E 这类标题格式,自动下载并保存到指定目录。
配置正则时要注意转义,建议先在客户端的测试功能里验证匹配结果再启用。
安全注意事项
Web UI 一定要设强密码。 qBittorrent 的默认凭据是 admin/adminadmin,这是公开信息。如果你的 NAS 做了端口转发,把 Web UI 暴露到公网而没改密码,等于把 NAS 的文件系统开放给互联网上的扫描器。
建议:
- 立即修改默认密码
- Web UI 不要直接暴露公网,走 VPN 或反向代理 + 认证
- 如果必须公网访问,至少启用 HTTPS 和 IP 白名单
- 考虑开启 WebUI 的”绕过 localhost 认证”选项时要注意,它会让局域网内免密访问
下载内容的合规提醒:下载工具本身是中性的技术,请只用于你有合法权利获取的内容。
