12 KiB
title, description
| title | description |
|---|---|
| Qbittorrent | Installer qBittorrent avec Gluetun et ProtonVPN pour télécharger des torrents de manière sécurisée derrière un VPN sur votre serveur auto-hébergé. |
:ellipsis{left=0px width=40rem top=10rem blur=140px zIndex=60}
Qbittorrent
::note 🎯 Objectifs :
- Installer et configurer Qbittorrent
- Etre relié au réseau bittorent en toute sécurité avec Gluetun et Proton VPN ::
Afin de télécharger vos media favoris en toute sécurité, nous allons monter un système à base de :
- Qbittorent comme logiciel de téléchargement bittorent
- Proton VPN Plus, VPN pour sécuriser vos échanges, auquel vous devez souscrire (il y a de nombreux codes promo) pour accéder au protocole Bittorent, mais vous pouvez également en choisir un autre, à condition qu'il propose le protocole bittorent.
- Gluetun
- Qbittorrent port update pour mettre automatiquement à jour le port de votre VPN (qui change régulièrement).
- Et le mode vuetorrent pour une interface moderne et intuitive.
Nous monterons ici le système ci-dessous :
Configuration
Structure des dossiers
root
├── docker
│ └── seedbox
│ ├── qbittorrent
│ │ └── config
│ ├── gluetun
│ ├── compose.yaml
│ └── .env
│
└── media #relié à plex et Qbittorrent
├── downloads #vos téléchargements génériques, à selectionner dans les parametres
├── movies #à selectionner dans l'interface pour télécharger vos films
└── tvseries #à selectionner dans l'interface pour télécharger vos séries
Si ce n'est pas déjà fait, créez le dossier downloads dans /media :
mkdir -P /media/downloads
Ouvrez Dockge, cliquez sur compose et nommez la stack seedbox. Collez la config ci-dessous :
---
services:
qbit:
image: ghcr.io/linuxserver/qbittorrent:libtorrentv1
container_name: qbittorrent
restart: unless-stopped
network_mode: service:gluetun
mem_limit: 4g
environment:
- DOCKER_MODS=ghcr.io/gabe565/linuxserver-mod-vuetorrent|ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod:main
- TZ=Europe/Paris
- PUID=${PUID}
- PGID=${GUID}
- WEBUI_PORT=${UI_PORT}
- GSP_GTN_API_KEY=${GSP_KEY}
- GSP_QBT_USERNAME=${ID}
- GSP_QBT_PASSWORD=${PW}
volumes:
- /docker/seedbox/qbittorrent/config:/config
- /media:/media
depends_on:
- gluetun
gluetun:
image: qmcgaw/gluetun:v3.41.3
container_name: gluetun
restart: unless-stopped
mem_limit: 4g
volumes:
- /docker/gluetun/config.toml:/gluetun/auth/config.toml:ro
devices:
- /dev/net/tun:/dev/net/tun
ports:
- ${UI_PORT}:5695 # Port de la web-ui
- 8000:8000 # Port de controle de Gluetun
cap_add:
- NET_ADMIN
environment:
- TZ=Europe/Paris
- VPN_SERVICE_PROVIDER=protonvpn
- VPN_PORT_FORWARDING=on
- VPN_PORT_FORWARDING_PROVIDER=protonvpn
- VPN_TYPE=wireguard
- WIREGUARD_PRIVATE_KEY=${PR_KEY}
- SERVER_COUNTRIES=France
- PORT_FORWARD_ONLY=on
::tip{icon=""} ✨ Astuce : ajoutez le label de watchtower dans chaque conteneur afin d'automatiser les mises à jour
```yaml
services:
qbittorrent:
#...
labels:
- com.centurylinklabs.watchtower.enable=true
gluetun:
#...
labels:
- com.centurylinklabs.watchtower.enable=true
```
::
Avant de renseigner le .env dans Dockge, nous allons configurer la mise à jour du port de téléchargement. En effet, Proton, et la plupart des VPN, changent régulièrement le port de téléchargement, et celui-ci doit etre communiqué à Qbitorrent.
Pour ce faire, nous avons ajouté le mod ghcr.io/t-anc/gsp-qbittorent-gluetun-sync-port-mod dans le conteneur.
Il faut à présent permettre au mod de récupérer l'information via Gluetun, qui n'accepte que les communications chiffrées via son API.
A cet effet, ouvrez un terminal. Nous allons à présent générer une clé d'authentification :
sudo docker run --rm qmcgaw/gluetun genkey
Notez la clé. Puis créez le dossier /docker/gluetun
sudo mkdir /docker/gluetun
Et créez le fichier config.toml
sudo nano /docker/gluetun/config.toml
Éditez le comme suit en ajoutant la clée que vous avez générée :
[[roles]]
name = "t-anc/GSP-Qbittorent-Gluetun-sync-port-mod"
routes = ["GET /v1/portforward"]
auth = "apikey"
apikey = "votre_clée" # clée que vous avez générée précédemment
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}. Rendez-vous dans Dockge, et renseignez les variables dans .env:
PUID=
GUID=
UI_PORT=
PR_KEY=
GSP_KEY= # la clé que vous avez générée et renseignée dans config.toml
ID=
PW=
En détails :
| Variable | Valeur | Exemples |
|---|---|---|
PUID{lang=properties} |
A renseigner avec les infos de votre user (trouvables via la commande id nomdutilisateur{lang=shell}) |
1000 |
GUID{lang=properties} |
A renseigner avec les infos de votre user (trouvables via la commande id nomdutilisateur{lang=shell}) |
1000 |
UI_PORT{lang=properties} |
Le port d'accès à la web ui, elle sera joignable via http//ipduserveur:port |
5695 |
PR_KEY{lang=properties} |
La clée privée fournie par Proton | buKsjNHLyzKMM1qYnzOy4s7SHfly |
GSP_KEY{lang=properties} |
Clé que vous avez générée pour la mise à jour du port | MnBa47MeVmk7xiv |
ID{lang=properties} |
username que vous utilisez pour vous logger dans l'interface de Qbittorrent | user |
PW{lang=properties} |
mot de passe que vous utilisez pour vous logger dans l'interface de Qbittorrent | password |
Déploiement
Une fois fait, déployez le conteneur.
::warning
Dans les logs de lancement, vous trouverez un mot de passe temporaire pour l'utilisateur admin
::
Loggez vous sur http://ipduserveur:5695 (ou le port que vous avez configuré).
::caution
En cas d'échec : vérifiez les règles de votre pare-feu. ::
Changez votre nom d'utilisateur et votre mot de passe dans les paramètres "webui".
Et voilà ! Dans les paramètres de Qbittorrent, dans "téléchargements" selectionnez /media/downloads comme chemin par défaut pour télécharger vos media.
Lorsque vous lancez un téléchargement, n'oubliez pas de préciser le bon répertoire de téléchargement afin que Plex puisse synchroniser correctement sa bibliothèque (/media/movies et /media/tvseries). Vous pouvez aussi l'automatiser en créant une catégorie et un répertoire associé.
Exposer la webui
::warning
Qbitorrent n'utilise pas d'authentification multifacteur. Exposer Qbitorrent sur internet pourrait compromettre les machines auxquelles il est relié. Ne le faite que si vous utilisez un systeme d'authentification multifacteur comme Authentik. Sinon, n'exposez pas avec SWAG et utilisez plutôt un VPN comme Wireguard. ::
Afin de lancer des téléchargement hors de chez vous, sans VPN, vous pouvez exposer la webui de Qbittorrent.
::note
Nous partons du principe que vous avez le sous-domaine seedbox.mondomaine.fr avec un CNAME qui pointe vers mondomaine.fr dans zone DNS. Et que bien sûr, à moins que vous utilisiez Cloudflare Zero Trust, le port 443 de votre box pointe bien sur le port 443 de votre serveur dans les règles NAT.
::
Rendez-vous dans dockge, et éditez le compose de SWAG en ajoutant le réseau de Gluetun :
services:
swag:
container_name: # ...
# ...
networks: # Relie le conteneur au réseau custom
# ...
- seedbox # Nom du réseau déclaré dans la stack
networks: # Définit le réseau custom
# ...
seedbox: # Nom du réseau déclaré dans la stack
name: seedbox_default # Nom véritable du réseau externe
external: true # Précise que c'est un réseau à rechercher en externe
Relancez la stack en cliquant sur "déployer" et patientez le temps que SWAG soit complètement opérationnel.
::note
Ici nous partons du principe que le nom du réseau de la seedbox est seedbox_default. Vous pouvez vérifier que la connexion est opérationnelle en visitant le dashboard de SWAG en tapant http://ipduserveur:81.
::
Puis nous allons créer et éditer le fichier seedbox.subdomain.conf.
::tip{icon=""} ✨ Astuce pour les allergiques au terminal : vous pouvez utiliser File Browser pour naviguer dans vos fichier et éditer vos documents au lieu d'utiliser les commandes du terminal. ::
sudo nano /docker/swag/config/nginx/proxy-confs/seedbox.subdomain.conf
Copiez la configuration ci-dessous, en prenant soin de vérifier le port :
## Version 2023/12/19
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name seedbox.*;
include /config/nginx/ssl.conf;
client_max_body_size 0;
#if ($lan-ip = yes) { set $geo-whitelist yes; }
#if ($geo-whitelist = no) { return 404; }
if ($geo-blacklist = no) { return 404; }
# enable for ldap auth (requires ldap-location.conf in the location block)
#include /config/nginx/ldap-server.conf;
# enable for Authelia (requires authelia-location.conf in the location block)
#include /config/nginx/authelia-server.conf;
# enable for Authentik (requires authentik-location.conf in the location block)
#include /config/nginx/authentik-server.conf;
location / {
# enable the next two lines for http auth
#auth_basic "Restricted";
#auth_basic_user_file /config/nginx/.htpasswd;
# enable for ldap auth (requires ldap-server.conf in the server block)
#include /config/nginx/ldap-location.conf;
# enable for Authelia (requires authelia-server.conf in the server block)
#include /config/nginx/authelia-location.conf;
# enable for Authentik (requires authentik-server.conf in the server block)
#include /config/nginx/authentik-location.conf;
include /config/nginx/proxy.conf;
include /config/nginx/resolver.conf;
set $upstream_app gluetun;
set $upstream_port 5555;
set $upstream_proto http;
proxy_pass $upstream_proto://$upstream_app:$upstream_port;
}
}
::tip
✨ Vous pouvez protéger cette app avec Authentik en retirant les # devant include /config/nginx/authentik-server.conf;{lang=nginx} et include /config/nginx/authentik-location.conf;{lang=nginx}. N'oubliez pas de créer une application et un fournisseur dans Authentik.
::
Enregistrez avec :kbd{value="Ctrl+O"} puis :kbd{value="Entrée"}, puis quittez avec :kbd{value="Ctrl+X"}.
Patientez quelques minutes puis tapez dans votre navigateur https://seedbox.mondomaine.fr, vous arriverez sur l'interface de Qbittorrent.
Et voilà, vous avez un mediacenter pret à l'emploi !
