septembre 2026·Homelab — Projet personnelAutomatisé

Automatisation d'un incident Docker récurrent (qBittorrent / Gluetun)

Diagnostic d'une liaison réseau de conteneurs devenue obsolète après mise à jour, puis mise en place d'une vérification automatique planifiée.

  • Docker / Docker Compose
  • Réseau de base
  • Diagnostic et dépannage

Résumé

Certaines mises à jour de mon environnement Docker recréaient le conteneur Gluetun et pouvaient laisser qBittorrent lié à un ancien namespace réseau. Après diagnostic avec les états et inspections Docker, j’ai mis en place, avec assistance, une vérification automatisée qui détecte la liaison obsolète et recrée qBittorrent si nécessaire.

Contexte

qBittorrent est exécuté dans Docker et partage le namespace réseau d’un conteneur Gluetun utilisé comme passerelle VPN (WireGuard) :

network_mode: "service:gluetun"

Le problème

Après certaines mises à jour ou recréations de Gluetun :

  • Gluetun obtenait un nouvel identifiant de conteneur ;
  • qBittorrent pouvait conserver une référence vers l’ancien namespace ;
  • qBittorrent restait alors en état created ou ne démarrait plus correctement.

Un simple docker restart de qBittorrent ne suffisait pas toujours.

Diagnostic

Vérifications utilisées :

docker ps
docker inspect

Points contrôlés :

  • identifiant du conteneur Gluetun ;
  • état healthy de Gluetun ;
  • NetworkMode de qBittorrent ;
  • état du conteneur qBittorrent ;
  • logs.

Le constat central : quand Gluetun était recréé, la référence réseau de qBittorrent devenait obsolète, ce qui nécessitait parfois de recréer qBittorrent (par exemple via --force-recreate) plutôt que de le redémarrer.

Intervention

Pour éviter que le problème revienne, une automatisation a été mise en place sous forme de script (/usr/local/sbin/fix-qbittorrent-gluetun.sh) :

  • verrouillage via flock pour éviter les exécutions simultanées ;
  • attente de l’état healthy de Gluetun ;
  • comparaison du namespace/réseau attendu avec le NetworkMode de qBittorrent ;
  • recréation/correction de qBittorrent lorsque la liaison est obsolète.

Validation du script :

bash -n /usr/local/sbin/fix-qbittorrent-gluetun.sh

puis exécution et vérification du comportement Docker.

Planification via cron (/etc/cron.d/qbittorrent-gluetun-fix), toutes les 5 minutes ; le service cron a été redémarré et son état vérifié comme actif.

Résultat

Le NAS vérifie automatiquement, toutes les 5 minutes, que qBittorrent pointe toujours vers le bon environnement réseau, et corrige le problème lorsqu’il est détecté.

Ce que ce projet m’a appris

Redémarrer un service corrige le symptôme ; comprendre pourquoi il casse permet de rendre la correction durable. C’est le réflexe que je veux garder en support : chercher la cause, pas seulement rétablir le service.

Technologies

Docker / Compose · inspection et logs de conteneurs · réseau de conteneurs · VPN WireGuard via Gluetun · Bash · cron.


← Tous les projets