Dockge
Dockge is a free, self-hosted web UI built around docker-compose.yaml stacks: it edits, deploys, and monitors Compose files from the browser instead of the CLI. It comes from the same developer behind Uptime Kuma, and trades Portainer’s broader feature set for a narrower, faster interface focused on one job.
License: MIT License, confirmed directly from the LICENSE file in the louislam/dockge GitHub repo, not assumed from a badge.
Quick facts: Official site dockge.kuma.pet · GitHub louislam/dockge, 23,200+ stars · Latest release 1.5.0 · Docker image louislam/dockge (official, Docker Hub); the project’s own compose file pins tag :1.
What Dockge actually does
Dockge’s whole feature set orbits compose.yaml. Create, edit, start, stop, restart, and delete stacks from the browser, with an interactive YAML editor and a built-in web terminal for when a line needs debugging live. A “docker run to compose.yaml” converter turns one-off run commands into a proper stack file. Since version 1.4.0, a single Dockge instance can manage stacks on multiple remote Docker hosts through lightweight agents, similar in spirit to Portainer’s own multi-environment setup. None of it is proprietary storage: stacks stay as plain compose.yaml files on disk, so the regular docker compose CLI keeps working alongside the UI.
Where Dockge fits: lighter than Portainer, narrower on purpose
Dockge doesn’t try to be a full Docker dashboard, and it doesn’t pretend otherwise. Its own FAQ is blunt about it: no single-container management, no docker network browser, no volume explorer, all things Portainer bakes in. What’s left is one job done well: a fast interface for the compose-only crowd, people who already think in compose.yaml and just want a browser instead of an SSH session to edit and redeploy it. That narrowness is the point, not a gap to be filled later, and it shows in how little there is to click through before a stack is running.
Homelab use cases
If a homelab already runs a handful of docker-compose stacks (an Uptime Kuma instance for monitoring, a media stack, a few internal tools), Dockge turns “SSH in, cd to the folder, docker compose up -d” into two clicks from a phone browser. That alone is worth the five-minute install. It’s also a fast way to onboard a housemate or a less CLI-comfortable family member: hand over a Dockge login instead of a terminal, and they can restart a stuck stack without learning Compose syntax. Multi-agent support means one instance can front several boxes too, a NAS running media stacks and a mini PC running everything else, watched from a single tab. The Docker & Containers category rounds out other tools built around the same workflow.
Installing Dockge with Docker
Before deploying: Dockge needs access to the Docker socket, the same root-equivalent trade-off as Portainer, and the stacks directory must be mounted at the identical path on both host and container. Get the path wrong and, per the project’s own README, files can end up written somewhere unintended.
mkdir -p /opt/stacks /opt/dockge
cd /opt/dockge
curl https://raw.githubusercontent.com/louislam/dockge/master/compose.yaml --output compose.yaml
docker compose up -d
For explicit control over ownership and paths, the project’s own compose file looks like this:
services:
dockge:
image: louislam/dockge:1
restart: unless-stopped
ports:
- 5001:5001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./data:/app/data
- /opt/stacks:/opt/stacks
environment:
- DOCKGE_STACKS_DIR=/opt/stacks
- PUID=1000
- PGID=1000
Run docker compose up -d and Dockge is reachable at http://your-server-ip:5001. Existing stacks aren’t lost either: move a compose.yaml into /opt/stacks/<stack-name>/compose.yaml, click “Scan Stacks Folder” from the dropdown menu, and it shows up in the list.
Dockge vs Portainer (and briefly, Watchtower)
| Category | Dockge | Portainer |
|---|---|---|
| Scope | Compose stacks only | Containers, images, volumes, networks, stacks, Swarm, Kubernetes |
| Single-container management | No, by design | Yes |
| Multi-host support | Yes, via agents since 1.4.0 | Yes, via Portainer Agent |
| License | MIT | zlib |
| Interface | Minimal, compose-focused | Fuller dashboard, more screens |
Dockge’s own README traces its origin to frustration with Portainer’s stack deployments occasionally stalling mid-progress with unclear error messages, so it reads less like a Portainer clone and more like a narrower tool for people who hit that exact wall. Watchtower solves an adjacent but different problem, auto-pulling and restarting containers when a new image tag lands, and it pairs fine with either dashboard rather than competing with them.
Dockge: pros and cons
- Free and open source under the MIT License, no account or license key required
- A dedicated compose.yaml editor with an interactive terminal, syntax highlighting, and a docker run to compose.yaml converter
- Lightweight: single container, fast to deploy, fast to load in the browser
- Stacks stay as plain files on disk, fully usable from the regular docker compose CLI alongside the UI
- Requires Docker socket access, the same root-equivalent trade-off as Portainer
- No single-container, volume, or network management, by the project’s own admission
- Host and container stacks-directory paths must match exactly, an easy first-run mistake
FAQ
Is Dockge free?
Yes, entirely, under the MIT License with no paid tier or license key involved.
Is Dockge a Portainer replacement?
The project’s own FAQ says “yes or no”: if compose.yaml is the only thing being managed, yes. Anything involving single containers, networks, or volumes, still no.
Can Dockge manage stacks that already exist?
Yes. Move the compose file into /opt/stacks/<stack-name>/compose.yaml, then use “Scan Stacks Folder” from the dropdown menu to pick it up.
For a homelab already living in docker-compose, Dockge is a five-minute way to stop SSH-ing in for every restart. Portainer remains the better fit for anyone managing single containers, networks, or a Kubernetes cluster alongside Compose stacks. The Docker & Containers category rounds out the rest.