Gérer des dizaines de stacks Docker en SSH, c’est faisable. Mais quand on commence à avoir 30+ stacks sur 3 serveurs différents, une interface web devient indispensable. Dockge, créé par Louis Lam (le développeur d’Uptime Kuma), est ce que j’utilise au quotidien : simple, fichiers sur disque, zéro base de données propriétaire. Voici mon retour après plusieurs mois d’utilisation quotidienne.

Le problème avec Portainer
J’ai utilisé Portainer pendant plus d’un an. Il fait le job, mais plusieurs choses m’ont progressivement agacé :
- Les stacks sont « propriétaires » : quand tu crées une stack dans Portainer, il la gère en interne. Si tu modifies le
docker-compose.ymlen SSH, Portainer ne suit pas toujours. Ça crée des conflits frustrants. - L’interface est lourde : beaucoup de fonctionnalités (Swarm, Kubernetes, registries) dont je n’ai pas besoin en homelab.
- La base de données : Portainer stocke sa config dans une base interne. Si elle se corrompt, tu perds ta configuration.
- Les mises à jour : parfois cassantes sur les versions CE, surtout en upgrade majeur.
Portainer est un bon outil enterprise, mais pour un homelab perso avec 20-30 containers, c’est overkill.
Dockge : le retour à la simplicité
Dockge prend le parti inverse de Portainer. Le concept est radical de simplicité :
- Pas de base de données : tout repose sur des fichiers
docker-compose.ymlclassiques, stockés sur le disque. - Édition bidirectionnelle : tu modifies un compose dans Dockge, le fichier est mis à jour. Tu l’édites en SSH, Dockge détecte le changement. Zéro conflit, et tu peux tout versionner en Git.
- UI minimaliste : une stack = une carte. Start, stop, restart, logs, éditeur. C’est tout ce qu’il faut.
- Léger : un seul container, ~30 Mo de RAM.
Installation
services:
dockge:
image: louislam/dockge:1
container_name: dockge
restart: unless-stopped
ports:
- "5001:5001"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/dockge/data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
Tous mes fichiers compose sont dans /opt/stacks, un sous-dossier par stack. Dockge les détecte automatiquement au démarrage. Le dossier est versionné en Git, chaque modification fait l’objet d’un commit.
⚠️ Note v1.5 : depuis la version 1.5.0 (mars 2025), la fonctionnalité Console est désactivée par défaut pour des raisons de sécurité. Si tu en as besoin, ajoute la variable d’environnement DOCKGE_ENABLE_CONSOLE=true dans ton compose.

Mode multi-serveur
C’est la fonctionnalité qui m’a définitivement convaincu : Dockge supporte le mode agent. Sur chaque nœud secondaire je déploie un agent Dockge, et depuis l’interface principale je gère les stacks des 3 nœuds depuis un seul endroit.
# Sur les nœuds secondaires — agent uniquement
services:
dockge-agent:
image: louislam/dockge:agent
container_name: dockge-agent
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
Depuis l’interface principale, j’ajoute chaque nœud via son IP et son port. Je vois les containers de chaque serveur, je peux start/stop/redémarrer depuis un seul onglet. Pour un cluster Proxmox multi-nœuds, c’est indispensable.
Mon utilisation au quotidien
Actuellement je gère plus de 30 stacks avec Dockge réparties sur mes 3 nœuds Proxmox :
- Glance : dashboard homelab
- Uptime Kuma : monitoring disponibilité
- Stack media : Sonarr, Radarr, Prowlarr, Transmission, Overseerr
- Stack domotique : Zigbee2MQTT, Mosquitto MQTT broker
- Stack monitoring : Beszel Hub, Grafana, InfluxDB
- Et une vingtaine d’autres : TeslaMate, FreshRSS, Wallos…
Bonne pratique que j’applique systématiquement : le label Watchtower sur les stacks que je veux mettre à jour automatiquement.
labels:
- "com.centurylinklabs.watchtower.enable=true"

Les limites de Dockge
Dockge n’est pas parfait, et ses limites sont assumées :
- Pas de gestion d’images : impossible de browser un registry ou de nettoyer les images inutilisées depuis l’UI.
- Pas de gestion réseau avancée : les réseaux Docker se gèrent en ligne de commande.
- Multi-nœuds via agents : pas de fédération native façon Swarm dans une vue unique, mais le mode agent couvre l’essentiel.
Pour un homelab classique avec un ou plusieurs serveurs Proxmox et une trentaine de containers, c’est largement suffisant.
Dockge vs Portainer : le comparatif
| Dockge | Portainer CE | |
|---|---|---|
| Complexité | Minimale | Élevée |
| Fichiers compose | Sur le disque, éditables librement | Internes, conflits possibles |
| Base de données | Aucune | SQLite interne |
| Multi-nœuds | Via agents | Natif (Swarm) |
| RAM | ~30 Mo | ~200 Mo |
| Pour qui | Homelab, usage perso | Enterprise, Swarm/K8s |
Si tu veux garder le contrôle sur tes fichiers compose en homelab, Dockge est le bon choix. Si tu gères une infra multi-serveurs en production avec Swarm, Portainer reste pertinent.
Crée un repo Git privé pour ton dossier /opt/stacks et configure un cron qui fait git add -A && git commit -m "auto" && git push toutes les nuits. Si tu casses une stack en éditant le compose, tu retrouves l’état précédent en 30 secondes avec git checkout.
FAQ
Dockge ou Portainer, lequel choisir pour un homelab ?
Dockge pour un homelab perso : fichiers compose sur disque, interface légère, mode multi-serveur. Portainer si tu gères une équipe avec RBAC et registries privés. Pour un usage solo, Dockge est plus adapté.
Peut-on migrer de Portainer vers Dockge facilement ?
Oui. Exporte tes docker-compose depuis Portainer, place-les dans /opt/stacks/ (un dossier par stack), et Dockge les détecte automatiquement au démarrage. J’ai migré 25 stacks en 20 minutes.
Dockge supporte-t-il le mode multi-serveur ?
Oui, via un agent déployé sur chaque nœud secondaire. Depuis l’interface principale, tu gères les stacks de tous tes serveurs dans une vue unifiée.
Les fichiers compose modifiés en SSH sont-ils visibles dans Dockge ?
Oui, c’est la force de Dockge : l’édition est bidirectionnelle. Tu modifies en SSH, Dockge voit le changement ; tu modifies dans Dockge, le fichier sur disque est mis à jour.









