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

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

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

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