Dockge: Compose-Stacks im Browser verwalten
Dockge 1.5 mit Traefik einrichten: Compose-Stacks im Browser bearbeiten, deployen und Logs live mitlesen – ohne Lock-in, es bleiben normale compose.yaml.
Inhaltsverzeichnis
Wer mehrere Compose-Stacks betreibt, kennt das: SSH auf, in den richtigen Ordner, docker compose pull && up -d, Logs prüfen, nächster Stack. Dockge holt genau diese Handgriffe in den Browser –
und schreibt dabei ganz normale compose.yaml-Dateien, die du weiterhin per CLI anfassen kannst.
Was bauen wir?
Am Ende läuft Dockge 1.5.0 hinter deinem Traefik unter https://DEINE_DOMAIN. Du legst Stacks
im Browser an, bearbeitest ihre compose.yaml, deployst sie mit einem Klick und siehst die
Ausgabe von docker compose up live mitlaufen – inklusive Container-Logs und einer
Bash-Konsole pro Container.
Der entscheidende Unterschied zu schwergewichtigen Docker-Oberflächen: Dockge erfindet kein
eigenes Format. Jeder Stack ist ein Ordner unter /opt/stacks/<name>/ mit compose.yaml und
.env. docker compose ls zeigt sie als normale Projekte. Du kannst Dockge morgen abschalten und
weiterarbeiten, als hätte es es nie gegeben – kein Lock-in.
Zum Ressourcenbedarf: Der Container belegte im Test rund 143 MiB RAM bei praktisch keiner CPU-Last. Das Image ist mit 1,17 GB allerdings kein Leichtgewicht – für einen VPS mit kleiner Systemplatte ein Posten, den man kennen sollte.
Dockge ist Root auf deinem Server
/var/run/docker.sock). Wer Zugriff auf diese Oberfläche hat,
kann beliebige Container starten – auch privilegierte – und damit den ganzen Host übernehmen.
Deshalb gilt hier härter als bei jeder anderen App: nur über HTTPS erreichbar, langes einmaliges
Passwort, und wenn möglich zusätzlich auf deine eigene IP beschränken (siehe
Firewall mit UFW). Ein Dockge im offenen Internet mit
schwachem Passwort ist ein übernommener Server.Voraussetzungen
- Ein Server mit Debian 13 und Docker (getestet auf einem netcup VPS mit Docker 29.6.1 und Compose v5.3.1)
- Docker-Compose-Grundlagen – Dockge nimmt dir nicht das Verständnis ab, sondern die Tipparbeit
- Ein laufender Traefik samt
proxy-Netz wie im Reverse Proxy mit Traefik - Eine Subdomain, die auf den Server zeigt (Domain verbinden)
VPS 1000 G12.5
4 vCore · 8 GB RAM · 128 GB SSD
ab 14,50 €/Monat
Dockge selbst ist winzig – entscheidend ist, was du damit betreibst.
💶 1 Monat gratis für netcup-Neukunden:
Einmal einlösbar, gilt für VPS 1000 G12.5. Im Warenkorb einlösen →
💶 5 € Gutschein für netcup-Neukunden: immer gültig · nicht für Domains und VPS Lite
Schritt für Schritt
1. Das Stacks-Verzeichnis festlegen
Dockge verwaltet alle Stacks unterhalb eines Ordners. Standard ist /opt/stacks, und dabei
bleiben wir – das passt zur Konvention aus den anderen Rezepten:
mkdir -p /opt/stacks /opt/dockge/dataHost- und Container-Pfad müssen identisch sein
/opt/stacks:/opt/stacks. Dockge ruft docker compose über den Socket des Hosts auf – der Daemon
interpretiert Pfade daher aus Host-Sicht. Mountest du /opt/stacks etwa nach /app/stacks,
findet Dockge die Dateien in seiner eigenen Ansicht, der Daemon aber nicht: Deploys scheitern mit
„no such file or directory".2. Compose-Datei für Dockge
Lege /opt/dockge/compose.yaml an und ersetze DEINE_DOMAIN:
services:
dockge:
image: louislam/dockge:1.5.0
restart: unless-stopped
environment:
DOCKGE_STACKS_DIR: /opt/stacks
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
networks: [proxy]
labels:
- "traefik.enable=true"
- "traefik.http.routers.dockge.rule=Host(`DEINE_DOMAIN`)"
- "traefik.http.routers.dockge.entrypoints=websecure"
- "traefik.http.routers.dockge.tls.certresolver=le"
- "traefik.http.services.dockge.loadbalancer.server.port=5001"
networks:
proxy:
external: trueWas hier zusammenspielt:
DOCKGE_STACKS_DIRmuss genau dem Mount-Ziel entsprechen (Schritt 1)../datahält Dockges eigene SQLite-Datenbank: Benutzer, Einstellungen, JWT-Secret.loadbalancer.server.port=5001– Dockge lauscht im Container auf 5001. Wir veröffentlichen keinen Port nach außen; nur Traefik erreicht ihn über dasproxy-Netz.- Kein
user:-Eintrag: Dockge muss über den Socket mit dem Docker-Daemon reden und die Stack-Dateien schreiben.
Starten:
cd /opt/dockge && docker compose up -ddocker compose psDer Container bringt einen Healthcheck mit, du solltest also (healthy) sehen:
NAME STATUS
dockge-dockge-1 Up 12 seconds (healthy)Ein Blick in die Logs bestätigt den ersten Start:
docker logs --tail 5 dockge-dockge-1[SERVER] INFO: Connected to the database
[SERVER] INFO: JWT secret is not found, generate one.
[SERVER] INFO: Stored JWT secret into database
[SERVER] INFO: No user, need setup
[SERVER] INFO: Listening on 5001No user, need setup heißt: Der Server wartet auf dein Admin-Konto.
3. Admin-Konto anlegen
Ruf https://DEINE_DOMAIN auf. Dockge leitet auf /setup und verlangt Benutzername und
Passwort. Die Oberfläche richtet sich nach der Sprache deines Browsers – bei einem deutschen
Browser also gleich auf Deutsch.

Danach ist der Weg zu: Eine offene Registrierung gibt es nicht, weitere Konten legst du in den Einstellungen an. Nimm ein langes, einmaliges Passwort aus dem Passwortmanager – siehe Warnung oben.
4. Die Startseite verstehen
Nach dem Login siehst du alle Compose-Projekte, die Docker auf dem Host kennt – im Beispiel den
vorhandenen traefik-Stack und den gerade angelegten:

Links zählt Dockge nach aktiv, beendet und inaktiv. Wichtig: In der Liste erscheinen
alle Projekte, verwalten kann Dockge aber nur die unterhalb von /opt/stacks. Wie du
bestehende Stacks übernimmst, steht in Schritt 7.
5. Ersten Stack anlegen und deployen
Klick oben auf Compose. Du landest im Editor: links ein Formular für Stack-Name und Container,
rechts die compose.yaml – beide Seiten sind verbunden, du kannst also klicken oder YAML
schreiben.

Gib dem Stack einen Namen (nur Kleinbuchstaben – daraus werden Ordner- und Projektname) und passe
das YAML an. Ein Klick auf Deployen führt docker compose up -d aus, und die echte Ausgabe
läuft im Terminalfenster mit:

Der Container-Eintrag zeigt Status und veröffentlichte Ports, darunter laufen die Logs weiter. Pro Container gibt es zusätzlich einen Bash-Knopf, der eine Konsole im Container öffnet – praktisch, um schnell eine Konfiguration nachzusehen.
6. Was auf der Platte passiert
Das ist der Teil, der Dockge von schwergewichtigen Oberflächen unterscheidet. Nach dem Deploy liegt auf dem Server genau das, was du erwartest:
find /opt/stacks -type f/opt/stacks/whoami-test/.env
/opt/stacks/whoami-test/compose.yamlUnd Docker kennt den Stack als ganz normales Compose-Projekt:
docker compose lsNAME STATUS CONFIG FILES
dockge running(1) /opt/dockge/compose.yaml
traefik running(1) /opt/traefik/compose.yaml
whoami-test running(1) /opt/stacks/whoami-test/compose.yamlDu kannst also jederzeit per SSH in den Ordner wechseln und normal weiterarbeiten:
cd /opt/stacks/whoami-test && docker compose psNAME STATUS PORTS
whoami-test-nginx-1 Up 35 seconds 0.0.0.0:8080->80/tcp, [::]:8080->80/tcpBeides gilt gleichzeitig: Änderungen im Browser sieht die CLI, Änderungen per CLI sieht der Browser nach dem Neuladen. Dockge ist eine Fernbedienung, kein neues System.
7. Bestehende Stacks übernehmen
Ein Stack außerhalb von /opt/stacks erscheint in der Liste, lässt sich aber nicht anfassen –
Dockge sagt das klar: „Dieser Stack wird nicht von Dockge verwaltet." Es gibt weder Bearbeiten-
noch Deploy-Knopf.
Zum Übernehmen verschiebst du den Ordner. Angenommen, dein Stack liegt in /opt/meinapp:
cd /opt/meinapp && docker compose down
mv /opt/meinapp /opt/stacks/meinapp
cd /opt/stacks/meinapp && docker compose up -dDer Projektname leitet sich vom Ordnernamen ab – bleibt der gleich, laufen deine Container unter denselben Namen weiter und benannte Volumes bleiben erhalten. Danach verwaltet Dockge den Stack vollständig:

Tipp
8. docker run-Befehle umwandeln
Viele Projekte dokumentieren nur einen langen docker run-Befehl. Auf der Startseite gibt es
dafür ein Feld: Befehl einfügen, In Compose-Syntax umwandeln klicken – und du landest im
Editor mit fertigem YAML. Aus
docker run -d --name uptime -p 3001:3001 -v uptime-data:/app/data \
--restart unless-stopped louislam/uptime-kuma:2.5.3wird:
services:
uptime-kuma:
container_name: uptime
ports:
- 3001:3001
volumes:
- uptime-data:/app/data
restart: unless-stopped
image: louislam/uptime-kuma:2.5.3
volumes:
uptime-data:
external: true
name: uptime-dataSehr praktisch – mit einer Falle: Das benannte Volume wird als external: true eingetragen,
also als „existiert schon". Bei einer Neuinstallation gibt es das Volume aber noch nicht, und der
Deploy scheitert. Entweder die beiden Zeilen löschen (dann legt Compose das Volume selbst an)
oder das Volume vorher mit docker volume create uptime-data anlegen. Zum Unterschied siehe
Volumes vs. Bind Mounts.
9. Konsole und Agenten – bewusst entscheiden
Zwei Funktionen solltest du kennen, bevor du sie einschaltest:
Konsole. Der Menüpunkt „Konsole" ist im Standard deaktiviert, und das ist gut so. Dockge sagt selbst, warum: Sie erlaubt beliebige Befehle innerhalb des Dockge-Containers – und der hat den Docker-Socket. Aktiviert bedeutet das eine Root-Shell auf deinen Host im Browser. Lass sie aus; für den seltenen Fall reicht SSH.
Agenten (beta). Dockge kann weitere Server einbinden und deren Stacks in derselben Oberfläche verwalten. Das ist praktisch, wenn du mehrere Maschinen betreibst – die Funktion ist aber als beta gekennzeichnet, und jeder eingebundene Agent vergrößert den Schaden, wenn diese eine Oberfläche kompromittiert wird. Für den Anfang: ein Server, ein Dockge.
10. Updates per Klick
Der Knopf Aktualisieren an einem Stack macht genau das, was du sonst tippst: neue Images holen
und den Stack neu hochfahren. Ist das Image schon aktuell, passiert nichts – im Test lief der
Container danach unverändert weiter (gleiche Startzeit), es wird also nicht ohne Grund neu
gestartet. Das ist bequem – und genau deshalb solltest du deine Images weiter pinnen statt
latest zu verwenden. Sonst wird aus einem Klick ein Sprung über mehrere Hauptversionen,
ohne dass du es merkst. Warum das zählt, steht in
Docker-Stack aktuell halten.
Wenn es nicht funktioniert
Traefik antwortet mit 404, obwohl der Container healthy ist. Meist fehlt
traefik.http.services.dockge.loadbalancer.server.port=5001. Dockge lauscht im Container auf
5001; ohne die Zeile rät Traefik. Prüfe außerdem, dass der Container im proxy-Netz hängt.
Der Deploy bricht mit „no such file or directory" ab. Host- und Container-Pfad des
Stacks-Verzeichnisses stimmen nicht überein. Es muss /opt/stacks:/opt/stacks gemountet und
DOCKGE_STACKS_DIR=/opt/stacks gesetzt sein – Dockge lässt den Docker-Daemon des Hosts arbeiten,
und der kennt nur Host-Pfade.
Ein Stack ist sichtbar, aber alle Knöpfe fehlen. Dann liegt er außerhalb von /opt/stacks,
und Dockge zeigt „Dieser Stack wird nicht von Dockge verwaltet." Verschiebe den Ordner wie in
Schritt 7 – Dockge übernimmt ihn nicht von selbst und legt auch keine Kopie an.
Der Stack-Name wird abgelehnt. Erlaubt sind nur Kleinbuchstaben, Ziffern und Bindestriche,
weil daraus Ordner- und Compose-Projektname werden. Meine App geht nicht, meine-app schon.
Nach einem Neustart ist die Anmeldung weg. Dann wurde ./data nicht persistent gemountet –
dort liegen Datenbank und JWT-Secret. Prüfe, dass /opt/dockge/data existiert und im Compose
eingebunden ist.
Die Oberfläche ist englisch, obwohl der Browser auf Deutsch steht. Dockge richtet sich nach dem Browser und fällt bei unbekannten Kombinationen auf Englisch zurück; in den Einstellungen lässt sich die Sprache fest wählen.
Dein Problem ist nicht dabei? Alle Fehlermeldungen durchsuchen →
Wartung & Backups
Ehrlich zum Projektstand. Dockge ist beliebt (rund 24.000 Sterne) und wird weiter entwickelt –
die letzten Commits im Repository stammen aus dem April 2026, unter anderem Container-Steuerung
und eine Ressourcen-Anzeige. Die letzte stabile Version 1.5.0 ist aber vom 30. März 2025, also
über ein Jahr alt. Es gibt einen nightly-Tag mit den neueren Funktionen – der ist ausdrücklich
kein Release.
Praktisch heißt das: Bleib auf 1.5.0 (mit Docker 29.6.1 und Compose v5.3.1 im Test völlig
problemlos), erwarte keine schnellen Fehlerbehebungen und triff keine Betriebsentscheidung, die
darauf baut, dass morgen eine neue Version kommt. Für „Stacks bequem verwalten" reicht das – du
solltest nur wissen, worauf du dich einlässt.
Dockge selbst aktualisieren geht wie bei jedem Stack, aber von der CLI aus (die Oberfläche kann sich nicht selbst neu starten):
cd /opt/dockge && docker compose pull && docker compose up -dBackup. Zwei Dinge gehören gesichert, und beide sind klein:
/opt/dockge/data– Dockges Datenbank mit Konten und Einstellungen/opt/stacks– hier steckt die eigentliche Arbeit: allecompose.yaml- und.env-Dateien deiner Dienste
Damit ist /opt/stacks ab jetzt dein zentraler Konfigurationsort – ein Grund mehr, ihn mit
Restic täglich zu sichern. Die Daten deiner Anwendungen (Volumes,
Bind Mounts) sichert Dockge dagegen nicht; die brauchen weiterhin ihre eigene Strategie.
Zugriff regelmäßig prüfen. Weil Dockge Root-Rechte auf dem Host bedeutet, gehört zur Wartung die Frage: Wer kommt eigentlich dran? Die Traefik-Logs zeigen, wer die Anmeldeseite aufruft – tauchen dort fremde IPs auf, ist eine IP-Beschränkung oder ein Zugang nur über WireGuard die bessere Antwort als ein noch längeres Passwort.
Feedback per E-Mail: feedback@serverkueche.de
Das könnte dir auch schmecken


