Всем хороша связка rtorrent+rutorrent. Только настраивать её очень уж геморрно, да и уязвимость там нашли, помнится.
Я давно уже использую deluge. Да и вообще мне интерфейс deluge-web больше нравится — выглядит посовременнее, сам он читаемый, да и вообще «не PHP и ладненько». Поэтому сегодня и расскажу, как настроить связку из deluged и родного вебинтерфейса к нему — deluge-web. В принципе, там ничего сложного, но всё же. Вдруг кто-то ещё не знает?
Под deluge-web лучше выделить отдельное доменное имя (я пытался настроить отдельный location, но оно там не очень хочет работать). Очень сильно советую использовать для server{} с делюгом https, дабы всякие личности не смотрели, что вы там качать решите.
В качестве подготовки нам нужно поставить и подготовить nginx, получить ssl-сертификат в letsencrypt.
Ставим пакеты, необходимые для deluge:
Создаём пользователя, под которым будем запускать связку:
Создаём каталог, в котором будем хранить скачанные торренты:
Заводим 2 systemd-unit‘a:
/etc/systemd/system/deluged.service:
Description=Deluge Bittorrent Client Daemon
Documentation=man:deluged
After=network-online.target
[Service]
Type=simple
User=torrents
Group=torrents
UMask=000
ExecStart=/usr/bin/deluged -d
Restart=on-failure
TimeoutStopSec=300
[Install]
WantedBy=multi-user.target
/etc/systemd/system/deluge-web.service:
Description=Deluge Bittorrent Client Web Interface
Documentation=man:deluge-web
After=network-online.target deluged.service
Wants=deluged.service
[Service]
Type=simple
User=torrents
Group=torrents
UMask=022
ExecStart=/usr/bin/deluge-web
Restart=on-failure
[Install]
WantedBy=multi-user.target
В unit-ах я бы обратил внимание на то, что у deluged указан Umask=000, что позволяет читать скачанные файлы любому пользователю в системе (всяким dlna, ftp, nginx-ам, owncloud-ам, или как вы ещё потом будете эти файлы забирать). Если вы не качаете каких-то приватных данных — то такое решение вполне сойдет.
Собственно, запускаем созданные сервисы.
При первом запуске deluge-web должен сгенерироваться файл /home/torrents/.config/deluge/web.conf
В этом файле (для удобства) нужно заменить:
на
Чтобы при каждом входе в deluge-web он не спрашивал, к какому deluged-серверу подключаться.
Есть, правда, грустная новость. Deluge-web версии 1.3 (он в stretch и ранее) не умеет биндиться на localhost-only. Если ваша машинка торчит всеми портами наружу, то нужно через iptables закрыть порт 8112 отовсюду, кроме localhost:
(не забудьте как-то прибить это правило гвоздями, чтобы оно не потерялось при перезагрузке — через iptables-persistence, например).
Теперь сделаем конфиг для nginx для нашего хоста (/etc/nginx/sites-enabled/torrents.conf , например):
listen 80;
include includes/letsencrypt;
server_name torrents.example.com;
location / { return 301 https://torrents.example.com; }
}
server {
listen 443 ssl;
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.pem;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
ssl_session_cache shared:SSL:64m;
ssl_session_timeout 28h;
server_name torrents.example.com;
location / {
proxy_pass http://192.168.14.12:8112/;
proxy_set_header Host $host;
add_header X-Frame-Options SAMEORIGIN;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_connect_timeout 59s;
proxy_send_timeout 600;
proxy_read_timeout 36000s; ## Timeout after 10 hours
proxy_buffer_size 64k;
proxy_buffers 16 32k;
proxy_pass_header Set-Cookie;
proxy_hide_header Vary;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
proxy_set_header Accept-Encoding '';
proxy_ignore_headers Cache-Control Expires;
proxy_set_header Referer $http_referer;
proxy_set_header Host $host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Port '443';
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Authorization '';
proxy_buffering off;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Честно говоря, кучу всего из этого конфига я просто скопипиздил и расписывать все настройки лень =)
Для чего nginx? В принципе, можно и без него — twisted не самый хреновый в плане безопасности сервер (под ним запущен deluge-web), как-то даже поддерживает https. Но неплохо всё же сделать какую-нибудь дополнительную авторизацию, чего twisted уже не умеет. При этом сделать её достаточно удобной, чтобы она быстро не задолбала. Себе я сделал так:
geo $access_geo {
192.168.0.0/24 off;
203.0.113.3/32 off;
default Deluge;
}
# пишем внутри server {
server {
...
location / {
...
auth_basic $access_geo;
auth_basic_user_file /etc/nginx/htpasswd;
}
}
С такой конструкцией nginx не будет спрашивать пароль из htpasswd, если я пришел на вебморду deluge из внутренней сети или с рабочего внешнего IP (взятого, конечно же, из TEST-NETS-3).
Рестартим всё, что нужно:
И заходим на https://torrents.example.com
Пароль по умолчанию на сам deluge-web — deluge, потом его попросят поменять. Ну а всякие настройки самого торрент-клиента можно сменить уже внутри вебморды (не забудьте сменить каталог для скачанных файлов).
Ах да, отвечая на популярный вопрос — а куда это положить? Внезапно, но можно на digitalocean, если трекеры у вас в основном российские, а русские фильмы вы с них не качаете (в общем, если абуз не ждёте). При условии, что вы не используете block storage и не используете «подарочные» аккаунты из первых(отличаются они полностью безлимитным трафиком). Но это скорее для случая «я раз в месяц качаю старую богом забытую игрушку 98-го года выпуска» или «раз в неделю качаю альбом группы, у которой меньше 10 тысяч слушателей». Если качаете много — то лучше гуглить «seedbox vps». Ну и пока в РФ нет ответственности для качателей — можно прямо с домашнего сервера.
Или вот так: https://hub.docker.com/r/edgaras/dlna-torrentbox/
Ну во-первых там и вовсе centos (/me хмуро посмотрел на адрес блога).
Во-вторых, про ssl и авторизацию опять ничего.
Но в закрытой сети — вариант. Хотя и NAT пробить при желании можно.
Добрый вечер!
Пример ограничения доступа извне не работает, но спасибо за мысль! У меня заработало так:
# пишем в /etc/nginx/sites-enabled/torrents.conf до server{}
geo $access_geo {
192.168.0.0/24 off;
203.0.113.3/32 off;
default Deluge;
}
# пишем внутри server {
server {
…
location / {
…
auth_basic $access_geo;
auth_basic_user_file /etc/nginx/htpasswd;
}
}
Ну это я как обычно дописывал хвост статьи и думал «да ну, зачем проверять, уж здесь то я не смогу ошибиться!» =)
Спасибо, поправил.