In the last weeks, I have compared Portainer, Dockge, and Komodo and I thought that I could write down my thoughts. Having suffered of analysis-paralysis in the past, while playing boardgames or private life, sharing some consideration that can help others make a choice, sounded like a good idea.
Table of Contents
Introduction
Around a year ago, or less, I started to add more services to what has been a simple ZNC bouncer running on a RPi4. My own document server, a software gateway to bypass my silly provider DNS setting restrictions, a place to store my photos that was not Google or Apple, and so on.
At first, I was just running the commands on my server, like a teenager.
That was the time I was only running the Bouncer. When I decided to add more, I looked into a better way to have an organized view of what I was running. Almost immediately, I discovered Portainer.
First love
Portainer is a tool to build, operate, and scale containerized environments. That's also how it is advertised on their website, of course.
Disclaimer: I do have a homelab running on a RPi4 with Docker. It is not a fully fledged cluster or K8S installation. Portainer comes in two flavours: Business Edition (BE) and Community Edition (CE). The comprehensive set of features that BE has on top of CE are listed in this article and clearly put in a table in this other article from the company itself. Obviously, the latter is always available without a fee. The former, is available for a small price.
Just to summarize, the BE edition has features like:
- Role-based access control
- Relative path support for versioned stacks
- Alert integration with different tools out of the box
- Webhook support
- Better image handling and private registry support
- Quote managing
- Kubernetes integration
- Role-Based Access Control
- More authentication providers
- Better management of Kubernetes secrets
- More logs (authentication)
- S3 backup
Most of these functionalities are not really needed for my use case, so I used the Community Edition.
Pros
It is possible to connect to a multitude of Docker servers, to define templates for your stacks, to automatically create backups (if you register on the website) and it has the nice trait of allowing to see individual logs and to individually start/stop/restart one container of the stack, without having to restart the whole stack. The last thing is actually quite useful.
Also the way you can add your environment variable is quite handy. You can upload your .env file, copy and paste an env file and so on.
Cons
What was I missing then? I was missing
- A good overview of the other resources I was creating by adding more services
- Volumes
- Networks
- A unified view of the logs
- A simple way to start a stack from a docker
Normally, I use lazydocker to keep an eye on the running containers. That's probably what create this sense of lacking when using Portainer.
Moreover, the way files are stored on the file system by default is a bit annoying. They are stored in folders whose names are just numbers. It creates a bit of confusion in some users. See Reddit post
$ ls -lha /data/compose/
total 20K
drwxr-xr-x 5 root root 4.0K Apr 27 2025 .
drwxr-xr-x 5 raffaele raffaele 4.0K Nov 17 18:54 ..
drwxr-xr-x 6 root root 4.0K Feb 15 2025 5
drwxr-xr-x 3 root root 4.0K Feb 24 2025 6
drwxr-xr-x 4 root root 4.0K Apr 27 2025 9
Realization of the amount of tools available
When I spoke to a colleague, he was so enthusiastic about Dockge made by Louis Lam. He also gave the community uptime-kuma. So, I installed it and give it a try. I made a private repository with my docker compose files, mounted it as /opt/stacks for Dockge and off I went.
Dockge
Dockge is made to be intuitive and to go straight to the point. You want to run a bunch of containers. You can either convert a docker run command to a compose structure, or edit the stacks in /opt/stacks in place.
There is a better overview for me of the networks. Not for the volumes. You can also easily and intuitively use an existing network for a new stack.
This is an excellent tool. Highly recommended. One can immediately deploy a container without too much fuss.
Komo.do
While browsing the selfhosted subreddit, this name kept popping up in many thread. Eventually, I looked into it and got curious. The trait that genuinely intrigued me is the embraced philosophy of there are many way leading to container orchestration, use the one that suits you.
Komodo offers you many ways of handling your services, like UI compose file definition, sync from git and so on. Furthermore, it offers a handy way of managing the entire ecosystem by employing a good abstraction system. Resource is the base abstraction that allows tagging, for example. It is extended by:
- Server - Includes tagging, monitoring and alerting
- Deployment - Basic management and organization. Easy nomenclature.
- Stack - Definition and settings of a composition of service. As said before, the definition can live in the UI, in a git repo and offers webhook integration for auto redeploy on git push.
- Repo - Defines the sources from which the stacks can be fetched and deployed. Also the sources against which procedure and action can be triggered.
- Procedure and Actions - Defines execution flows
It offers, by default, both an API and a CLI.
Comparison
| Feature | Portainer | Dockge | Komo.do |
|---|---|---|---|
| Backup | ✔️ Built-in backup of Portainer configuration if you register | ✔️ Backup/restore of compose configurations depending on platform setup | ⚠️ Only DB backups. No containers backup |
| ACL | ✔️ Role-Based Access Control (users, teams, environment permissions) | ❌ No native RBAC/ACL (single-user oriented) | ✔️ Granular permission system with groups and permission levels |
| Secrets management | ✔️ Supports Docker/Kubernetes secrets | ❌ No built-in secrets management (usually .env files) |
✔️ Built-in variables and secrets system |
| Monitoring | ⚠️ Limited visibility: Logs and container status | ❌ No built-in monitoring | ✔️ System level monitoring |
The most user-friendly is definitely Dockge. This is very appealing to people that have snippets of docker run commands or that want to simply run a docker compose file from a repository.
The possibility of quickly spin up a service by pasting a docker run command, is honestly useful.
Komo.do provides way more structure and allows one to define secrets, repository to get your stack to run. It is better suited to handle complexity, if you are willing to structure your project in a specific way. This tool, also provides basic monitoring, and alert mechanism, that is appreciated. Auto pull, CLI, and API are all provided. It is a sort of complete docker containerization UI.
Conclusion
Obviously, there is no absolute winner. It depends. My personal favourite is Dockge, for its simplicity. In my setup it is paired with Beszel. That is enough for me. My next attempt, is to move to Proxmox. I hope to give it a go in the upcoming months.
If integrated monitoring, better secrets support are non-negotiable, Komo.do or Portainer are better suited. With Kodo.do requiring a bit more initial configuration, but it delivers later on with all its process and automations.