Dockge: A Compose-First Manager That Keeps Your YAML Files on Disk
A fancy, easy-to-use and reactive self-hosted docker compose.yaml stack-oriented manager.
At a glance
- What is it?
- Dockge is a self-hosted, reactive manager for docker compose.yaml stacks. It focuses on file-based control, real-time output, and a clean UI, but it deliberately excludes single-container and network management.
- Who is it for?
- Adopt Dockge if you manage multiple compose.yaml stacks and want a UI that respects your files on disk, with real-time progress and an interactive editor. Do not use it if you need single-container management, Docker networks, or Windows support.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 144 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The Problem: Compose File Management Without a UI That Gets in the Way
Docker Compose is powerful, but its CLI is not friendly for frequent stack operations like editing, restarting, or watching logs. Portainer, the common alternative, offers a broad UI, but the README cites specific frustrations: slow deployments with a spinning loader and unclear error messages. Dockge targets a narrower problem: managing compose.yaml files in a stack-oriented way, with a reactive interface that shows real-time progress. It is for self-hosters who already use compose files and want a UI that does not hide or rewrite those files. The author, louislam, also created Uptime Kuma, so the UI philosophy carries over: simple, responsive, and focused on the task at hand.
File-Based Architecture: Compose Files Stay on Your Drive
Dockge does not store your stack definitions in a database. Instead, it reads and writes compose.yaml files directly in a stacks directory on the host. The default is /opt/stacks, but you can change it via the DOCKGE_STACKS_DIR environment variable or by generating a custom compose.yaml. This design means you can still run docker compose commands manually on the same files. The README's phrase 'Dockge won't kidnap your compose files' captures the core value: no lock-in. If you stop using Dockge, your compose files remain intact and usable. The trade-off is that Dockge must mount the stacks directory into the container, and the path inside the container must match the host path. The README warns that a mismatch can write data to the wrong path, which is a real footgun.
How It Works: Compose V2, Real-Time Output, and Agents
Dockge is built on top of Compose V2, which means it uses the modern docker compose command under the hood. The reactive behavior comes from streaming progress and terminal output in real-time, so you see pull, up, and down operations as they happen. The UI includes an interactive editor for compose.yaml, an interactive web terminal, and a converter that turns docker run commands into compose.yaml. Version 1.4.0 added multi-agent support: you can manage stacks from multiple Docker hosts in one interface. Each agent runs Dockge on a remote host, and the central UI connects to them. This is a significant feature for homelabs with multiple machines, but the README does not detail how agents authenticate or communicate, so expect to read the docs or source for that.
Getting Started: Commands and Configuration Keys
Installation is straightforward. You create directories for your stacks and for Dockge itself, download a compose.yaml, and start it with docker compose up -d. The README gives these commands: mkdir -p /opt/stacks /opt/dockge, cd /opt/dockge, curl the compose.yaml from the repo, then docker compose up -d. The default port is 5001. For a custom stacks directory, you can generate a compose.yaml from https://dockge.kuma.pet with query parameters like port and stacksPath. You can also set PUID and PGID environment variables in the compose file to control file ownership; without them, files are owned by root. The compose file mounts the Docker socket, which is required for Dockge to control Docker. That is a security consideration: anyone with access to Dockge effectively has access to the Docker daemon.
Limitations and When It Is the Wrong Tool
Dockge is deliberately narrow. The FAQ states that it cannot manage a single container without a compose.yaml. If you want to manage a single container, the README points you to Portainer or the Docker CLI. It also does not manage Docker networks or other Docker resources. On top of that, Windows is not supported yet, and Debian Buster or older is explicitly unsupported. The multi-agent feature is useful, but it adds operational complexity: you need to deploy Dockge on each host and keep them in sync. Another limitation is that the reactive UI depends on the Docker socket connection; if that fails, you are stuck with the CLI. The README does not mention backup or restore features, so you are responsible for backing up your stacks directory yourself.
Alternatives: Portainer and the Docker CLI
The most direct alternative is Portainer, which the README explicitly addresses. Portainer is a full Docker management UI that handles containers, networks, volumes, and stacks. Dockge's author uses Portainer but found its stack deployment slow and error messages unclear. The difference in approach is that Portainer abstracts away the compose file details into its own UI, while Dockge keeps compose files as the source of truth and edits them directly. If you need to manage a single container or Docker networks, Portainer is the better choice. The Docker CLI itself is another alternative: it gives you full control but no UI, no real-time progress visualization, and no interactive editor. Dockge sits between the two: more structure than the CLI, less scope than Portainer.
Maintenance, Updates, and Licensing
Updating Dockge is simple: cd /opt/dockge, then docker compose pull && docker compose up -d. The project is under the MIT license, which allows free use, modification, and redistribution, with no copyleft obligations. The release cadence is uneven: 1.4.0 came in January 2024, 1.4.2 in January 2024, and 1.5.0 in March 2025, a gap of over a year. That suggests maintenance is active but not rapid. The README mentions that the project is built with ES Module and TypeScript, which is a developer note, not a user concern. For upgrades, you should check the release notes for breaking changes, especially around the agents feature or configuration keys. The Docker socket mount is a long-term security consideration: it is required, but you should restrict access to Dockge's port to trusted networks.
Editorial conclusion
Adopt Dockge if you manage multiple compose.yaml stacks and want a UI that respects your files on disk, with real-time progress and an interactive editor. Do not use it if you need single-container management, Docker networks, or Windows support. Before adopting, verify that your stacks directory path matches the container path exactly, as the README warns that a mismatch can write data to the wrong location. Also confirm your Docker version is 20+ and that you are on a supported Linux distro, as Debian Buster and older are not supported.
Community notes