NPCHK Blog

路邊小博客(<ゝω・)☆

Debian 8 (Jessie) 編譯rtorrent+RuTorrent (WebUI)安裝指南

前言

教學通過測試於Debian 8,支援IPv6。若想用於其他/不同版本的系統,請自行修改指令和軟件包名稱。
以下將編譯安裝rtorrent和libtorrent的0.9.7 / 0.9.6版本:

  • 添加支援OpenSSL 1.1.0
  • 原生支援IPv6

其他系統編譯rtorrent教學:

Debian 7 (wheezy): https://npchk.info/debian7-install-rtorrent/

Debian 9 (Stretch): https://npchk.info/debian9-install-rtorrent/

Ubuntu 18: https://npchk.info/ubuntu-bionic-install-rtorrent/

安裝編譯工具與依賴

apt-get update
apt-get install git build-essential automake libcppunit-dev libtool zlib1g-dev gawk libsigc++-2.0-dev libssl-dev libncurses5-dev libncursesw5-dev libcurl4-openssl-dev libxmlrpc-c++8-dev nano screen unzip

安裝rtorrent 0.9.7

從Github取得libtorrent 0.13.7:

git clone https://github.com/rakshasa/libtorrent
cd libtorrent/
git checkout v0.13.7

編譯及安裝libtorrent:

./autogen.sh
./configure --disable-debug 
make -j$(nproc)
make install
cd ~

刷新動態庫:

ldconfig

從Github取得rtorrent 0.9.7:

git clone https://github.com/rakshasa/rtorrent
cd rtorrent
git checkout v0.9.7

編譯及安裝rtorrent:

./autogen.sh
./configure --with-xmlrpc-c --with-ncurses --enable-ipv6 --disable-debug
make -j$(nproc)
make install
cd ~

或者安裝rtorrent 0.9.6

從Github取得libtorrent feature-bind:

git clone https://github.com/rakshasa/libtorrent
cd libtorrent/
git checkout origin/feature-bind
git checkout 9eb9ba2

編譯及安裝libtorrent:

./autogen.sh
./configure --disable-debug 
make -j$(nproc)
make install
cd ~

刷新動態鏈接庫:

ldconfig

從Github取得rtorrent feature-bind:

git clone https://github.com/rakshasa/rtorrent
cd rtorrent
git checkout origin/feature-bind
git checkout b088c1c

編譯及安裝rtorrent:

./autogen.sh
./configure --with-xmlrpc-c --with-ncurses --enable-ipv6 --disable-debug
make -j$(nproc)
make install
cd ~

新增系統使用者

新增系統使用者,用於運行rtorrent和php-fpm
例如peter:

adduser peter

安裝網頁伺服器軟體及插件

安裝RuTorrent的網頁伺服器軟體:

apt-get install nginx-full php5-fpm apache2-utils curl php5-geoip

刪除網頁伺服器軟體的默認頁面,創建及編輯Rutorrent的Nginx配置文件:

rm /etc/nginx/sites-enabled/default
touch /etc/nginx/sites-available/rutorrent.conf
ln -s /etc/nginx/sites-available/rutorrent.conf /etc/nginx/sites-enabled/000-rutorrent.conf
nano /etc/nginx/sites-available/rutorrent.conf

輸入以下內容

server {

 server_name _;

 root /var/www;
 index index.html;

 location / {
 auth_basic "Restricted";
 auth_basic_user_file /etc/nginx/htpasswd;
 try_files $uri $uri/ =404;
 }

 location /RPC2 {
 scgi_pass unix:/tmp/rpc.socket;
 include scgi_params;
 scgi_param SCRIPT_NAME /RPC2;
 }

 location ~ \.php$ {
 try_files $uri =404;
 fastcgi_pass unix:/var/run/php5-fpm.sock;
 fastcgi_split_path_info ^(.+\.php)(/.+)$;
 fastcgi_index index.php;
 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 include fastcgi_params;
 }

}

配置php5-fpm:

nano /etc/php5/fpm/pool.d/www.conf
#修改參數:
user = peter
group = peter

配置php-geoip:

nano /etc/php5/fpm/php.ini
#加入一行:extension=geoip.so

下載MaxMind GeoIP 數據庫:

rm -rf /usr/share/GeoIP
mkdir -p /usr/share/GeoIP
cd /usr/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz

修改php5-fpm的上傳檔案數量和大小限制:

nano /etc/php5/fpm/php.ini
#修改參數:
upload_max_filesize = 100M
max_file_uploads = 10000
post_max_size = 100M

重啟php5-fpm和Nginx以套用新設置:

systemctl restart php5-fpm
systemctl restart nginx

安裝及配置RuTorrent

從Github取得RuTorrent:

wget https://github.com/Novik/ruTorrent/archive/master.zip
unzip master.zip

移動RuTorrent到Nginx的www目錄:

mv ruTorrent-master /var/www/rt

建立一個Web用戶於登入RuTorrent (例如用戶名叫tom):

htpasswd -c /etc/nginx/htpasswd tom

設置RuTorrent與PHP使用者peter的權限:

chown peter -R /var/www/rt/share

設置RuTorrent使用UNIX Domain Socket連接Nginx/rtorrent:

nano /var/www/rt/conf/config.php
找到以下部分並修改成:
        //$scgi_port = 5000;
        //$scgi_host = "127.0.0.1";

        // For web->rtorrent link through unix domain socket 
        // (scgi_local in rtorrent conf file), change variables 
        // above to something like this:
        //
        $scgi_port = 0;
        $scgi_host = "unix:///tmp/rpc.socket";

配置RuTorrent的插件(Plugins)

配置Curl:

nano /var/www/rt/conf/config.php
#「"curl"  => '',」修改為「"curl"  => '/usr/bin/curl',」

「screenshots」Plugin需要ffmpeg;
新增APT源「jessie-backports」:

nano /etc/apt/sources.list
添加一行:
deb http://deb.debian.org/debian jessie-backports main contrib non-free

更新APT倉庫並安裝ffmpeg:

apt-get update
apt-get install ffmpeg

「mediainfo」Plugin需要mediainfo:

apt-get install mediainfo

「unrar」Plugin需要unrar和rar;
unrar和rar是non-free軟體,安裝前須檢查sources.list有沒有non-free字眼:

nano /etc/apt/sources.list
#例如:deb http://XXX.debian.org/debian/ jessie main non-free
#如無,請在jessie main後添加「non-free」

更新APT倉庫並安裝unrar和rar:

apt-get update
apt-get install unrar rar

「Spectrogram」Plugin需要sox libsox-fmt-mp3:

apt-get install sox libsox-fmt-mp3

配置「Spectrogram」Plugin:

nano /var/www/rt/plugins/spectrogram/conf.php
#修改為$pathToExternals['sox'] = '/usr/bin/sox';

安裝及配置RuTorrent的第三方插件(Plugins)

「File Manager」能令我們在Rutorrent直接進行檔案複製/刪除/移動/壓縮/解壓等等,非常推薦安裝!
安裝「File Manager」Plugin:
下載插件:

git clone https://github.com/nelu/rutorrent-thirdparty-plugins

移動插件到RuTorrent Plugin目錄:

mv rutorrent-thirdparty-plugins/filemanager/ /var/www/rt/plugins/

安裝依賴組件:

apt-get install zip

配置File Manager:

nano /var/www/rt/plugins/filemanager/conf.php

#將$pathToExternals部分改成:
$pathToExternals['rar'] = '/usr/bin/rar';
$pathToExternals['zip'] = '/usr/bin/zip';
$pathToExternals['unzip'] = '/usr/bin/unzip';
$pathToExternals['tar'] = '/bin/tar';
$pathToExternals['gzip'] = '/bin/gzip';
$pathToExternals['bzip2'] = '/bin/bzip2';

配置RuTorrent:

nano /var/www/rt/conf/config.php
#將「$topDirectory = '/';」修改成「$topDirectory = '/home/peter/';」

設置檔案權限:

chown -R peter:peter /var/www/rt/plugins/filemanager/
chmod 755 /var/www/rt/plugins/filemanager/scripts/*

安裝「Autodl-irssi」 Plugin(用於RSS外國PT站 不知道這是甚麼的不建議安裝)
安裝irssi及依賴:

apt-get install irssi libarchive-zip-perl libnet-ssleay-perl libhtml-parser-perl libxml-libxml-perl libdigest-sha-perl libjson-perl libjson-xs-perl libxml-libxslt-perl php-xml-parser

下載「Autodl-irssi」 Plugin到RuTorrent並設置PHP使用者peter的權限:

cd /var/www/rt/plugins/
git clone https://github.com/autodl-community/autodl-rutorrent.git autodl-irssi
cp autodl-irssi/_conf.php autodl-irssi/conf.php
chown -R peter:peter autodl-irssi

配置「Autodl-irssi」 Plugin:

nano autodl-irssi/conf.php
#設置一個端口和密碼用於Autodl和irssi通訊,例如:
$autodlPort = 50000;
$autodlPassword = "a577a5727fec6348aa";

現在切換到用戶peter來繼續配置Autodl-irssi:

su - peter

下載及安裝Autodl-irssi:

mkdir -p ~/.irssi/scripts/autorun
cd ~/.irssi/scripts
curl -sL http://git.io/vlcND | grep -Po '(?<="browser_download_url": ")(.*-v[\d.]+.zip)' | xargs wget --quiet -O autodl-irssi.zip
unzip -o autodl-irssi.zip
rm autodl-irssi.zip
cp autodl-irssi.pl autorun/
mkdir -p ~/.autodl
touch ~/.autodl/autodl.cfg

配置Autodl-irssi,創建配置文件:

nano ~/.autodl/autodl.cfg
#輸入以下容內並輸入剛才設置Port及密碼,例如:
[options]
gui-server-port = 50000
gui-server-password = a577a5727fec6348aa

配置rtorrent

我們繼續使用用戶peter進行配置
創建rtorrent配置文件:

nano ~/.rtorrent.rc
內容(把*.*.*.*改為盒子的IPv4地址):
directory = /home/peter/Downloads
session = /home/peter/rtorrent/.sessions
 
schedule = watch_dir,5,5,"load.start=/home/peter/rtorrent/torrents/*.torrent, d.directory.set=/home/peter/rtorrent/incoming"
schedule = untied_directory,5,5,stop_untied=
schedule = untied_directory,5,5,close_untied=
schedule = untied_directory,5,5,remove_untied=
schedule = tied_directory,5,5,start_tied=
schedule = low_diskspace,10,30,close_low_diskspace=100M

execute.nothrow=rm,/tmp/rpc.socket
scgi_local = /tmp/rpc.socket
schedule = chmod,0,0,"execute=chmod,777,/tmp/rpc.socket"

upload_rate = 0
download_rate = 0
port_range = 34543-34543
port_random = no
encryption = allow_incoming,try_outgoing,enable_retry
dht = auto
check_hash = no
 
encoding_list = UTF-8
ip = *.*.*.*

創建下載、監控及記錄目錄:

mkdir ~/Downloads
mkdir ~/rtorrent/
mkdir ~/rtorrent/incoming
mkdir ~/rtorrent/.sessions
mkdir ~/rtorrent/torrents/

登出peter,回到root繼續餘下配置:

exit

設置開機自啟

nano /etc/systemd/system/rtorrent.service

輸入以下內容:

[Unit]
Description=rTorrent Service
After=network.target

[Service]
Type=forking
KillMode=none
LimitNOFILE=65536
ExecStart=/usr/bin/screen -S rt -fa -d -m /usr/local/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/local/bin/rtorrent
WorkingDirectory=/home/peter
User=peter
Group=peter

[Install]
WantedBy=multi-user.target
nano /etc/systemd/system/irssi.service

輸入以下內容:

[Unit]
Description=rTorrent Service
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/screen -S autodl -fa -d -m /usr/bin/irssi
User=peter

[Install]
WantedBy=multi-user.target

啟用以上設置:

systemctl enable rtorrent.service
systemctl enable irssi.service

啟動rtorrent和irssi

systemctl start rtorrent.service
systemctl start irssi.service

現在已經完成安裝程序,瀏覽器訪問...:

http://你的服務器IP地址/rt/
#使用上面設置的Web用戶「tom」登入

安裝資訊

下載文件的保存目錄/位置 = /home/peter/Downloads
種子監控目錄 = /home/peter/rtorrent/torrents/
Nginx根目錄 = /var/www/
訪問rtorrent命令行界面(切換到用戶peter): screen -r rtorrent
訪問irssi界面:screen -r autodl







  1. crazi 說:

    请问大大,我创建用户pt,用pt登陆后运行
    screen -S pt;
    rtorrent;
    Error in option file: ~/.rtorrent.rc:22: Junk at end of input
    这个错误如何解决呢?
    ip = *.*.*.*
    这个是否填服务器ip?

    1. Admin 說:

      沒錯,要把*.*.*.*改成服務器IP。

      1. crazi 說:

        博主,不知道为啥,只有把
        ip = *.*.*.* #這裡填IPv4地址 如果用了IPv6補丁的話需要這個參數,否則Tracker只知道IPv6地址
        后面的#全删掉才不会报错

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *