Installer Deluge avec Docker
Guide d'installation de Deluge sous Docker.
Au sommaire :
- 1-Qu'est-ce que Deluge ?
- 2-Prérequis
- 3-Déploiement
- 4-Configuration
- 5-Exposer son instance avec Traefik et Authelia
1-Qu'est-ce que Deluge ?
Deluge est un client-serveur BitTorrent multiplateforme sous Linux, Windows, macOS, BSD Unix et Docker.
C'est un logiciel libre sous licence GNU GPLv3+ qui fonctionne comme client bureautique/web et en ligne de commande.
Enfin, il supporte des fonctionnalités communes aux clients BitTorrent telles que :
- Le cryptage de protocole.
- La DHT.
- La découverte de pairs locaux (LSD).
- L'échange de pairs (PEX).
- Les protocoles UPnP et NAT-PMP.
- La prise en charge de proxy.
- Les web seeds.
- les limites de vitesse globales et par torrent.
J'aurai pu choisir également Transmission, RuTorrent ou QBittorent mais c'est celui que j'utilise et je documente uniquement ce que j'utilise au quotidien mais l'usage et les fonctionnalités reste les mêmes.
2-Prérequis
Pour déployer Deluge, vous devez disposer d'une machine virtuelle fonctionnant sous Ubuntu Server.
Création de la machine virtuelle :
Virtualisation avec Proxmox VE : Si vous partez de zéro, suivez mon guide détaillé pour virtualiser Ubuntu sur Proxmox VE avec des réglages optimisés.
Automatisation avec Cloud-Init : Pour gagner du temps lors de la configuration, utilisez un template Cloud-Init. Cela permet d'automatiser et de simplifier l'initialisation de vos machines virtuelles. Retrouvez les instructions dans ce guide.
Installation des outils nécessaires :
Docker et Docker Compose : Une fois la machine virtuelle prête, installez Docker et Docker Compose, indispensables pour gérer et orchestrer vos conteneurs. Ce guide vous accompagnera dans l'installation.
Sécurisation et exposition de l'application :
Proxy inverse avec Traefik : Pour exposer vos applications sur Internet de manière sécurisée, configurez un proxy inverse. Traefik est une solution recommandée. Suivez ce guide pour l'installation.
Gestion des accès avec Authelia : Pour renforcer la sécurité, implémentez une solution de gestion des accès telle qu'Authelia. Ce guide vous fournira les étapes nécessaires :
3-Déploiement
Commencez par créer un dossier "docker" à la racine du dossier utilisateur"
mkdir -p ~/docker
Créez un fichier nommé "compose.yml"
touch ~/docker/compose.yml
Ouvrez le fichier "compose.yml" et copiez cette configuration.
networks:
default:
driver: bridge
services:
deluge:
image: lscr.io/linuxserver/deluge:latest
container_name: deluge
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
DELUGE_LOGLEVEL: error #optional
volumes:
- ${APPDATA}/deluge:/config
- ${DOWNLOADS}:/downloads
ports:
- 8112:8112
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
- network : en bridge (l'adresse IP sera celle de la machine virtuelle ou du conteneur LXC)
- services : c'est là qu'il faudra ajouter les configurations de vos conteneurs
- image : nom du registry suivi du nom de l'application (lscr.io/linuxserver/deluge)
- container_name : le nom du conteneur, sinon Docker en choisira un de manière aléatoire (mieux vaut le nommer vous même)
- environment : il y a les variables de base (PUID, PGID, TZ) et une variable spécifique à l'application (DELUGE_LOGLEVEL) qui permet d'obtenir des logs si besoin
- volumes : variable ${APPDATA) (/home/user_name/appdata) suivi du nom de l'application (/deluge) et ${DOWNLOADS} pour vos téléchargements
- ports : 8112 pour l'interface d'administration et 6181 pour le trafic entrant
- restart : unless-stopped par défaut. Le daemon de Docker redémarrera automatiquement le conteneur sauf si vous l'arretez, il faudra le démarrer manuellement
Enregistrez le fichier "compose.yml" et déployez le conteneur.
docker compose up -d
4-Configuration
Tapez l'adresse IP de l'interface web du conteneur dans votre navigateur (http://<ip-address>:8112).
Ensuite, tapez "deluge" comme mot de passe (c'est celui par défaut).
Dans "Connexion manager", sélectionnez "localclient@127.0.0.1:58846" pour vous connecter au processus duc conteneur.
Choisissez la langue que vous souhaitez et changez le mot de passe par défaut par celui que vous souhaitez.
Félicitation!!!! Vous avez désormais accès à votre client web à travers votre navigateur web.
Vous pouvez également activer et installer des plugins.
Lorsque vous installez des plugins, vérifiez bien quelles soient compatibles avec la version web et la dernière version en date (v2.x).
Voici quelques plugins compatibles.
Celui-ci est très intéressant. Je vous ferai un retour dessus à l'occasion.
5-Exposer son instance avec Traefik et Authelia
Voici la configuration avec Traefik et Authelia.
Cochez la section ports si vous ne souhaitez pas accéder à l'application en local.
Ensuite, si vous avez suivi les guides de Traefik et Authelia, il vous faudra ajouter les labels adéquat pour pouvoir exposer l'application sur internet et activer l'authentification SFA ou MFA.
Comme d'habitude, suivez les parties 6 et 7 du guide de Traefik pour ouvrir les ports de votre box internet et ajouter les entrées DNS pour pouvoir accéder à l'application.
Et n'oubliez JAMAIS :
- D'éditer le fichier "configuration.yml" de Authelia.
- D'ajouter le nom de domaine de l'application
- De redémarrer l'application avec "docker compose restart authelia" pour que la modification soit prise en compte.
networks:
# default network
default:
driver: bridge
# Traefik network
web:
name: web
driver: bridge
services:
traefik:
container_name: traefik
image: traefik:v2
restart: always
networks:
- web
ports:
- 80:80
- 443:443
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ${APPDATA}/traefik/traefik.yml:/traefik.yml
- ${APPDATA}/traefik/dynamic.yml:/dynamic.yml
- ${APPDATA}/traefik/letsencrypt/acme.json:/acme.json
- ${APPDATA}/traefik/shared:/shared
labels:
- traefik.enable=true
- traefik.http.routers.traefik.entrypoints=websecure
- traefik.http.routers.traefik.rule=Host(`traefik.<domain_name>`)
- traefik.http.routers.traefik.service=api@internal
- "traefik.http.routers.traefik.middlewares=middlewares-basic-auth@file"
authelia:
image: authelia/authelia
container_name: authelia
volumes:
- ${APPDATA}/authelia:/config
networks:
- web
labels:
- traefik.enable=true
- traefik.http.routers.authelia.entrypoints=websecure
- traefik.http.routers.authelia.rule=Host(`authelia.<domain_name>`)
- traefik.http.routers.authelia.tls.certresolver=letsencrypt
ports:
- 9091:9091
restart: unless-stopped
healthcheck:
disable: true
environment:
- TZ=${TZ}
deluge:
image: lscr.io/linuxserver/deluge:latest
container_name: deluge
environment:
PUID: ${PUID}
PGID: ${PGID}
TZ: ${TZ}
DELUGE_LOGLEVEL: error #optional
volumes:
- ${APPDATA}/deluge:/config
- ${DOWNLOADS}:/downloads
ports:
- 8112:8112
- 6881:6881
- 6881:6881/udp
restart: unless-stopped
labels:
- traefik.enable=true
- traefik.http.routers.deluge.entrypoints=websecure
- traefik.http.routers.deluge.tls.certresolver=letsencrypt
- traefik.http.routers.deluge.rule=Host(`deluge.<domain_name>`)
- traefik.http.routers.deluge.service=deluge-svc
- traefik.http.services.deluge-svc.loadbalancer.server.port=8112
- 'traefik.http.routers.deluge.middlewares=chain-authelia@file'