Установка и настройка rtorrent + ruTorrent

rTorrent — это консольный BitTorrent клиент для Linux/Unix систем, написанный на C++. Быстр и очень нетребователен к ресурсам.
ruTorrent - это интерфейс (web-морда) для rTorrent, популярен из-за удобного интерфейса и множества полезных плагинов.
Установку будем производить на CentOS 8, хотя и для других дистрибутивов название пакетов, общий порядок их установки и настройки конфигурационных файлов будет таким же.
Устанавливаем rtorrent, также нам понадобится tmux
dnf install rtorrent tmuxДля дальнейшей работы rtorrent в качестве постоянно работающего сервиса создаём отдельного пользователя, чисто для торрентов. Если вам не пофиг на безопасность сервера то не рекоммендуется пропускасть этот шаг, так как сервис будет стартовать по умолчанию от root пользователя, а это не желательно.
Создаём группу пользователей shares которым будет доступна сетевая шара.
groupadd sharesСоздаём пользователя rtorrent и сразу добавляем его в нашу группу.
useradd -G shares -m -s /bin/bash rtorrentСоздаём файл настроек в папке пользователя /home/rtorrent/
.rtorrent.rc
min_peers = 1
max_peers = 512
min_peers_seed = -1
max_peers_seed = -1
download_rate = 10240
network.max_open_files.set = 512
network.http.max_open.set = 256
pieces.memory.max.set = 1000M
network.xmlrpc.size_limit.set = 4M
network.max_open_sockets.set = 1024
# Ограничение скорости download/upload значение в килобайтах
throttle.global_up.max_rate.set_kb = 6144
throttle.global_down.max_rate.set_kb = 6144
#system.file_allocate.set = yes
pieces.preload.type.set = 1
pieces.preload.min_size.set = 262144
pieces.preload.min_rate.set = 5120
network.send_buffer.size.set = 16M
network.receive_buffer.size.set = 4M
system.umask.set=0007
# Директория для скачивания торрентов
directory = /media/files/downloads/
session = /media/files/downloads/watch/.rtsession
# check every 15 sec folder
schedule = watch_directory,15,15,load.start=/media/files/downloads/watch/*.torrent
#schedule = untied_directory,5,5,stop_untied=
port_range = 6890-6891
check_hash = no
encryption = allow_incoming,try_outgoing,enable_retry,prefer_plaintext
dht = auto
dht_port = 6881
scgi_port = 192.168.87.6:5000
encoding_list=UTF-8
max_memory_usage = 1024MУ меня в системе отдельный смонтированный диск для торрентов и прочих загрузок. Смонтированный в /media/files. Создаём необходимые директории для rtorrent
mkdir -p /media/files/downloads/watch/.rtsessionВыставляем права, владельца и группу на папку.
chown -R root:share /media/files/downloads
chmod -R 770 /media/files/downloadsСоздаём сервис для запуска rtorrent в /etc/systemd/system
rtorrent.service
[Unit]
Description=rTorrent Daemon
After=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
User=rtorrent
Group=shares
ExecStart=/usr/bin/tmux -2 new-session -d -s rtorrent rtorrent
ExecStop=/usr/bin/tmux kill-session -t rtorrent
[Install]
WantedBy=default.targetsystemctl daemon-reloadsystemctl start rtorrent.service
systemctl status rtorrent.serviceЕсли всё прошло нормально, добавляем в автозагрузку
systemctl enable rtorrent.serviceУстановка ruTorrent
Устанавливаем для начала веб сервер Nginx и php-fpm
dnf install nginx php wgetСоздаём директорию для веб морды и переходим в неё
mkdir /var/www/rutorrent
cd /var/www/rutorrentСмотрим последнюю версию ruTorrent и скачиваем https://github.com/Novik/ruTorrent/releases У меня это 3.10
wget https://github.com/Novik/ruTorrent/archive/v3.10.tar.gzраспаковываем в нашу созданную папку, чтобы получилась такая структура:
/var/www/rutorrent/
├── conf
├── css
├── images
├── js
├── lang
├── php
├── plugins
├── share
├── .gitmodules
├── htaccess-example
├── index.html
├── LICENSE.md
└── README.mdМеняем права на папку.
chown -R root:nginx share/Создаём конфиг для веб сервера
/etc/nginx/conf.d/rutorrent.conf
server {
listen 192.168.87.6:80;
root /var/www/rutorrent;
error_log /var/log/nginx/rutorrent_error.log;
location / {
index index.html;
include default.d/php.conf;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location /RPC2 {
include scgi_params;
scgi_pass 192.168.87.6:5000;
}
}Настаиваем php
Редактируем /etc/php-fpm.d/www.conf меняем некоторые строки:
...
user = nginx
group = nginx
...
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
...Для проверки конфигов nginx вводим команду
nginx -tЕсли всё ок, запускаем веб сервер и php
systemctl start nginx.service
systemctl start php-fpm.serviceДобавляем в автозагрузку
systemctl enable nginx.service
systemctl enable php-fpm.serviceКонфигурируем ruTorrent
/var/www/rutorrent/conf/config.php
...
$topDirectory = '/media/files/downloads';
...
$scgi_port = 5000;
$scgi_host = "192.168.87.6";
...
$pathToExternals = array(
"php" => '/usr/bin/php',
"curl" => '/usr/bin/curl',
"gzip" => '/usr/bin/gzip',
"id" => '/usr/bin/id',
"stat" => '/usr/bin/stat',
"pgrep" => '/usr/bin/pgrep',
"python" => '/usr/bin/python3'
);
...
$localhosts = array( // list of local interfaces
"127.0.0.1",
"localhost",
"192.168.87.6",
);Также добавляем пользователя rtorrent в группу nginx
Доставляем необходимые пакеты:
dnf install php-json python3 libmediainfo sox unrar unzip ffmpegОткрываем браузер и переходим по нашему ip адресу
http://192.168.87.6

Если в веб интерфейсе показывает ошибки плагинов, то их можно поотключать во вкладке плагины, или же доставить нужные для них пакеты.
При добавлении торрент файла в нашу папку watch скачивание начнётся автоматически

Вот и вся настройка.