ubuntu下编译配置rTorrent+ruTorrent
ubuntu 18.04官方源的rTorrent 0.9.6会导致误报上传,故从源码编译0.9.7。
更新
20230320
自Ubuntu 20.04起,直接安装rtorrent即可:sudo apt install rtorrent
自2020年起,python2停止支持。不想在新系统装python2折腾依赖的可直接使用docker版pyrocore。
pt客户端比较
qBittorrent
👍GUI实用美观
👍自带web ui且可设密码权限
👎体积稍大
👎内存占用稍高
👎无原生命令行控制
由上可知,qB更适合桌面图形环境使用。我的win10 htpc和笔记本装的就是它,必要时还可临时开启web界面远程控制。
Transmission
👍资源占用较低
👍Web Control使用方便(批量改tracker)
👎无法针对单种限流
👎辅种时无法跳过哈希校验
👎树莓派下transmission-daemon2.94带700+种子在公网IP改变情况下有机率崩溃
主要缺点还是只能全局限流,无法单种限流。
rTorrent
👍资源占用低
👍带800+占5T的种子运行稳定
👍辅种时可跳过哈希校验
👍第三方web界面ruTorrent操作方便(批量改tracker,批量限流)
👍配置选项多,可定制程度高
👎配置稍复杂
rtorrent
安装依赖
1 | sudo apt-get install -y build-essential subversion autoconf screen g++ gcc ntp curl comerr-dev pkg-config cfv libtool libssl-dev libncurses5-dev ncurses-term libsigc++-2.0-dev libcppunit-dev libcurl4-openssl-dev git zlib1g-dev |
编译安装xmlrpc-c
1 | svn co https://svn.code.sf.net/p/xmlrpc-c/code/stable ~/src/xmlrpc-c |
编译安装libtorrent-0.13.7
这里有个坑,官方发布的包没有加入对openssl1.1的支持,需要根据这个commit手动打补丁。也可以在这里下载改好的2个文件。
1 | cd ~/src |
编译安装rtorrent-0.9.7
1 | cd ~/src |
配置rtorrent
创建相关文件夹,注意按需修改路径和用户名,用户组。
1 | sudo mkdir -p /path/to/pt/rtorrent/{log,.session,~watch} |
修改~/.rtorrent.rc
配置文件。一般来说,推荐先用默认配置,参数保守,若出了问题再微调。
1 | ### START of rtorrent.rc ### |
我用来挂PT的机器是J1900+8G内存的ubuntu server,参考CONFIG-Template和Performance-Tuning稍作修改。注意按需修改路径和内存占用选项。
1 | ############################################################################# |
修改后运行rtorrent
测试配置文件,无问题后Ctrl+Q
退出。
设置服务开机运行
创建/etc/systemd/system/rtorrent.service
。注意将/path/to/pt/
改成rtorrent配置目录,另外若不是编译的位置可能不同(如/usr/bin/rtorrent
),可通过which rtorrent
确定路径。
1 | [Unit] |
启用。
1 | sudo systemctl enable rtorrent.service |
另外官方文档有tmux的方案,好处是可以通过命令行交互,但在20.04
下运行不稳定。
ruTorrent
安装配置apache
选择apache是因为其对SCGI的支持比较好,且个人网站没有处理高并发的需求,故没选Nginx。
安装依赖。
1 | sudo apt-get install apache2 libapache2-mod-php7.2 |
启用.htaccess
。修改/etc/apache2/apache2.conf
。
1 | <Directory /var/www/> |
开启headers模块。
1 | sudo a2enmod headers |
复制默认https站点配置并在此基础上修改。
1 | sudo cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/example.com.conf |
设置HSTS。
1 | <IfModule mod_headers.c> |
启动ssl,禁用默认站点,启用本站配置。
1 | sudo a2enmod ssl |
修改php上传文件大小上限
以apache为例,修改/etc/php/7.2/apache2/php.ini
。
1 | upload_max_filesize = 64M |
重启apache服务。
1 | sudo service apache2 restart |
安装web界面rutorrent
安装依赖。
1 | sudo apt-get install zip unzip zlib1g-dev ffmpeg mediainfo unrar sox |
下载ruTorrent并解压。
复制到网页文件夹并修改权限。
1 | sudo cp -r ruTorrent /var/www/example.com |
禁用不用的插件,修改ruTorrent/conf/plugins.ini
。
1 | [_cloudflare] |
启用访问密码。
1 | sudo htpasswd -c /etc/apache2/.htpasswd yourname |
1 | sudo mv /var/www/example.com/ruTorrent/htaccess-example /var/www/example.com/ruTorrent/.htaccess |
1 | AuthType Basic |
通过samba共享下载文件夹
安装samba。
1 | sudo apt-get install samba samba-common-bin |
编辑/etc/samba/smb.conf
。
1 | [pt] |
设置访问密码。
1 | sudo smbpasswd -a yourname |
重启服务。
1 | sudo service smbd restart |
pyrocore(可选)
强大的种子修改命令行工具集。需要python2的运行环境。
安装conda
1 | wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Linux-x86_64.sh |
改为国内源,修改~/.condarc
。
1 | channels: |
创建python2环境。
1 | conda create -n py2 python=2 |
安装pyroscope
安装依赖和创建安装文件夹。
1 | sudo apt-get install python python-dev python-virtualenv python-pip python-setuptools python-pkg-resources git build-essential |
修改~/.bashrc
,末尾添加此句。
1 | export PATH=$PATH:/home/yourname/bin |
克隆源码,激活py2环境,安装。
1 | git clone "https://github.com/pyroscope/pyrocore.git" ~/.local/pyroscope |
运行pyroadmin --version
以检查是否安装成功。
常用任务
批量改tracker
左下角Trackers栏右键需要更改的网站,选中所有该站种子后停止,编辑种子,在弹出的窗口中修改新网址保存即可。
辅种时跳过哈希校验
一般来说,添加种子时选中Fast resume
即可跳过。但其使用的rtorrent_fast_resume.pl
有Bug,如果有文件夹为纯数字则无法正常跳过校验。
这时就需要用到前面安装的pyroscope
工具集中的chtor来制作可跳过检验的种子。以某个无法用perl脚本跳过的IMDB大包为例子:
1 | chtor -H '/path/to/pt/movie/IMDb.2017.09.29.Top.250.BluRay.1080p.x265.10bit.MNHD-FRDS' *.torrent -o ./new |
上述命令将把工作目录下所有的种子添加校验部分,并在’new’文件夹下生成新种子。没有’-o’选项则会直接修改种子。由于是和指定路径下文件简单比较大小,故比计算哈希值快得多。
修改已制作种子校验值和tracker方便多站发布
1 | chtor --reannounce-all=https://pt.site.com/announce.php *.torrent |
上述命令将把工作目录下所有的种子更改tracker并修改哈希值以免pt软件认为是同样的种子,直接跳过而无法辅种。方便在多个站点同时发布种子而不用重复制作种子。
手动保存session信息
注意前面给出的配置文件中,为了避免频繁读取硬盘所以将保存session的间隔是设为8小时。但有时也会碰到刚下完种子没多久需要重启维护的情况,这时需要手动保存session信息以免丢失刚下的种子进度信息而需要重新校验。
通过tmux a -t rtorrent
进入rtorrent界面。用Ctrl+x
调出命令行,输入session.save=
并回车(别漏了最后的等号),稍等即可完成保存session信息。
debug
Tracker: [Peer certificate cannot be authenticated with given CA certificates]
原因是该pt站的ssl证书有问题,想跳过检验可在配置文件’~/.rtorrent.rc’添加这句:
1 | network.http.ssl_verify_peer.set = 0 |
No connection to rTorrent. Check if it is really running. Check $scgi_port and $scgi_host settings in config.php and scgi_port in rTorrent configuration file
首先,运行tmux ls
以确定rTorrent服务是否正常运行。若没有相关进程,则执行rtorrent
并查看error信息。
rtorrent: Could not lock session directory
这种情况通常发生在rtorrent非正常退出的情况。比如通过rutorrent删除大种子及文件。解决办法:
1 | cd /path/to/pt/rtorrent/.session |
删除内容较多的大种子建议先通过rutorrent仅删除种子,再通过ssh
或samba
删除文件。