技术笔记

NAS 做下载机:qBittorrent 与 Transmission 部署要点

yaobingbin yaobingbin · · 约 7 分钟 · 0 条评论

选哪个客户端

客户端 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 认证”选项时要注意,它会让局域网内免密访问

下载内容的合规提醒:下载工具本身是中性的技术,请只用于你有合法权利获取的内容。

微信搜一搜 纳思Note
评论经后台审核通过后显示 · 请勿发布广告、外链或无关内容

发表评论

邮箱地址不会被公开。填写昵称与邮箱后方可评论。