RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Боковая панель


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:transmission


Torrent: Установка Transmission в CentOS 7

Transmission

Установка и базовая настройка

Смотрим доступные пакеты

# yum search transmission 

---CUT---

transmission-cli.x86_64 : Transmission command line implementation
transmission-common.x86_64 : Transmission common files
transmission-daemon.x86_64 : Transmission daemon
transmission-gtk.x86_64 : Transmission GTK interface
transmission-qt.x86_64 : Transmission Qt interface
transmission.x86_64 : A lightweight GTK+ BitTorrent client

Устанавливаем transmission

# yum install transmission-daemon transmission-common

Запускаем и останавливаем transmission. При первом запуске будет создан конфигурационный файл /var/lib/transmission/.config/transmission-daemon/settings.json

# systemctl start transmission-daemon
# systemctl stop transmission-daemon

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

После перезапуска в settings.json вместо пароля будет указан его хэш.

По-умолчанию transmission сохраняет файлы в каталог /var/lib/transmission/Downloads

Все настройки связанные с web-доступом имеют префикс rpc-*.

rpc-bind-address: для тех у кого несколько интерфейсов или адресов
rpc-enabled: включает веб-доступ
rpc-whitelist-enabled: поставьте false или добавьте ваши адреса разделенные запятой в rpc-whitelist
rpc-authentication-required: требовать аутентификацию
rpc-password: пароль
rpc-username: логин

Снова запускаем transmission и добавляем в автозагрузку

# systemctl start transmission-daemon
# systemctl enable transmission-daemon

Смотрим через lsof работает ли демон

# lsof -i tcp:9091

Пробуем перейти по адресу http://torrents.example.com:9091

Если вам не нужен SSL, но хочется заходить в веб-интерфейс без указания порта, то можно изменить rpc-port в settings.json, указав вместо 9091 порта стандартный http 80 порт.

Но тут нас ждёт сюрприз. Это не сработает, т.к. порты <1024 являются привилегированными портами и доступны только пользователю root. Об этом можно почитать в RFC4340 (пункт 19.9 Port Numbers Registry) или на stackexchange.

Поэтому запускаем сервис от root'а либо разрешаем работать на привилегированном порту через CAP_NET_BIND_SERVICE

# setcap cap_net_bind_service+ep /usr/bin/transmission-daemon

Если вам нужен SSL, то смотрите ниже пример для Apache и Nginx.

Firewall

iptables -A INPUT -m state --state RELATED,ESTABLISHED -p udp --dport 51413 -j ACCEPT
iptables -A OUTPUT -p udp --sport 51413 -j ACCEPT

-A INPUT -p tcp -m tcp --dport 9091 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 51413 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 49153:65534 -j ACCEPT
==> /etc/firewalld/services/transmission.xml <==
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Transmission Daemon</short>
  <description>Transmission Daemon provides an interface to manage Transmission BitTorrent client.</description>
  <port protocol="tcp" port="9091"/>
</service>

Apache SSL

1) torrents.example.com

/etc/httpd/conf.d/transmisssion.conf

Self-signed сертификат создаём командой

# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -out /etc/ssl/certs/torrent.crt -keyout /etc/ssl/certs/torrent.key
<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName torrents.example.com
    
    ErrorLog logs/torrents.example.com-error_log
    CustomLog logs/torrents.example.com-access_log common

    RewriteEngine On

    RewriteCond %{SERVER_PORT} =80
    RewriteRule ^/(.*)$ https://%{SERVER_NAME}:443/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
    ServerAdmin admin@example.com
    ServerName torrents.example.com

    ErrorLog logs/torrents.example.com-ssl_error_log
    CustomLog logs/torrents.example.com-ssl_access_log common

    SSLEngine On
    SSLCertificateFile "/etc/ssl/certs/torrent.crt"
    SSLCertificateKeyFile "/etc/ssl/certs/torrent.key"

    ProxyPass        / http://torrents.example.com:9091/
    ProxyPassReverse / http://torrents.example.com:9091/
</VirtualHost>

2) https://example.com/torrents/

<VirtualHost *:80>
        ServerName example.com
        ServerAlias www.example.com
        Redirect permanent / https://example.com/torrents
</Virtualhost>

<VirtualHost *:443>
        ServerName example.com
        ServerAlias www.example.com
        Redirect permanent / https://example.com/transmission

        RewriteEngine on
        RewriteRule /transmission[/]?$ /transmission/web/ [R=permanent]

        SSLEngine on
        SSLCertificateFile    /etc/ssl/certs/torrent.crt
        SSLCertificateKeyFile /etc/ssl/certs/torrent.key
        
        SSLProxyEngine On ???
        SSLProxyCheckPeerCN on ???
        SSLProxyCheckPeerExpire on ???
 
        ProxyRequests On
        ProxyPreserveHost Off 
        
        <Proxy *>
        Order allow,deny
        Allow from all 
        </Proxy>

        ProxyPass /transmission http://127.0.0.1:9091/transmission
        ProxyPassReverse /transmission http://127.0.0.1:9091/transmission
</Virtualhost>

Дополнительная защита паролем

<Location /transmission/web/>
  AuthType Basic
  AuthName "Password Required"
  AuthUserFile <full path to password file>
  Require valid-user
</Location>
# a2enmod proxy proxy_http rewrite ssl

SSLStrictSNIVHostCheck off

SSL

nginx SSL/HTTP2

upstream transmission {
      server 127.0.0.1:9091;
}

server {
    listen 443 ssl http2;
    server_name example.com;
    auth_basic            "No pasaran!";
    auth_basic_user_file  /var/www/myWebSite/web/.htpasswd;
      
    # Path to the root of your installation
    error_log /var/www/myWebSite/logs/error.log;
    access_log /var/www/myWebSite/logs/access.log;
      
    ### SSL files ###
    ssl_certificate /var/www/myWebSite/ssl/advert.crt;
    ssl_certificate_key /var/www/myWebSite/ssl/advert.key;

    ### Add SSL specific settings here ###
    ssl_session_timeout 10m;
      
    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
    ssl_prefer_server_ciphers on;
      
    location / {
        return 301 https://$server_name/transmission/;
    }
      
    location ^~ /transmission { 
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        proxy_pass_header X-Transmission-Session-Id;
        add_header Front-End-Https on;
      
    location /transmission/rpc {
        proxy_pass http://transmission;
    }
    location /transmission/web/ {
        proxy_pass http://transmission;
    } 
    location /transmission/upload {
        proxy_pass http://transmission;
    }
    location /transmission/web/style/ {
        alias /usr/share/transmission/web/style/;
    } 
    location /transmission/web/javascript/ {
        alias /usr/share/transmission/web/javascript/;
    }
    location /transmission/web/images/ {
        alias /usr/share/transmission/web/images/;
    }        
    location /transmission/ {
        return 301 https://$server_name/transmission/web;
    }
  }
}

Transmission Remote GUI

https://sourceforge.net/projects/transgui/

Вот так выглядит remote GUI

Веб-интерфейс

При работе по httpS на 443 порту возникает ошибка Connection reset by peer. При работе на стандартном порту 9091 такой ошибки нет.

Нашел аналогичную проблему на sourceforge. В качестве решения предлагают увеличить Data refresh interval.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/transmission.txt · Последнее изменение: 2017/09/25 14:15 (внешнее изменение)