Portainer Alternative Komodo for Docker Stack Management and Deployment
I really like free and open source solutions that allow doing amazing things in the home lab and even in production environments. Recently, I stumbled on a project called Komodo. It allows having a full build and deployment solution in your Docker environment. I am a huge fan of Portainer and have been for quite some time. Does Komodo measure up as a Portainer alternative? Let’s learn a bit more about Komodo, what it is and what you can do with it.
Table of contents
What is Komodo?
Komodo is a self-described web app that allows you to have a solution that can give structure to management of your IT infrastructure centered around Docker. This includes things like managing your Docker container hosts, building container images, deploying them, and automated processes that you may want to introduce in the environment.
Komodo has several features that admins can benefit from. These include things like:
- Having a dashboard to connect your docker container hosts
- Have alerts on CPU usage, memory usage, and disk usage
- Create and deploy Docker compose stacks
- You can have application source bundled into auto-versioned Docker container images and have these built on a webhook
- You can deploy single use AWS EC2 instances that allow you to have as much capacity as you need
- You can manage repos on connected servers to have automation done via scripting and webhook functionality
- You can store configure variables and secrets in a shared global variable solution
- It has an audit trail built in that allows you to see what actions have been taken by admins
Komodo architecture
The architecture of Komodo is similar to what we see with something like Portainer. You have a “server” component, called the core. Then you have essentially “agents” in what Komodo calls the Periphery. You add additional servers by installing the periphery, agent, on the remote servers that you want to monitor, configure, deploy, manage, etc from the Komodo server.
Installing Komodo Core
The Komodo installation process is not difficult, but is a little bit more cumbersome than Portainer and this isn’t surprising. One of the things you see with commercial software offerings is generally they have a slick installation process with polish.
The installation of Komodo involves curling down a couple of files, the compose file and an environment file that allows you to customize the installation. This is known as the Komodo core for the Portainer alternative to the server component.
Interestingly, it allows you to choose which DB backend technology you use to back the solution, including the following:
- MongoDB
- PostgreSQL
- SQlite
Below, let’s look at the files pulled down for each of the database solutions:
MongoDB
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/mongo.compose.yaml && \
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/compose.env
PostgreSQL
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/postgres.compose.yaml && \
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/compose.env
SQlite
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/sqlite.compose.yaml && \
wget -P komodo https://raw.githubusercontent.com/mbecker20/komodo/main/compose/compose.env
Setting database password and connection password
There are a couple of configuration settings that you want to configure:
- db credentials
- passkey
The passkey is something you will want to make complex and strong since it will be the “shared secret” so to speak between the core and periphery.
Download the compose and env files
To download the files, just run the wget files shown above, depending on the type of DB technology you want to use for the DB backend.
Running the docker compose up -d command
After you have customized the env file, we can run the command to bring up the core:
docker-compose -f komodo-compose.yml --env-file compose.env up -d
While the installation isn’t complicated, it is a bit less friendly than installing Portainer which has simple containers to pull down for each side (server and client). So, keep that in mind for this portainer alternative.
Install the Komodo Periphery
Installing the Komodo Periphery component on your remote docker container hosts is straightforward. It is similar to the core component. You will need to set the passkey configuration in the periphery compose file to match what you configured for the core. This will allow the periphery and core to communicate.
Logging into Komodo
After you bring up the Komodo core, you can browse to your IP or hostname on port 80 and you should be able to see the Komodo login screen. One thing the Komodo documentation I don’t think made very clear is that you don’t set the initial password for the account. Instead, type in the username and password and then click Sign Up.
Komodo interface
Below we can see the Komodo interface. It is actually a really nice interface, very performant. It is written in Rust. When you log into the dashboard, you see the servers you have added to the interface. One thing I don’t like here is it doesn’t look like you have the ability to customize the dashboard. It would be nice to see containers overview here as well, along with any alerts, etc.
Below is a view of the server dashboard once you click on a server. You can see a wealth of information here. You also have the ability to restart all containers, pause containers, stop containers, and a couple of other interesting options here: prune buildx and prune system. These allow you the ability to prune the docker system and build artifacts.
Below is the containers dashboard. One point I would like to call out about the Komodo containers dashboard compared to Portainer is you see an aggregated view of all containers across all hosts. This is a capability that I wish Portainer had as I think it is helpful to have a holistic view. If you are running dozens, hundreds, or even more containers, it makes it much easier to find where a container is running without having to first know the container host specifically.
I like how Komodo gives you some visual alerting that helps to give visibility to issues in the environment. Here you can see the red “bang” in the upper right-hand corner indicating an issue. I think the alterting features are stronger currently with this portainer alternative.
When drilling into the alarm, I see a disk space warning for a host.
When you click a container, you see a good amount of information, including the logs displayed for the container.
Creating docker stacks
Portainer is well-known for its Docker stack functionality. As a Portainer alternative in this sense, with Komodo, you can also create docker stacks very easily in the interface. Below, you can see you have the ability to create a stack from multiple sources, including UI defined, Files On Server, and Git repo.
Below is a look after clicking on the UI editor. You can easily start creating your compose file in the web editor.
Portainer alternative? Comparison of features between Portainer vs Komodo
Here’s a comparison table to see if Komodo is a Portainer alternative to make use of:
Feature | Portainer | Komodo |
---|---|---|
Primary Function | A really nice UI for containerized environments (arguably the best), including Docker, Docker Swarm, and Kubernetes, with added capabilities for cluster orchestration and management | A web app that allows managing servers, builds, deployments, and Docker-based environments. It emphasizes automation, Git integration, and infrastructure management. |
Container Orchestration | Many container orchestration features here. It fully supports Kubernetes, Docker Swarm, and standalone Docker environments. With this you can deploy, scale, and manage Kubernetes resources, namespaces, and services. Also orchestrates Kubernetes cluster creation using MicroK8s. | Limited to Docker environments; does not support Kubernetes. I didn’t see Docker Swarm support listed currently but found they are on the roadmap for 1.17.x release for Swarm and 1.18.x release for Kubernetes. |
Cluster Management | Enables users to build and manage Kubernetes clusters directly from the UI (e.g., via MicroK8s integration). You can also see the cluster overview with Docker swarm clusters which is super nice | No support for building or managing Kubernetes clusters. Focuses primarily on server-level Docker container management and infrastructure automation. Cluster features are on the roadmap starting in the 1.17.x release |
Build Automation | Does not natively include CI/CD pipeline or build automation features but it integrates with CI/CD tools like (e.g., Jenkins, GitLab CI/CD). | Supports auto-versioned Docker image builds triggered by webhooks or Git updates. This provides a more integrated approach for automation workflow, builds and deployments. |
Docker Compose Support | Full Docker Compose stack management with UI-based configuration and lifecycle management. It also has a catalog of available stacks you can deploy from the interface. | Supports Docker Compose stacks with configuration files stored locally or in Git repositories. You can enable auto-deployment on Git push. |
Git Integration | Git integration with external Git repos and you can use external tools for version control and CI/CD workflows. You can enable a GitOps approach in Portainer natively so that when you make a change in Git these changes are polled by Portainer and applied to your environment. | Strong intetgration with Git for deployment and configuration management. You can define deployment configurations in Git repositories. You can also auto-deploy changes, and synchronize changes made through the UI back to Git. |
Server Management | Centralized management for Docker, Swarm, and Kubernetes. You have resource monitoring, logs, and status tracking. | Focuses on multi-server management, with system health alerts for CPU, memory, and disk usage, alongside container management capabilities. No Kubernetes support, but on the roadmap for 1.18.x release. |
Notifications | This is something Portainer is working on for future roadmap. You don’t have the ability to send out notifications which would be a huge benefit | With Komodo, you do have the ability to send out notifications from the solution. You can send to a custom web endpoint, Discord, and Slack. It would be great to see more options here, but just having notifications is great. |
Monitoring and Observability | You can view logging and resource metrics for containers, services, and clusters through its UI. There is also external integrations (e.g., Prometheus or Grafana) for advanced observability. | Offers basic resource monitoring for servers and containers but does not support external observability tool integrations natively. |
Extensibility and API Access | It has a REST API for automation and integration with other tools. You can enable extended functionality for managing resources and applications. | It offers Offers REST and WebSocket APIs. There are also SDKs to manage resources programmatically. This may support broader infrastructure automation. |
Kubernetes Support | Strong Kubernetes support, including application deployment, scaling, namespace management, and orchestrating Kubernetes clusters (e.g., MicroK8s). | No Kubernetes support. Focuses on Docker container and server management. This is listed to be on the roadmap in 1.18.x release. |
Swarm Support | Full Docker Swarm support for deploying and managing services, stacks, and networks in clustered environments. | No Docker Swarm support or at least that I could find documented. This is listed as on the roadmap with 1.17.x release. |
Configuration Management | Supports environment variables and secrets for containerized applications. | Provides shared global variables and secret management, enabling interpolation across deployments. |
Licensing | Business Edition license gets you Advanced features (e.g., RBAC, registry management, activity auditing). The Community Edition is free but limited in some feature sets. | Fully free and open-source for all features, with no licensing tiers or restrictions. |
Wrapping up
Hopefully, this overview of Komodo will give you a good idea of the strengths and weaknesses of this Portainer alternative. Using both now for a while. I think Komodo is a great tool, but Portainer is still the best tool between the two for production workloads. It has the polish and features, including Swarm and Kubernetes that production environments will benefit from. However, for home lab, download and run Komodo and check out the features yourself to see if this is a viable tool you can use. I definitely think it has many great features to benefit from.