Depuis de nombreuses semaines, je travaille à ce projet de couteau suisse pour Gluetun dont voici les principales fonctionnalités :
- Il benchmarke vos serveurs depuis le tunnel VPN lui-même, en mode sidecar sans redémarrer Gluetun, ou via le proxy HTTP intégré
- Chaque serveur est évalué sur le débit, la latence, le jitter, la perte de paquets, le DNS, l’historique et la stabilité réelle Le meilleur serveur peut être sélectionné automatiquement selon votre usage : équilibré, gaming, BitTorrent, DDL, téléchargement ou streaming
- Les pools de rotation permettent aussi de changer de serveur sans benchmark, en aléatoire, round-robin ou selon le meilleur débit historique
- Les profils VPN gèrent plusieurs fournisseurs, protocoles et configurations personnalisées, avec chiffrement des secrets et support WireGuard/OpenVPN
- Le catalogue Gluetun, l’import spécifique AirVPN et la gestion de serveurs Custom, la détection de nouveaux serveurs et l’exclusion des serveurs surchargés facilitent la maintenance au quotidien
- Companion gère les containers Docker liés à Gluetun : recréation après bascule, pause pendant les tests et mise à jour optionnelle des images
- Il peut vérifier les trackers BitTorrent, gérer le port forwarding VPN et synchroniser les ports avec qBittorrent ou rTorrent
- Historique, patterns horaires, notifications Discord/Apprise, API REST, endpoint Prometheus et dashboard Grafana complètent l’outil pour un vrai pilotage homelab
Le projet GitHub étant privé au moment de la rédaction de cet article, des logos sont indisponibles dans la WebUI et donc sur les screens.
Companion permet de tester à la demande ou de manière automatique (par période ou en continu), via le proxy HTTP de Gluetun ou via une copie de votre configuration Gluetun dans un container à part (mode sidecar) les serveurs qu’on lui ajoute : vitesse, latence, jitter, perte, DNS.
Il peut ensuite, manuellement ou automatiquement, configurer votre Docker Gluetun avec le serveur le plus optimal selon un ou plusieurs critères.
Le but étant par exemple de s’assurer d’utiliser un serveur VPN avec un débit adéquat pour du BitTorrent.
On peut également créer des pools de rotation : sélectionner des serveurs à la main ou via certains critères, pour les tester et les utiliser pour Gluetun plutôt que « tous les serveurs de mon fournisseur ».

Client d’AirVPN, l’outil est plus complet pour ce fournisseur puisqu’il permet de sélectionner directement depuis la WebUI un ou des serveurs.


Companion peut également importer les serveurs déjà configurés dans Gluetun tout comme ceux des providers compatibles Gluetun : https://github.com/qdm12/gluetun-servers

Au fil de l’eau, Gluetun « note » les serveurs testés en fonction du nombre de tests effectués

Et on peut bien entendu suivre l’historique des bascules entre serveurs, avec notifications Discord/Apprise au besoin.

Les fameux pools de rotation


De nombreuses options, pour tous les usages et goûts, la documentation liée est à portée de clic !







Statut : bêta. Gluetun Companion est encore en phase de test. Il est développé et éprouvé principalement avec AirVPN ; les autres fournisseurs ne sont quasiment pas testés en conditions réelles, même si la mécanique (catalogue, benchmark, bascule, gestion des containers) est strictement identique pour tous. Vos retours sont précieux.
État actuel des validations :
- 100 % fonctionnel avec AirVPN en WireGuard ;
- fonctionnement testé en WireGuard avec quelques autres fournisseurs ;
- retours recherchés concernant les fournisseurs OpenVPN ;
- retours recherchés sur la gestion du port forwarding ProtonVPN, notamment la détection du port NAT-PMP dynamique et sa synchronisation avec qBittorrent ;
- retours recherchés pour les serveurs Custom WireGuard et Custom OpenVPN.
Pour démarrer rapidement, en mode Wireguard, voici un exemple de compose. En thoérie, vous n’avez qu’à modifier les # à …
services:
socket-proxy:
image: tecnativa/docker-socket-proxy
container_name: socket-proxy
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
CONTAINERS: 1
IMAGES: 1
NETWORKS: 1
VOLUMES: 1
POST: 1
DELETE: 1
networks:
- companion-net
gluetun-companion:
image: ghcr.io/aerya/gluetun-companion:latest
container_name: gluetun-companion
restart: always
ports:
- 8765:8765
volumes:
- /home/aerya/docker/gluetun-companion:/data # à adapter
- /home/aerya/docker/dockge-enhanced/stacks/airvpn:/compose # à adapter
extra_hosts:
- host.docker.internal:host-gateway
environment:
- TZ=Europe/Paris
- SECRET_KEY=xxx # à générer avec openssl rand -hex 32
- DATA_DIR=/data
- GLUETUN_HOST=host.docker.internal
- GLUETUN_PROXY_PORT=8887 # à adapter
- GLUETUN_CONTAINER=gluetun-airvpn # à adapter
- COMPOSE_DIR=/compose
- DOCKER_HOST=tcp://socket-proxy:2375
networks:
- companion-net
depends_on:
- socket-proxy
networks:
companion-net: null
Merci aux testeurs tout au long de la bêta 🙂
![]()

