Deluge

Ubuntu 18.04 LTS – Installation de Deluge avec OpenVPN, Nginx, Docker et SSL/TLS

Deluge est un client BitTorrent multiplateforme libre basé sur libtorrent. Il est réputé pour sa stabilité, sa vitesse et son côté poids plume et dispose d’une interface claire et intuitive. Enfin il s’avère extrêmement modulable grâce à la possibilité de lui ajouter de nombreux plugins.

Deluge sera accessible depuis l’extérieur via Nginx utilisé comme reverse proxy et sera sécurisé grâce à un certificat SSL/TLS délivré par Let’s Encrypt.

1 – Prérequis

  • Vous devez disposer d’Ubuntu 18.04 LTS.
  • Votre utilisateur doit avoir accès à sudo.
  • Les paquets curl et software-properties-common doivent être installés sur votre système. Dans le doute, tapez la commande suivante :

Si vous ne possédez pas de serveur dédié ou de nom de domaine, je vous conseille les VPS de 1&1. Les serveurs sont rapides (basés en France), fiables et surtout très abordables. Les formules Cloud S ou Cloud M sont amplement suffisantes.

2 – Installation de Docker & Docker Compose

  • Ajoutez la clé GPG du dépôt officiel de Docker à votre système :
  • Ajoutez Docker à vos dépôts APT :
  • Mettez à jour la liste des fichiers disponibles dans vos dépôts APT :
  • Installez Docker CE :
  • Vérifiez que Docker est correctement installé avec la commande sudo systemctl status docker :
  • Téléchargez Docker Compose avec la commande suivante en modifiant la version si besoin avec la dernière release du repository officiel de Docker :
  • Ajoutez les droits d’exécution sur le binaire de Docker Compose :
  • Vérifiez l’installation de Docker Compose avec la commande docker-compose -v :

3 – Droits Unix

Il est recommandé, pour des raisons de sécurité, de créer un utilisateur dédié à la gestion du volume Docker Deluge et de ne pas le lancer sous votre super-utilisateur.

  • Créez un utilisateur deluge :
  • Ajoutez-le au groupe docker :

4 – Création du volume Deluge

Trois possibilités s’offrent à vous concernant les volumes Docker. Les deux premières, fortement recommandées, consistent à utiliser une image Docker composée de Deluge et d’OpenVPN. Cette image permet, de façon transparente et sécurisée, de télécharger vos torrents via une interface VPN. Elle dispose aussi de règles iptables qui font en sorte que si, pour une raison ou une autre, le VPN venait à tomber, les téléchargements seraient interrompus et votre véritable IP ne serait pas dévoilée.

Cette image Docker fonctionne uniquement avec les VPN AirVPN et Private Internet Access (PIA). Quelque soit votre choix entre ces deux fournisseurs, vous disposerez d’un VPN rapide, stable, fortement chiffré, confidentiel (aucune conservation d’historique) et adapté au P2P. Cependant, je recommande l’utilisation d’AirVPN qui permet, contrairement à PIA, de choisir son serveur VPN en fonction de la localisation et de la charge et ainsi d’obtenir de meilleurs performances.

La dernière possibilité est de s’affranchir du VPN et d’utiliser une image contenant simplement Deluge. Sachez simplement que votre IP sera visible et que vos téléchargements ne seront ni chiffrés, ni anonymes…

…avec AirVPN (choix recommandé)

  • Connectez-vous sous l’utilisateur deluge et déplacez-vous dans le répertoire personnel de cet utilisateur :
  • Créez le fichier /home/deluge/docker-compose.yml et modifiez les lignes en surbrillance en fonction de votre configuration :

    • PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur deluge. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID (=uid) et GUID (=gid) de votre utilisateur deluge :
    • /home/deluge/config:/config : chemin absolu des répertoires partagés entre votre système et le container docker. La première partie /home/deluge/config (avant le séparateur « : ») représente le chemin où le fichier de configuration sera stocké sur votre système. La deuxième partie /config représente le chemin du fichier de configuration à l’intérieur du container docker. Cette dernière ne doit pas être modifiée.
    • /home/deluge/downloads:/data : même principe mais pour l’emplacement de vos fichiers téléchargés.

    Il est important que l’utilisateur deluge ait les droits de lecture et d’écriture dans les répertoires de votre système que vous spécifiez.

  • Téléchargez et démarrez une première fois le container deluge pour forcer la création du répertoire dédié aux fichiers de configuration /home/deluge/config :
  • Générez un fichier de configuration OpenVPN sur AirVPN. Pour cela, connectez-vous sur votre espace client AirVPN, rendez-vous dans Client Area → Config Generator.

    Choisissez tout d’abord le système Linux, puis le serveur où vous souhaitez vous connecter (choisissez un pays plutôt qu’un serveur en particulier). Cochez le protocole UDP, acceptez les conditions générales d’utilisation et, enfin, télécharchez le fichier de configuration en cliquant sur le bouton Generate.

  • Copiez le fichier de configuration .ovpn précédemment obtenu dans le répertoire
    /home/deluge/config/openvpn.

    Le fichier .ovpn doit appartenir à l’utilisateur et au groupe deluge et doit avoir les permissions 755 ! Faîtes un chown et un chmod si besoin.

  • Redémarrez le container deluge :

  • Listez vos containers avec la commande $ docker ps -a :

…avec PIA

  • Connectez-vous sous l’utilisateur deluge et déplacez-vous dans le répertoire personnel de cet utilisateur :

  • Créez le fichier /home/deluge/docker-compose.yml et modifiez les lignes en surbrillance en fonction de votre configuration :

    • PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur deluge. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID (=uid) et GUID (=gid) de votre utilisateur deluge :
    • VPN_USER=pia_user et VPN_PASS=pia_password : utilisateur et mot de passe de votre compte PIA.
    • /home/deluge/config:/config : chemin absolu des répertoires partagés entre votre système et le container docker. La première partie /home/deluge/config (avant le séparateur « : ») représente le chemin où le fichier de configuration sera stocké sur votre système. La deuxième partie /config représente le chemin du fichier de configuration à l’intérieur du container docker. Cette dernière ne doit pas être modifiée.
    • /home/deluge/downloads:/data : même principe mais pour l’emplacement de vos fichiers téléchargés.

    Il est important que l’utilisateur deluge ait les droits de lecture et d’écriture dans les répertoires de votre système que vous spécifiez.

  • Téléchargez et démarrez une première fois le container deluge pour forcer la création du répertoire dédié aux fichiers de configuration /home/deluge/config :
  • Téléchargez les certificats et fichiers de configuration de PIA à l’adresse suivante : https://www.privateinternetaccess.com/openvpn/openvpn.zip.
  • Décompressez l’archive et copiez les certificats crl.rsa.2048.pem, ca.rsa.2048.crt et le fichier de configuration OpenVPN .ovpn de votre choix dans le répertoire /home/deluge/config/openvpn.

    Vérifiez bien que vous ayez uniquement ces 3 fichiers dans le répertoire. Un seul fichier de configuration OpenVPN .ovpn doit être présent.

    Ces fichiers doivent appartenir à l’utilisateur et au groupe deluge et doivent avoir les permissions 755 ! Faîtes un chown et un chmod si besoin.

  • Redémarrez le container deluge :

  • Listez vos containers avec la commande $ docker ps -a :

…sans VPN

  • Connectez-vous sous l’utilisateur deluge et déplacez-vous dans le répertoire personnel de cet utilisateur :

  • Créez le fichier /home/deluge/docker-compose.yml et modifiez les lignes en surbrillance en fonction de votre configuration :

    • PUID et GUID : ces deux variables représentent respectivement l’identifiant et le groupe de votre utilisateur deluge. Ces valeurs peuvent être différentes d’un système à l’autre. Tapez la commande suivante pour obtenir le PUID (=uid) et GUID (=gid) de votre utilisateur deluge :
    • /home/deluge/config:/config : chemin absolu des répertoires partagés entre votre système et le container docker. La première partie /home/deluge/config (avant le séparateur « : ») représente le chemin où le fichier de configuration sera stocké sur votre système. La deuxième partie /config représente le chemin du fichier de configuration à l’intérieur du container docker. Cette dernière ne doit pas être modifiée.
    • /home/deluge/downloads:/downloads : même principe mais pour l’emplacement de vos fichiers téléchargés.

    Il est important que l’utilisateur deluge ait les droits de lecture et d’écriture dans les répertoires de votre système que vous spécifiez.

  • Démarrez le container Deluge :
  • Listez vos containers avec la commande $ docker ps -a :

Si vous êtes en local, vous pouvez désormais accéder à Deluge via http://localhost:8112 (password : deluge).

5 – Reverse proxy avec Nginx

Si vous souhaitez accéder à Deluge de l’extérieur via une URL de type http://deluge.mondomaine.com/ alors un reverse proxy est nécessaire. Le reverse proxy remplit le rôle de passerelle entre l’extérieur (Internet) et le réseau local de votre serveur.

N’oubliez pas de modifier les règles DNS dans l’interface administrateur du fournisseur de votre nom de domaine pour pointer vers l’IP de votre serveur.

Notre choix se portera sur le serveur HTTP Nginx pour une question de performances. Nginx est reconnu pour ses hautes performances, sa stabilité, son ensemble de fonctionnalités, sa configuration simple ainsi que sa faible consommation en ressources.

  • Repassez sous votre super-utilisateur :
  • Installez le paquet nginx :
  • Modifiez les directives suivantes du fichier de configuration Nginx /etc/nginx/nginx.conf :

    • worker_processes 8; : l’un des paramètres à ajuster immédiatement est le worker_processes. Pour profiter pleinement de la puissance de votre serveur, il est recommandé de mettre autant de worker_processes que de cœurs disponibles sur votre serveur. Pour connaître le nombre de cœurs sur votre serveur, il suffit de lancer la commande :
    • server_tokens off; : pour des raisons de sécurité, il est recommandé de désactiver l’envoi d’informations telles que le numéro de version de votre Nginx. Pour cela, décommentez cette directive dans le bloc http.
  • Créez le virtual host /etc/nginx/sites-available/deluge et modifiez la ligne en surbrillance en fonction de votre configuration :
  • Activez le virtual host :
  • Rechargez la configuration Nginx :
    Deluge est désormais accessible via http://deluge.mondomaine.com (password : deluge).

(Facultatif) URL de type http://www.mondomaine.com/deluge

Si l’URL d’accès à votre Deluge n’est pas la racine de votre domaine (http://www.mondomaine.com/deluge par exemple), il est nécessaire de le configurer dans Deluge.

  • Connectez-vous avec l’utilisateur deluge et placez-vous dans le répertoire personnel de cet utilisateur :
  • Arrêtez le container deluge :
  • Modifiez la valeur de la propriété base dans le fichier de configuration de Deluge /home/deluge/config/web.conf :
  • Démarrez le container deluge :
  • Fermez la session de l’utilisateur deluge et revenez sous votre super-utilisateur :
  • Modifiez les lignes en surbrillance dans votre virtual host (/etc/nginx/sites-available/deluge) :
  • Rechargez la configuration Nginx :
    Deluge est désormais accessible via http://www.mondomaine.com/deluge.

6 – Sécuriser Deluge avec SSL/TLS

Let’s Encrypt est une autorité de certification libre, automatisée et ouverte. Cette autorité fournit des certificats gratuits X.509 pour le protocole cryptographique SSL/TLS au moyen d’un processus automatisé destiné à se passer du processus complexe actuel impliquant la création manuelle, la validation, la signature, l’installation et le renouvellement des certificats pour la sécurisation des sites internet. En mai 2018, Let’s Encrypt avait délivré plus de 70 millions de certificats.

6.1 – Installation

Installez les paquets software-properties-common et certbot :

6.2 – Génération des certificats

Let’s Encrypt permet de générer de différentes façons plus ou moins automatisées un certificat. La méthode standalone permet de générer simplement un certificat. En revanche, celle-ci demande d’arrêter le serveur Nginx et ceci est valable à chaque renouvellement dudit certificat. Il existe aussi des plugins apache et nginx entièrement automatisés. Ces plugins mettent à jour automatiquement la configuration des virtual hosts mais le plugin nginx est encore expérimental. Dans cet article, nous recommandons d’utiliser le plugin webroot qui permet de générer et renouveler son certificat sans interrompre le serveur Nginx.

Le plugin webroot crée un fichier temporaire .well-known/acme-challenge dans un dossier spécifique accessible à Nginx, celui-ci permettra aux serveurs de Let’s Encrypt d’appeler ce fichier temporaire et ainsi de valider votre certificat.

  • Créez le répertoire destiné au fichier temporaire de Let’s Encrypt :
  • Créez le fichier /etc/nginx/snippets/letsencrypt avec les lignes suivantes pour rediriger Let’s Encrypt vers le dossier local précédemment créé :

  • Importez le fichier précédemment créé dans votre virtual host :
  • Recharchez votre configuration Nginx :
  • Générez votre certificat en remplaçant email@mondomaine.com et deluge.mondomaine.com par vos informations personnelles :

    Vous obtiendrez 4 fichiers dans le répertoire /etc/letsencrypt/live/deluge.mondomaine.com :

    • cert.pem : le certificat de votre domaine deluge.mondomaine.com
    • chain.pem : le certificat Let’s Encrypt
    • fullchain.pem : les certificats cert.pem et chain.pem combinés
    • privkey.pem : la clé privée du certificat.
  • SSL/TLS utilise un système de chiffrement asymétrique (comme RSA ou Diffie-Hellman) afin de sécuriser les échanges de vos flux. Par défaut, Nginx utilise une clé de 1048 bits. En augmentant la longueur de la clé à 4096 bits, vous augmenterez ainsi la sécurité de votre protocole SSL/TLS. Générez une nouvelle clé Diffie-Hellman (DH) de 4096 bits et attribuez-lui un minimum de permissions :

6.3 – Renouvellement automatique du certificat

Les certificats délivrés par Let’s Encrypt sont valides 90 jours. L’outil certbot fournit une option renew permettant de renouveler l’ensemble des certificats présents sur votre serveur si et seulement si ceux-ci expirent dans moins de 30 jours.

Nous allons créer une règle crontab où le script de renouvellement sera planifié pour exécution tous les lundis à 23h42. Les traces liées à l’exécution du script seront enregistrées dans un fichier /var/log/le-renew.log.

  • Éditez la crontab :
  • Ajoutez la ligne suivante :
  • Sauvegardez et quittez.

6.4 – Vhost

  • Modifiez votre virtual host et les lignes en surbrillance en fonction de votre configuration :
  • Rechargez votre configuration Nginx :

7 – HTTP2

Je vous conseille vivement d’activer le nouveau protocole HTTP2 qui augmentera la sécurité et la rapidité de votre Deluge.

HTTP2 permet notamment :

  • la compression des headers des requêtes et des réponses réduisant la bande passante lorsque les headers (comme les cookies) sont similaires.
  • le multiplexage des requêtes au serveur consistant à faire passer de multiples informations via un seul tuyau de transmission. Ainsi, on économise les multiples connexions entre le client et le serveur. Les requêtes, quant à elles, sont effectuées simultanément par le navigateur. Les requêtes ne se suivent donc plus les unes derrière les autres (HTTP1) et les plus prioritaires (CSS par exemple) ne sont plus bloquées par les moins prioritaires (images par exemple).
  • le push des ressources du serveur au navigateur. Désormais, le serveur pourra envoyer l’ensemble des ressources référencées dans une même page (CSS, JS…), avant même que le navigateur n’ait analysé celle-ci.

L’activation du protocole HTTP2 est très simple et consiste en l’ajout de la directive http2 dans votre virtual host (/etc/nginx/sites-available/deluge) :

Une fois la modification effectuée, n’oubliez pas de recharger votre configuration Nginx :

8 – Configuration de Deluge

Les étapes de configuration qui vont suivre sont loin d’être exhaustives, vous pourrez jouer avec les labels et différents plugins mais celles-ci sont requises afin que Deluge puisse lancer vos futurs téléchargements avec succès et que celui-ci dispose d’un minimum de sécurité.

  1. Accédez à Deluge via https://deluge.mondomaine.com (password : deluge).
  2. Dans Preferences → Interface, modifiez le mot de passe par défaut :

    1
    2
    3
    4
    5
    1

    Renseignez votre ancien mot de passe

    2

    Renseignez votre nouveau mot de passe

    3

    Confirmez votre nouveau mot de passe

    4

    Cliquez sur Change

    5

    Cliquez sur Ok


  3. Dans Preferences → Downloads, vérifiez que le chemin de téléchargement pointe bien vers le dossier précisé dans votre fichier docker-compose.yml ou un sous-dossier de celui-ci. Dans le cas contraire, vous risquez d’obtenir des problèmes de permissions lors des téléchargements.

    1
    2
    3
    1

    Modifiez le chemin des téléchargements si besoin

    2

    Cliquez sur Apply

    3

    Cliquez sur Ok



Ubuntu 18.04 Server LTSDocker 18.06.0-ce
Docker Compose 1.21.2
Nginx 1.14.0
Deluge 1.3.15

AuteurEdouard WATTECAMPS

0 réponses

Répondre

Se joindre à la discussion ?
Vous êtes libre de contribuer !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.