UNIXAWESOME

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

July 5, 2020

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.target
systemctl daemon-reload
systemctl 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 скачивание начнётся автоматически

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