Установка rTorrent + Flood на Debian 11/12

rTorrent известный и стабильный торрент-клиент для Linux систем. В своей основе он использует библиотеку libtorrent и является консольным клиентом. Однако, не всегда и не всем удобно работать именно с консольной версией rTorrent и поэтому для него было разработано достаточно большое количество Web интерфейсов, как простых, так и более продвинутых. На данный момент, одним из лучших Web интерфейсов, на мой взгляд, является универсальный интерфейс Flood (https://flood.js.org/). Он разработан на базе Node JS и может использоваться не только для rTorrent, но и для других торрент клиентов, таких как Deluge, qBittorrent и Transmission. Flood адаптирован для работы с мобильных устройств и является мультиязычным. В этой статье мы будим настраивать rTorrent + Flood на веб-сервере под управлением Debian 11. Настройка на Debian 12, а также на любом компьютере, не обязательно на сервере, производится аналогично.

После настройки и установки связки будем иметь примерно следующее

1. Установка и настройка rTorrent

Для начала нам нужно установить rTorrent.
Здесь хитростей нет.

sudo apt update
sudo apt install rtorrent -y

После установки нужно создать файл конфигурации ~/.rtorrent.rc
При запуске rTorrent будет искать его в домашнем каталоге пользователя, от которого он будет запущен.
Запускать его мы будем не от имени администратора, а от другого пользователя — rtorrent.
Создадим пользователя.

adduser --disabled-password rtorrent

Для работы rTorrent нам нужны будут 3 папки:
1. downloads — папка для хранения скаченных файлов.
2. sessions — папка для хранения текущий закачек.
3. torrents — папка для добавление новых торрентов (закачек).
Алгоритм работы rTorrent будет такой: торрент-файл загружается в папку torrents, затем оттуда его подхватывает rTorrent и добавляет в очередь на закачку, которая создаётся в папке sessions, а загружаемые файлы будут помещаться в папку downloads.

Создадим папки, установим на них владельца и права.

mkdir /home/rtorrent/downloads
mkdir /home/rtorrent/sessions
mkdir /home/rtorrent/torrents
chown -R rtorrent:rtorrent /home/rtorrent
chmod 755 -R /home/rtorrent

Теперь создадим файл конфигурации rTorrrent и заполним его некоторыми основными параметрами.

nano /home/rtorrent/.rtorrent.rc

Настроек, конечно гораздо больше, но для работы указанных будет достаточно.

#минимальное число пиров на торрент
min_peers = 1

#максимальное число пиров на торрент
max_peers = 1000

#максимальная скорость загрузки. 0 - не ограничена
download_rate = 0

#максимальная скорость отдачи. 0 - не ограничена
upload_rate = 0

#папка для сохранения скаченных файлов (для сидирования)
directory = /home/rtorrent/downloads/

#папка для хранения текущий закачек
session = /home/rtorrent/sessions/

#папка для добавление новых торрентов (закачек)
#каждые 5 секунд rToreent проверяет эту папку и ищет новые файлы торрентов *.torrent
#если находит, ставит их на закачку
schedule = watch_directory,5,5,"load.start=/home/rtorrent/torrents/*.torrent"

#номер порта (или нескольких портов) который открывает клиент для обмена данными
port_range = 40890-40890

#случайный выбор порта для обмена данными (отключён)
port_random = no

#проверять хэш торрента после закачки
check_hash = yes

#принимать зашифрованные входящие соединения, устанавливать незашифрованные исходящие соединения,
#если возвращает ошибку, повторять с шифрованием, предпочитать открытый текст после установления
#зашифрованного соединения
encryption = allow_incoming,enable_retry,prefer_plaintext

#использовать udp
trackers.use_udp.set = yes

# Разрешает работу DHT для безтрекерных торрентов или для случаев, когда все ретрекеры не работают.
# Может принимать значения "disable" (для полного отключения DHT), "off" (не стартует с DHT),
# "auto" (Включает DHT при возможности), или "on" (принудительно включает DHT).
dht.mode.set = auto

# UDP порт, используемый DHT.
dht.port.set = 6881

# Принудительно устанавливает кодировку UTF-8 для GUI, работающих через xmlrpc
# и для русских букв в торрентах
encoding.add = UTF-8

#хост и порт для работы с xmlrpc GUI
scgi_port = 127.0.0.1:5000

rTorrent консольный клиент и для его работы в «фоне» его требуется запускать через Screen (инструмент для мультиплексирования терминала между несколькими процессами).
Если Screen у вас не установлен, устанавливаем.

sudo apt install screen

Запускать эту красоту, на мой взгляд, удобнее как «сервис».
Это позволит не только легко запустить или остановить работу rTorrent, но и обеспечить его автоматический запуск при перезагрузке сервера/компьютера (если нужно).
Итак, создадим файл для запуска через systemd

nano /etc/systemd/system/rtorrent.service

И запишем в него минимум команд для запуска и остановки сервиса

[Unit]
Description=rTorrent
After=network.target
[Service]
User=rtorrent
Group=rtorrent
Type=forking
KillMode=process
ExecStart=/usr/bin/screen -d -m -fa -S rtorrent /usr/bin/rtorrent
ExecStop=/usr/bin/killall -w -s 2 /usr/bin/rtorrent
WorkingDirecroty=%h
[Install]
WantedBy=default.target

Теперь можно запустить сервис rtorrent

systemctl start rtorrent

и добавить его в «автозагрузку» (по желанию)

systemctl enable rtorrent.service

Можно проверить, всё ли работает нормально

Как видно, сервис rTorrent запущен и работает нормально.

2. Установка и настройка Flood

Установить Flood можно по разному, можно собрать из репозитория, можно использовать Docker, но раз уж он написан на Node JS, мне кажется, логичнее использовать NPM — менеджер пакетов для платформы Node JS. Если он у вас не установлен, устанавливаем.


curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh

sudo apt-get install -y nodejs

Первая команда скачивает скрипт для добавления репозиториев платформы NodeJS в ваш Debian, вторая собственно выполняет этот скрипт и добавляет репозитории, а третья команда устанавливает платформу NodeJS и NPM.

Теперь устанавливает Flood.

sudo npm install --global flood

Flood имеет строковые параметры, которые задаются при запуске. Если вызвать помощь Flood мы увидим основные из них.

npx flood --help


Нас интересуют следующие параметры:
-h — хост, на котором будет работать Web интерфейс
-p — порт, на котором будет работать Web интерфейс
—rthost — хост, для подключения к rTorrent
—rtport — порт, для подключения к rTorrent

Flood сам по себе является Web сервером, т.е. он может работать без Apache или Nginx, но можно его настроить и так, чтобы он работал совместно, на бекэнде.

Параметры -h и -p как раз и определяют IP хоста, на котором будет работать Flood.
У меня к Web серверу привязан внешний белый IP и доменное имя, но для домашнего компа можно указать 127.0.0.1 и любой порт, пусть будет 3000, как указано по умолчанию.

Параметры —rthost и —rtport должны указывать на точку подключения к rTorrent, у нас это был scgi_port = 127.0.0.1:5000

Итак, мы можем запустить Flood командой

npx flood -h 127.0.0.1 -p 3000 --rthost 127.0.0.1 --rtport 5000

Однако, он опять же будет, как и rTorrent занимать наш терминальные сеанс и мы ничего больше делать не сможем, пока его не закроем. Поэтому, мы будем запускать Flood так же, как rTorrent через systemd. Создадим файл сервиса flood.service

nano /etc/systemd/system/flood.service

И запишем в него минимум команд для запуска и остановки сервиса

[Unit]
Description=Flood
After=network.target
[Service]
User=rtorrent
Group=rtorrent
Type=simple
KillMode=process
ExecStart=/usr/bin/env flood -h 127.0.0.1 -p 3000 --rthost 127.0.0.1 --rtport 5000
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target

Теперь можно запустить сервис rtorrent

systemctl start flood

и добавить его в «автозагрузку» (по желанию)

systemctl enable flood.service

Можно проверить, всё ли работает нормально

Как видно, сервис Flood запущен и работает нормально.

3. Web интерфейс
На этом все настройки завершены.
Можно открыть в браузере адрес 127.0.0.1:3000 и вы попадёте на страницу авторизации Flood.
При первом входе он попросит вас придумать логин и пароль, выбрать торрент клиент, которым вы будите пользоваться, а также указать «точку подключения» к этому клиенту.
Мы пользуемся rTorrent, значит его и выбираем, адрес 127.0.0.1, порт 5000.
Да, мы уже указывали эти параметры при старте Flood, но Web интерфейс для создания профиля хочет их ещё раз.

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

4. Бонус
Flood умеет показывать данные видео файлов, используя MediaInfo
Можно увидеть разрешение, кодеки, битрейт и т.п.

Чтобы это работало, нужно установить в Debian собственно утилиту MediaInfo))

sudo apt-get -y install mediainfo

Вот и всё) Надеюсь, кому-то пригодится)

About the Author