Seedbox 部署 qBittorrent、FlexGet 与 Auto Remove Torrents 实现资源自动下载及删除教程 | 小学堂


前言

初衷

最近入门 PT,家中宽带上行 20M,不快不慢,所以自建了个 Seedbox,使用的下载方案是 qBittorrent+FlexGet+Auto Remove Torrents,FlexGet 使用 PT 站 RSS 链接自动下载种子至服务器并使用 qBittorrent 自动下载,下载完成后根据条件使用 Auto Remove Torrents 自动删除,以实现无需人工干预,自动刷流量。

写作本文的初衷是部署过程中发现目前的教程都相对简单,对新手不算友好,部署过程中出现的问题都得不到解答,而软件官方教程为英文,相比中文门槛较高。

本文内容全部参考两软件的官方教程,删减不必要部分,并亲自验证可行性。未参考任何非官方教程。参考链接见文末。

环境

  • 系统:Ubuntu 16.04 LTS x64,开启 BBR
  • 用户:root
  • WinSCP:5.13.3
  • PuTTY:0.70
  • qBittorrent-nox:4.1.1
  • FlexGet:2.14.6
  • Auto Remove Torrents:1.2.4

一、qBittorrent

(一)安装

1
2
3
add-apt-repository ppa:qbittorrent-team/qbittorrent-stable
apt-get update
apt-get install qbittorrent-nox

(二)创建服务

创建服务。

1
vim /etc/systemd/system/qbittorrent.service

输入以下内容。

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=qBittorrent Daemon Service
After=network.target

[Service]
User=root
ExecStart=/usr/bin/qbittorrent-nox
ExecStop=/usr/bin/killall -w qbittorrent-nox

[Install]
WantedBy=multi-user.target

root 指的是系统当前用户名,根据自己的实际情况更改。

(三)运行

1. 启动

1
systemctl start qbittorrent

2. 停止

1
systemctl stop qbittorrent

3. 开机自启

1
systemctl enable qbittorrent

4. 查看运行状态

1
systemctl status qbittorrent

5. 访问 Web UI

1
2
3
默认地址: http://IP地址:8080
默认用户名: admin
默认密码: adminadmin

IP 地址为服务器地址,登录后可在设置中将 Web UI 设置成简体中文,更改用户名和密码等。

(四)升级

升级方法与安装方法一致。

二、FlexGet

(一)准备

1. 安装升级 Python

FlexGet 支持的 Python 版本为 2.7,3.3 到 3.5,Auto Remove Torrents 只支持 3.x,为了方便,FlexGet 也使用 Python 3.x 安装,若版本不正确,可升级 Python,若版本正确,无需操作。

(1)查看版本

1
python3 -V

(2)升级

1
2
apt-get update
apt-get install python3

2. 安装升级 pip

(1)查看版本

1
pip3 -V

(2)安装

1
2
apt-get update
apt-get install python3-pip

(3)升级

1
pip3 install -U pip

3. 安装升级 setuptools

(1)安装

1
2
apt-get update
apt-get install python3-setuptools

(2)升级

1
pip3 install -U setuptools

4. 安装升级 nano

(1)查看版本

1
nano -V

(2)安装与升级

1
2
apt-get update
apt-get install nano

(二)安装

1. 查看 FlexGet 版本

1
flexget -V

2. 安装

1
pip3 install flexget

(三)配置

1. 创建配置目录

1
mkdir /root/.flexget

2. 创建并编辑配置文件

1
nano /root/.flexget/config.yml

3. 配置与运行

FlexGet 支持众多插件,下文只列出本人用到的,其他插件用法可参见文末插件链接。

(1)示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
tasks:
test task:
rss: http://mysite.com/myfeed.rss
accept_all: no
regexp:
accept:
- good.stuff
reject:
- bad.things
from: title
content_size:
min: 12
max: 1200
strict: no
download: /home/me/watchdir/
qbittorrent:
port: 8080
username: admin
password: adminadmin
path: /media/disk/downloads/
web_server:
bind: 0.0.0.0
port: 50001
web_ui: yes
run_v2: yes

(2)基本配置

1
2
3
4
tasks:
test task: #任务名称,可任意起
rss: http://mysite.com/myfeed.rss #rss地址
download: /home/me/watchdir/ #rss订阅的下载位置

(3)accept_all

1
accept_all: no #是否接受所有条目,接受为yes,不接受为no

(4)regexp

regexp 为正则表达式筛选插件。

1
2
3
4
5
6
regexp:
accept: #接受内容,多个条件写为多行。无条件可删除此项
- good.stuff
reject: #拒绝内容,多个条件写为多行。无条件可删除此项
- bad.things
from: title #删选位置,title为标题

(5)content_size

content_size 为按内容大小进行筛选的插件。

1
2
3
4
content_size:
min: 12 #最小值,单位为m。
max: 1200 #最大值,单位为m。
strict: no

此设置为接受 12m~1200m 大小的内容。

(6)qbittorrent

qbittorrent 设置插件。

1
2
3
4
5
qbittorrent:
port: 8080 #qBittorrent监听端口
username: admin #qBittorrent用户名
password: adminadmin #qBittorrent密码
path: /media/disk/downloads/ #qBittorrent下载地址

(7)web_server

1
2
3
4
5
web_server:
bind: 0.0.0.0 #本服务器IP或0.0.0.0
port: 50001 #监听端口,可任意设置
web_ui: yes #是否开启Web UI,开启为yes,关闭为no。
run_v2: yes #是否开启Web UI 2.0界面,开启为yes,关闭为no。

4. 检查配置与手动运行

(1)检查配置文件是否正确

1
flexget check

(2)模拟手动运行

1
flexget –test execute

(3)手动运行

1
flexget execute

(4)查看任务运行状况

1
flexget status

5. 自动运行

(1)查询 FlexGet 安装位置

1
which flexget

例如位置为 /usr/local/bin/flexget。

(2)编辑 crontab

1
crontab -e

使用 nano 编辑,输入以下内容。

1
*/2 * * * * /usr/local/bin/flexget --cron execute

保存退出。其中 2 是指 2 分钟运行一次,可任意设置。

6. 配置 Web UI

(1)编辑配置文件

参见上文 “配置”。

(2)设置 Web UI 密码

1
flexget web passwd <要设置的密码>

(3)开启守护进程

访问 Web UI,必须开启守护进程。

1
flexget daemon start -d

(4)停止守护进行

1
flexget daemon stop

(5)查看运行状态

1
flexget daemon status

(6)访问 Web UI

访问 http://ip:50001 即可,用户名为 flexget,密码为设置密码。

(7)开机自启守护进程

编辑 crontab,输入以下内容。

1
@reboot /usr/local/bin/flexget daemon start -d

(四)升级

1. 查看 FlexGet 版本

1
flexget -V

2. 通过 pip 升级

1
pip3 install -U flexget

若安装出现错误,可升级 Python、pip 与 setuptools 尝试解决,升级方法见上。

3. 检查配置错误

1
flexget check

(五)常见问题

1. 日志显示

FlexGet 日志级别包括 critical,error,warning,info,verbose,debug,trace。 Web UI 默认显示 info 及以下级别。若需开启其他级别,可使用以下命令。

1
-L LEVEL

-L verbose 表示显示 verbose 及以下级别的日志。

如需要 Web UI 显示 verbose 及以下级别的日志,开启守护进程的命令变为。

1
flexget -L verbose daemon start -d

守护进程开启自启的命令变为。

1
@reboot /usr/local/bin/flexget -L verbose daemon start -d

三、Auto Remove Torrents

(一)准备

Auto Remove Torrents 需要 Python 3,不支持 Python 2。需安装 Python 3、pip 3,安装方法参见上文 FlexGet 中的安装方法。

(二)安装

1. 查看版本

1
pip3 show autoremove-torrents

2. 安装

1
pip3 install autoremove-torrents

(三)配置

1. 创建编辑配置文件

1
2
mkdir /root/autoremove-torrents
vim /root/autoremove-torrents/config.yml

配置文件因与 FlexGet 配置文件同名,故不可放在 root 目录下,否则会被 FlexGet 识别。

2. 配置内容

配置文件可以分为 4 部分,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 一个任务块
my_task: # 第一部分:任务名称
# 第二部分:登录信息
client: qtortorrent
host: http://127.0.0.1:9091
username: admin
password: adminadmin
# 第三部分:策略块(删除条件)
strategies:
strategy1: # 第1部分:策略名称
# 第2部分:过滤器
categories:
- IPT
# 第3部分:删除条件
ratio: 1
seeding_time: 1209600
strategy2:
all_categories: true
excluded_categories:
- IPT
seeding_time: 259200
# 这里可以添加更多策略
# 第四部分:决定是否同时删除数据(可选项)
delete_data: true

# 这里可以添加更多任务

第一部分:任务名称

任意。

第二部分:登录信息

  • client:客户端类型。目前支持 qbittorrent/transmission/μTorrent。
  • host:WebUI 的访问地址。如 http://127.0.0.1:8080
  • username:WebUI 的用户名。
  • password:WebUI 的密码,密码前后需要加英文半角双引号。

第三部分:策略块

1)策略名称

任意。

2)过滤器

过滤器用于选择删除条件会对哪些种子有效,而其它种子不受删除条件的影响。

  • all_trackers/all_categories:选择所有的 Tracker 或分类。
  • categories:选择这些分类的种子。
  • excluded_categories:排除这些分类的种子。
  • trackers:选择这些 Tracker 的种子。
  • excluded_trackers:排除这些 Tracker 的种子。
  • 每个过滤器的结果都是一个种子的集合。注意如果 categories 和 trackers 过滤器同时存在,则脚本会取这两个集合的交集,并减去 excluded_categories 集合和 excluded_trackers 集合。
3)删除条件
  • ratio:分享率上限。
  • create_time:种子从添加到客户端到现在所经过的时间,以秒为单位。在这里设置一个添加时间的上限,当种子在客户端中存活时间超过此上限后,种子会被直接删除(不管种子现在正处于哪种状态)。
  • seeding_time:最长做种时间。
  • seed_size:计算上述选择的种子的总大小。如果总大小超过限制,一部分种子会被删除。需要设置以下两个属性:
    • limit:总大小限制,以 GiB 为单位。
    • action:确定哪部分种子将被删除。可以是以下值:
      • remove-old-seeds:尽量删除旧的种子。
      • remove-new-seeds:尽量删除新的种子。
      • remove-big-seeds:尽量删除体积大的种子。
      • remove-small-seeds:尽量删除体积小的种子。

第四部分:删除数据

确定是否在删除种子时同时删除数据。如果此字段未指定,则默认值为 false。

(四)运行

1. 模拟运行

1
autoremove-torrents --view --conf=/root/autoremove-torrents/config.yml

--conf=/root/autoremove-torrents/config.yml 为配置文件路径,若路径为默认,则可不写。下同。

2. 运行

1
autoremove-torrents --conf=/root/autoremove-torrents/config.yml

3. 自动运行

编辑 crontab。

1
crontab -e

使用 nano 编辑,在出现的界面添加以下内容:

1
*/2 * * * * /usr/local/bin/autoremove-torrents --conf=/root/autoremove-torrents/config.yml

可根据需求设置自动运行的时间间隔。

(五)升级

1
pip3 install -U autoremove-torrents

已知问题

FlexGet 与 Auto Remove Torrents 同时运行,可能会导致 qBittorrent 崩溃。

结语

以上即为部署 qBittorrent、FlexGet、Auto Remove Torrents 的详细方法。部署完毕后会自动下载 PT 种子并下载文件及删除。

参考资料

(一)qBittorrent

(二)FlexGet

(三)Auto Remove Torrents

更新说明

2018.08.20

  • qBittorrent 安装方式修改为从 PPA 安装
  • 优化 FlexGet 部署流程

2018.11.26

  • 添加 Auto Remove Torrents 教程
  • 优化部分流程

2020.01.07

  • 修正排版错误

 最后一次更新于2022-02-28
评论关闭了哟