Aller au contenu

Sécuriser l'accès à transmission web interface avec Apache

  • Installer transmission-daemon et son interface web

  • Créer une entrée DNS chez le registrar, par exemple bt.domain.fr

  • Générer un utilisateur pour Apache avec cette commande :
    htpasswd /etc/apache2/.htpasswd utilisateur

  • Si besoin, générer un autre utilisateur avec la commande :
    htpasswd -c /etc/apache2/.htpasswd utilisateur2

  • Donner le droit de lecture à ce fichier avec ces commandes : chown root:www-data /etc/apache2/.htpasswd chmod 640 /etc/apache2/.htpasswd

  • Créer un hôte virtuel sur le serveur dans /etc/apache2/sites-available/ qui s'appelera par exemple bt.domain.fr.conf contenant ceci :

<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName bt.domain.fr

    ProxyPass / http://127.0.0.1:9091/
    ProxyPassReverse / http://127.0.0.1:9091/

    <Location />
        AuthType Basic
        AuthName "Transmission Web Interface"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Location>

    ErrorLog ${APACHE_LOG_DIR}/transmission_error.log
    CustomLog ${APACHE_LOG_DIR}/transmission_access.log combined

SSLCertificateFile /etc/letsencrypt/live/bt.domain.fr/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/bt.domain.fr/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
</VirtualHost>
</IfModule>
  • Activer cet hôte avec la commande a2ensite bt.domain.fr.conf

  • Générer un certificat pour SSL :
    certbot --apache -d bt.domain.fr

  • Tester l'accès à l'interface web de Transmission. Si tout fonctionne, il est possible de désactiver l'authentification native sur le port 9091 pour ne permettre que le passage par le proxy Apache. Pour cela, modifier le fichier /etc/transmission-daemon/settings.json à la rubrique rpc-bind-address afin qu'il n'écoute que 127.0.0.1

Attention !

Arrêter d'abord le service sinon les modifications faites au fichier de configuration seront écrasées !

Avant : "rpc-bind-address": "0.0.0.0",
Après : "rpc-bind-address": "127.0.0.1",