Zum Inhalt springen
Serverküche
Suche

Die Suche wird geladen … (nur in der veröffentlichten Seite verfügbar).

Container Schwierigkeit: Fortgeschritten

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.

· 10 Min. Lesezeit ·Dauer: ca. 40 Minuten
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

Dockge braucht den Docker-Socket (/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

🍳 Empfehlung Anzeige

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.

Zu netcup →

💶 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:

Terminal
mkdir -p /opt/stacks /opt/dockge/data

Host- und Container-Pfad müssen identisch sein

Der Pfad muss innerhalb und außerhalb des Containers gleich lauten, also /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:

YAML
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: true

Was hier zusammenspielt:

  • DOCKGE_STACKS_DIR muss genau dem Mount-Ziel entsprechen (Schritt 1).
  • ./data hä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 das proxy-Netz.
  • Kein user:-Eintrag: Dockge muss über den Socket mit dem Docker-Daemon reden und die Stack-Dateien schreiben.

Starten:

Terminal
cd /opt/dockge && docker compose up -d
Terminal
docker compose ps

Der Container bringt einen Healthcheck mit, du solltest also (healthy) sehen:

Ausgabe
NAME              STATUS
dockge-dockge-1   Up 12 seconds (healthy)

Ein Blick in die Logs bestätigt den ersten Start:

Terminal
docker logs --tail 5 dockge-dockge-1
Ausgabe
[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 5001

No 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.

Die Dockge-Einrichtungsseite „Erstelle dein Admin-Konto" mit Sprachauswahl und Feldern für Benutzername und Passwort
Erster Aufruf: Admin-Konto anlegen

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:

Die Dockge-Startseite mit der Liste aktiver Stacks, Zählern für aktiv, beendet und inaktiv sowie dem Bereich Dockge Agenten
Startseite: alle Stacks mit Status auf einen Blick

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.

Der Dockge-Compose-Editor mit Feld für den Stack-Namen, Container-Formular und dem YAML-Editor daneben
Der Editor: Formular und YAML halten sich gegenseitig aktuell

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:

Ein gerade deployter Stack in Dockge mit laufendem Container, Live-Logs des nginx-Containers und der compose.yaml darunter
Nach dem Deploy: Live-Logs direkt im Browser

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:

Terminal
find /opt/stacks -type f
Ausgabe
/opt/stacks/whoami-test/.env
/opt/stacks/whoami-test/compose.yaml

Und Docker kennt den Stack als ganz normales Compose-Projekt:

Terminal
docker compose ls
Ausgabe
NAME                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.yaml

Du kannst also jederzeit per SSH in den Ordner wechseln und normal weiterarbeiten:

Terminal
cd /opt/stacks/whoami-test && docker compose ps
Ausgabe
NAME                   STATUS         PORTS
whoami-test-nginx-1    Up 35 seconds  0.0.0.0:8080->80/tcp, [::]:8080->80/tcp

Beides 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:

Terminal
cd /opt/meinapp && docker compose down
mv /opt/meinapp /opt/stacks/meinapp
cd /opt/stacks/meinapp && docker compose up -d

Der 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:

Ein übernommener Stack in Dockge mit den Schaltflächen Bearbeiten, Neustarten, Aktualisieren, Anhalten und Löschen sowie Live-Logs des Containers
Nach dem Verschieben: Bearbeiten, Neustarten, Aktualisieren, Anhalten, Löschen

Tipp

Nimm dir nicht alles auf einmal vor: einen unkritischen Stack verschieben, prüfen, dann den nächsten. Deinen Traefik würde ich zuletzt anfassen – wenn dabei etwas schiefgeht, ist auch Dockge nicht mehr erreichbar.

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

Terminal
docker run -d --name uptime -p 3001:3001 -v uptime-data:/app/data \
  --restart unless-stopped louislam/uptime-kuma:2.5.3

wird:

YAML
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-data

Sehr 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):

Terminal
cd /opt/dockge && docker compose pull && docker compose up -d

Backup. 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: alle compose.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