// 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 the DOCKGE_STACKS_DIR variable). Create /opt/stacks/myapp/compose.yaml manually — 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.

bash
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

The interface opens on port 5001: http://адрес-сервера:5001. An administrator account is created on first login.

Update — from the same directory:

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

Port 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

PortainerDockge
Use caseclusters, teams, many hostsone or several servers
Where configuration is storedinside Portainer (or Git)regular files on disk
Kubernetes and Swarmyesno, only Docker Compose
Roles and user permissionsyesno
Managing images, networks, volumesdetailedminimal
Editingvia the interfaceinterface and terminal, in sync
LicenseCommunity Edition — ZlibMIT
Developmentactiveslow

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.

  1. 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.
  2. Copy the stack YAML from Portainer: Stacks → stack → Editor.
  3. Stop the stack in Portainer. Do not delete it along with its volumes until you are sure everything works in Dockge.
  4. Create the stack in Dockge: “+ Compose”, stack name, paste the YAML, Save and Deploy.
  5. Check paths. Relative paths like ./data are 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.
  6. Standalone containers without a stack are migrated via the converter: paste the docker run command into the converter field, get a compose.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 …

kfhzasorin

VPS setup, server setup

2026-05-12 · ★ 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)

Или оставьте заявку здесь:

Confirm that you are not a bot.

Write and get a quick reply