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.shsudo 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
Вот и всё) Надеюсь, кому-то пригодится)