debian 下安装使用 rtorrent+rutorrent 下载 PT 神器

Docker 安装方法

2018-12-05 更新:
今天写一下 rtorrent+rutorrent 用 docker 的实现方法。
首先你的电脑上先得安装好 docker。安装方法网上很多,自行百度。
装好之后运行下面的命令行就 OK 了。你没有看错,就是一行代码,就装好了。docker 会自动下载容器并运行。

1
docker run -dt --name rtorrent-rutorrent --restart=always -p 8080:80 -p 49160:49160/udp -p 49161:49161 -v /mnt/raye/video:/downloads -e USR_ID=11000 -e GRP_ID=22000 -e PHP_MEM=1024M diameter/rtorrent-rutorrent:latest
参数 说明
docker run -dt 运行一个后台容器。
--name rtorrent-rutorrent 运行的容器名。
--restart=always: 重启后容器自动运行。
-p 8080:80 -p 49160:49160/udp -p 49161:49161 映射到容器的端口号及协议。
-v /mnt/raye/video:/downloads 映射到容器里的文件夹。/mnt/raye/video 自行修改这部分的内容为自己要下载到的地方。
-e -e USR_ID=11000 -e GRP_ID=22000 设置下载文件的用户 ID 和组 ID。
-e PHP_MEM=1024M 增加 PHP 使用内容到 1024M
diameter/rtorrent-rutorrent:latest latest 代表使用最新的版本。

通过浏览器访问 http://IP:8080,就可以看到 rtorrent+rutorrent 了。

说明一下:DOCKER 装的 rtorrent+rutorrent,要通过 Transdroid 手机 APP 访问和控制,SCGI 的挂载点应该是 /RPC


正常安装方法

安装所需软件

1
apt-get install rtorrent php screen wget unzip ffmpeg mediainfo sox unrar-free apache2

下载 rutorrent

1
2
3
4
5
6
cd /var/www/html
wget https://github.com/Novik/ruTorrent/archive/master.zip
unzip master.zip
mv ruTorrent-master rt
rm -rf master.zip
chmod -R 777 /var/www/html/rt

编辑.rtorrent.rc 配置文件

root 目录下新建一个.rtorrent.rc 的文件。内容如下:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# This is an example resource file for rTorrent. Copy to
# ~/.rtorrent.rc and enable/modify the options as needed. Remember to
# uncomment the options you wish to enable.

# Maximum and minimum number of peers to connect to per torrent.
#
throttle.min_peers.normal.set = 10
throttle.max_peers.normal.set = 512

# Same as above but for seeding completed torrents (-1 = same as downloading)
#
throttle.min_peers.seed.set = -1
throttle.max_peers.seed.set = -1

#最大同时下载和上传插槽数(全局插槽!)(`max_downloads_global`,`max_uploads_global`)
#throttle.max_downloads.global.set = 300
#throttle.max_uploads.global.set = 300

#每个torrent同时下载和上传插槽的最大数量
throttle.max_uploads.set = 512
#throttle.max_downloads.set = 512

#设置发送到跟踪器的numwant字段,指示我们需要多少个对等体。负值禁用此功能。 默认值:`-1`(`tracker_numwant`)
trackers.numwant.set = 100

# Global upload and download rate in KiB. "0" for unlimited.
#
throttle.global_down.max_rate.set_kb = 0
throttle.global_up.max_rate.set_kb = 0

# Default directory to save the downloaded torrents.
#
directory.default.set = /mnt/video/download

# Default session directory. Make sure you don't run multiple instance
# of rtorrent using the same session directory. Perhaps using a
# relative path?
#
session.path.set = /mnt/video/.session

# Watch a directory for new torrents, and stop those that have been
# deleted.
#
schedule2 = watch_directory,5,5,load.start=/mnt/video/.watch/*.torrent
#*/
#schedule2 = untied_directory,5,5,stop_untied=

# Close torrents when diskspace is low.
#
schedule2 = low_diskspace,5,60,close_low_diskspace=300M

# The ip address reported to the tracker.
#
#network.local_address.set = 127.0.0.1
#network.local_address.set = rakshasa.no

# The ip address the listening socket and outgoing connections is
# bound to.
#
#network.bind_address.set = 127.0.0.1
#network.bind_address.set = rakshasa.no

# Port range to use for listening.
#
network.port_range.set = 49164-49164

# Start opening ports at a random position within the port range.
#
network.port_random.set = no

# Check hash for finished torrents. Might be usefull until the bug is
# fixed that causes lack of diskspace not to be properly reported.
#
#pieces.hash.on_completion.set = no

# Set whether the client should try to connect to UDP trackers.
#
#trackers.use_udp.set = yes

# Alternative calls to bind and ip that should handle dynamic ip's.
#
#schedule2 = ip_tick,0,1800,ip=rakshasa
#schedule2 = bind_tick,0,1800,bind=rakshasa

# Encryption options, set to none (default) or any combination of the following:
# allow_incoming, try_outgoing, require, require_RC4, enable_retry, prefer_plaintext
#
# The example value allows incoming encrypted connections, starts unencrypted
# outgoing connections but retries with encryption if they fail, preferring
# plaintext to RC4 encryption after the encrypted handshake
#
# protocol.encryption.set = allow_incoming,enable_retry,prefer_plaintext

# Enable DHT support for trackerless torrents or when all trackers are down.
# May be set to "disable" (completely disable DHT), "off" (do not start DHT),
# "auto" (start and stop DHT as needed), or "on" (start DHT immediately).
# The default is "off". For DHT to work, a session directory must be defined.
#
dht.mode.set = on

# UDP port to use for DHT.
#
dht.port.set = 6881

# Enable peer exchange (for torrents not marked private)
#
#protocol.pex.set = yes

# Set downlad list layout style. ("full", "compact")
#
#ui.torrent_list.layout.set = "full"

# SCGI Connectivity (for alternative rtorrent interfaces, XMLRPC)
#
# Use a IP socket with scgi_port, or a Unix socket with scgi_local.
# schedule can be used to set permissions on the unix socket.
#
#scgi_port = 127.0.0.1:5000
#scgi_local = /home/user/rtorrent/rpc.socket
#schedule = scgi_permission,0,0,"execute.nothrow=chmod,\"g+w,o=\",/home/user/rtorrent/rpc.socket"

peer_exchange = yes
scgi_port = 127.0.0.1:5000

#xmlrpc的最大包大小。 默认值:`524288`(xmlrpc_size_limit)
network.xmlrpc.size_limit.set = 4M

#每12小时保存所有会话,而不是默认的20分钟。
#schedule2 = session_save, 1200, 43200, ((session.save))

#发送和接收套接字的缓冲区大小。默认情况下禁用,增加缓冲区大小可能有助于减少磁盘搜索,连接轮询,因为每次都会缓冲更多数据socket被写入。它将导致更高的内存使用率(在rtorrent进程中不可见!)
network.receive_buffer.size = 4M
network.send_buffer.size = 16M

#设置用于映射文件块的最大内存地址空间。这指的是内存映射,而不是物理内存分配。默认值:`1GB`
pieces.memory.max.set = 2048M

#rtrtrent可以接受/生成的最大连接数(`sockets`)
network.max_open_sockets.set = 1024

#同步HTTP请求的最大数量(由announce或scrape请求使用)默认值:`32`(`set_max_open_http`)
network.http.max_open.set = 128

#rtrtrent可以保持打开的最大打开文件数
network.max_open_files.set = 1024

#预加载一个文件。 默认值:`0`可能的值:`0`(关闭),`1`(Madvise),`2`(直接分页)。
pieces.preload.type.set = 1

#降低DNS超时。 默认值:`60`。
network.http.dns_cache_timeout.set = 25

建立下载目录

1
2
3
4
mkdir /mnt/video
mkdir /mnt/video/.session
mkdir /mnt/video/.watch
chmod -R 777 /mnt/video

下载目录可以自己修改:
修改第 33 行,将 /mnt/video/download 设置成你自己的默认下载目录

1
directory.default.set = /mnt/video/download 

修改第 39 行,将 /mnt/video/.session 设置成你自己保存 PT 缓存文件的目录

1
session.path.set = /mnt/video/.session

修改第 44 行,将 /mnt/video/.watch/ 设置成你自己 PT 存放种子的目录。(将种子存放到这个目录下,会自动下载种子文件)

1
schedule2 = watch_directory,5,5,load.start=/mnt/video/.watch/*.torrent

建立启动脚本

在 root 目录下建立一个文件 rt.sh, 将下面的代码复制进去,保存退出。

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
28
29
30
31
#!/bin/sh

case "$1" in
start)
echo -n "Starting rtorrent"
su - root -c "screen -A -m -d -S rtorrent /usr/bin/rtorrent" &
echo "."
;;
stop)
echo -n "Stopping rtorrent"
ppid=`ps ax | grep "/usr/bin/rtorrent" | grep -v grep | grep -v screen | awk '{ print $1 }'`
kill ${ppid}
echo "."
;;
restart)

echo -n "Restarting rtorrent"
ppid=`ps ax | grep "/usr/bin/rtorrent" | grep -v grep | grep -v screen | awk '{ print $1 }'`
kill ${ppid}
sleep 1
su - root -c "screen -A -m -d -S rtorrent /usr/bin/rtorrent" &
echo "."
;;
*)
echo "Usage: {start|stop|restart}" >&2
exit 1
;;
esac

exit 0

然后给这个脚本执行权限。

1
chmod +x ~/rt.sh

最后运行这个脚本

1
2
3
~/rt.sh start     #运行
~/rt.sh stop #停止
~/rt.sh restart #重新运行

根据你的需要运行脚本之行之后,就可以在浏览器里输入:ip地址/rt 就可以正常访问 rutorrent+rtorrent 了。

后话:

添加在访问 rutorrent 时需要输入密码,才可以正常访问。

编辑 /etc/apache2/sites-available/000-default.conf 文件。在 </VirtualHost> 前面添加下面这些代码,保存退出。

1
2
3
4
5
6
7
<Directory /var/www/html/rt>
#设置密码
AuthType Basic
AuthName "Server"
AuthUserFile /var/www/.passwd
Require valid-user
</Directory>

设置用户名和密码

1
htpasswd -bc /var/www/.passwd 用户名 密码

上面的用户名和密码替换成自己要设置的用户和密码。

重启 apache2 服务

1
systemctl restart apache2

手机端用 Transdroid 访问和控制 rtorrent.

首先要先下载 Transdroid 这个 APP。怎么下载,我就不说了,各大应用商店都有得下。

添加服务器

选择 add normal,custom server

服务器类型选 rtorrent,其它根据自己的情况填写。

在高级设置里,SCGI挂载点设置成

1
/rt/plugins/rpc/rpc.php

添加 RSS 订阅。订阅的地址需要自己到 PT 站上去获取。

添加完之后的样子

效果展示,看中哪一个点一下,rtorrent 就会自动下载了。

RSS 利用正则自动过滤并下载,所需要的影片。

在订阅里选择 RSS 管理器

在 RSS 管理器里可以通过正则过滤到自己需要的电影,我设置的是 2018 年的电影,文件小于 30G 的就会自动下载。

1
/\[[1-9]{1}\*|\[[3-9]{1}[0-9]\.|\[[1-9]{3}\./

正则表达内容比较多,我这点东西只当是抛转引玉了。

### 下面还有可以实现的功能! 由于使用 python 和 shell 需要配置的地方太多,已不适合大多数同学使用了。具体的我就不说了。自己有兴趣的同学可以自己去研究。 1、 下载文件后,自动将文件分类。 2、 自动下载文件后,微信或邮件通知! ![](https://host.zealot.top:8929/ppi/images/-/raw/master/pictures/2022-10-17_rtorrent10.png) 3、 硬盘快满时,自动删除已看过的电影。 4、 微信输入电影名,自动跳出电影百度网盘链接。