为什么要多开

一台服务器上只跑一个 qBittorrent,种子攒多了问题就来了:WebUI 越来越卡,单个进程到瓶颈后所有种子一起受影响,一个实例出问题还会全军覆没。把种子拆到多个独立实例里,每个实例有自己的进程、配置、下载目录和端口,负载和风险都分开,管理起来也更清楚。

手动多开本身不难,无非是复制 systemd 服务、给每个实例建独立 profile、再逐个改端口。但每换一台机器就要把这套流程重搓一遍,容易漏步骤、撞端口,所以我把它做成了脚本:more-qb。

more-qb 是什么

more-qb 是一个针对 [email protected] 的 qBittorrent 多实例脚本。它基于上游 RinehartZ/seedbox-tools 的 more_qb.sh 适配而来:保留上游的主体逻辑,只修改了原服务文件路径、服务名称和相关提示,适配我自己的服务命名。

适用环境

先说清楚,它不是通用的服务自动识别器,环境要对得上:

  • 模板服务 /etc/systemd/system/[email protected] 已存在
  • 模板中设置了 User=shoo,原实例是 [email protected]
  • 原配置在 /home/shoo/.config/qBittorrent/qBittorrent.conf

一行命令

在目标 Linux 服务器上以 root 执行,无需登录 GitHub:

wget -O more_qb.sh https://raw.githubusercontent.com/ihanr/more-qb/main/more_qb.sh && bash more_qb.sh -n 2 -w 9091 -b 23334

三个参数:

  • -n:新增实例的个数。示例里是 2,就是新增 qb2、qb3
  • -w:起始 WebUI 端口。示例从 9091 开始,依次是 9091、9092
  • -b:起始 BT 端口。示例从 23334 开始,依次是 23334、23335;SSL 端口自动按 BT 端口 +1000 算,即 24334、24335

不传参数时脚本的默认值是 -n 3 -w 8081 -b 23334,建议还是显式传参,自己心里有数。

执行完新增实例的情况:

实例WebUI 端口BT 端口SSL 端口下载目录
qb290912333424334/home/shoo/Downloads/qb2
qb390922333524335/home/shoo/Downloads/qb3

原实例 [email protected] 保持原样,脚本最后会打印公网 IP 和各实例的访问地址、端口清单。

脚本做了什么

  1. 检查是否以 root 运行、模板服务文件是否存在,并从模板里读出 User= 的用户名
  2. 复制模板生成 qb2.service、qb3.service:Type=forking 改为 Type=exec,ExecStart 加上 --profile=/home/shoo/qbN --confirm-legal-notice,每个实例一个独立 profile 目录
  3. 停掉原服务,systemctl daemon-reload,逐个启动新服务生成初始配置,然后停下
  4. 把原实例的 qBittorrent.conf 复制到各实例,并逐项改好:WebUI\Port、Session\Port(BT)、Session\SSL\Port、默认下载路径指向各自的 Downloads/qbN、日志路径指向各自 profile 下的 logs
  5. 重新启动并 enable 原服务和所有新服务

注意事项

  • 不要对已经有 qb2、qb3 的服务器重复运行。 上游逻辑会覆盖同名服务和实例配置,执行期间还会停止原服务
  • 运行前确认 WebUI / BT 端口没有被占用,并先备份原配置
  • 脚本要以 root 运行,执行前先把源码看一遍是个好习惯
  • 语法检查不等于真实的 systemd / qBittorrent 运行验证,第一次用建议先在测试机上跑

项目地址

  • GitHub:https://github.com/ihanr/more-qb
  • 上游:https://github.com/RinehartZ/seedbox-tools
  • License:MIT(Copyright © 2025 RinehartZ)