// Engineering Log
Dockge vs Portainer: what Dockge is and why I switched
Published on 2026-09-22
// Fast route
This article belongs to the topic Deploy and reliability.
Dockge — a lightweight web interface for managing Docker Compose stacks. It does not store configuration in its own database: each stack is just a regular folder with a compose.yaml file on disk, and Dockge lets you create, edit, start and stop those stacks from the browser. It was written by the author of Uptime Kuma, and the project is distributed under the MIT license.
I used Portainer for a long time and switched to Dockge for my servers. Below — why, what you lose in the process, and how to migrate stacks without downtime.
What I didn’t like about Portainer
Portainer can do a lot: Kubernetes, Swarm, images, networks, volumes, user roles. But it has one characteristic that is inconvenient for small setups: stacks created via the interface live inside Portainer. The docker-compose.yaml file is not located in an obvious place on disk, and you can’t just open it in an editor or put it in Git without additional configuration.
For one to three servers with a dozen services, I needed the opposite scheme: files as the source of truth, the interface as a convenience layer on top.
How Dockge is organized
- Files on disk. By default stacks are located in
/opt/stacks(the path is set by theDOCKGE_STACKS_DIRvariable). Create/opt/stacks/myapp/compose.yamlmanually — Dockge will detect the new stack. Edit the file in the terminal — changes are visible in the interface. - Removing Dockge doesn’t break anything. Containers and files remain in place, and you can manage them with the usual
docker compose. - compose.yaml editor with hints and a web terminal.
- Converter
docker run→compose.yaml: paste a command from a project’s README and get a ready-to-use file. - Multiple hosts. Since version 1.4.0 Dockge can connect agents and manage stacks on multiple Docker hosts from one window.
Honestly about project development
Dockge develops slowly: the latest release is 1.5.0 from March 2025, and changes in the repository appear rarely. For a tool that only manages Compose files this is not critical — stacks will remain working regardless of the project’s fate. But if you need new features and active support, keep this in mind.
Installation
Requirements from the README: Docker 20+ (or Podman), Linux — Ubuntu, Debian Bullseye and newer, CentOS, Fedora, Arch; architectures amd64, arm64, armv7. Windows is not supported.
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 -dThe interface opens on port 5001: http://адрес-сервера:5001. An administrator account is created on first login.
Update — from the same directory:
cd /opt/dockge
docker compose pull && docker compose up -dPort 5001 should not be opened to the internet: through Dockge you can run any containers, which effectively means managing the server. Access should be via VPN, SSH tunnel, or a reverse proxy with authentication.
Dockge or Portainer
| Portainer | Dockge | |
|---|---|---|
| Use case | clusters, teams, many hosts | one or several servers |
| Where configuration is stored | inside Portainer (or Git) | regular files on disk |
| Kubernetes and Swarm | yes | no, only Docker Compose |
| Roles and user permissions | yes | no |
| Managing images, networks, volumes | detailed | minimal |
| Editing | via the interface | interface and terminal, in sync |
| License | Community Edition — Zlib | MIT |
| Development | active | slow |
What you lose when switching: management of Kubernetes and Swarm, user roles, detailed image/network/volume management from the interface. If you need those — stay on Portainer.
When Dockge is better: a few VPS or a home server, everything is described in Compose, you want to keep files in understandable directories and edit them both via the interface and the terminal.
Migrating stacks from Portainer
Containers do not depend on what manages them, so migration proceeds without data loss — if you are careful with volumes.
- Check where the data lives. Bound directories (
/path/on/host:/path/in/container) remain on disk. Docker named volumes are also preserved when recreating a container. Before migrating, back up important data or take a server snapshot. - Copy the stack YAML from Portainer: Stacks → stack → Editor.
- Stop the stack in Portainer. Do not delete it along with its volumes until you are sure everything works in Dockge.
- Create the stack in Dockge: “+ Compose”, stack name, paste the YAML, Save and Deploy.
- Check paths. Relative paths like
./dataare now considered relative to the stack directory/opt/stacks/<name>/. It’s safer to specify absolute paths to the previous data or move the directory. - Standalone containers without a stack are migrated via the converter: paste the
docker runcommand into the converter field, get acompose.yaml, and deploy it.
If your Compose files are already on disk, just place them into folders inside the stacks directory — Dockge will pick them up automatically.
Conclusion
Dockge does one thing — manages Docker Compose files — and does it conveniently without taking your configuration away. That’s enough for my servers. For clusters, teams requiring role separation, and detailed Docker resource management you still need Portainer, and the slow development of Dockge is worth keeping in mind.
// Similar task
If you are dealing with something similar
This article belongs to one of the main working topics. You can keep reading on the topic, go to the homepage to understand what I do, or open the service pages directly.
Article topic
Deploy and reliability
Docker, CI/CD, releases, monitoring, observability, and incident handling.
Typical tasks behind this topic
- Set up deployment without manual chaos
- Add monitoring, alerts, and baseline observability
- Investigate incidents and stabilize production
// Next step
If you need help with this topic, not just another article, it is better to go straight to the service page. The homepage and topic collection stay available as secondary routes.
Open services// Reviews
Related reviews
I came with an expensive request to configure a VPS server, but during the consultation Mikhail suggested a much simpler, more affordable solution. In the end I saved time and money. Mikhail — a true expert who works for the client's result, not for the fee. I recommend him!
I came with an expensive request to configure a VPS server, but during the consultation Mikhail suggested a much simpler and more cost-effective solution. In the end I saved budget and time. Mikhail — a true expert who …
VPS setup, server setup
2026-05-12 · ★ 5/5
Excellent work! Set up the server very quickly, installed the control panel, and configured the IP. Definitely recommend!
Excellent work! Very quickly set up the server, installed the panel, configured the IP I can definitely recommend it!
Everything was excellent; helped promptly and professionally. Thank you — I recommend them to the community.
Everything's great, helped promptly and professionally, thank you, I recommend it to the community
VPS setup, server setup
2026-04-16 · ★ 5/5
There were several issues concerning both the technical side and overall understanding. Mikhail responded quickly, resolved the technical problems, and helped me understand them — many thanks. I'm satisfied with the result.
There were several issues concerning both the technical side and overall understanding. Mikhail responded quickly to the request, helped sort things out and resolved the technical problems and helped clarify …
VPS setup, server setup
2026-02-18 · ★ 5/5
Everything was done quickly and efficiently. I recommend.
Everything was done quickly and efficiently. I recommend.
VPS setup, server setup
2026-01-17 · ★ 5/5
Everything went well; the contractor responded quickly to questions and helped resolve the issue. Thanks!
Everything went well, the contractor responded quickly to questions and helped resolve the issue. Thank you!
VPS setup, server setup
2025-12-16 · ★ 5/5
// Contact
Need help?
Get in touch with me and I'll help solve the problem
I reply within one business day (03:00-13:00 GMT)
Или оставьте заявку здесь:
// Related