Computers

Portainer Alternative Komodo for Docker Stack Management and Deployment

Learn about Komodo which is a free and open-source Portainer alternative for Docker Stacks. What are its strengths and weaknesses for Docker, Kubernetes, Swarm?

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.

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.

Komodo architecture
Komodo architecture

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
Types of db installations with komodo
Types of db installations with komodo

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.

Pulling down the files for postgresql
Pulling down the files for postgresql

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
Running the docker compose up d command with the environment file
Running the docker compose up d command with the environment file

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.

Install the komodo periphery
Install the komodo periphery

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.

Creating the initial account that will be an admin
Creating the initial account that will be an admin

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.

Komodo dashboard
Komodo dashboard

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.

Looking at a docker container host
Looking at a docker container host

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.

Komodo containers dashboard
Komodo containers dashboard

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.

Alerting and visibility of warnings in komodo
Alerting and visibility of warnings in komodo

When drilling into the alarm, I see a disk space warning for a host.

Viewing alert data in komodo
Viewing alert data in komodo

When you click a container, you see a good amount of information, including the logs displayed for the container.

Viewing a container and logs
Viewing a container and logs

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.

Building a docker stack in komodo
Building a docker stack in komodo

Below is a look after clicking on the UI editor. You can easily start creating your compose file in the web editor.

Building a docker compose file in the ui of komodo
Building a docker compose file in the ui of komodo

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:

FeaturePortainerKomodo
Primary FunctionA really nice UI for containerized environments (arguably the best), including Docker, Docker Swarm, and Kubernetes, with added capabilities for cluster orchestration and managementA web app that allows managing servers, builds, deployments, and Docker-based environments. It emphasizes automation, Git integration, and infrastructure management.
Container OrchestrationMany 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 ManagementEnables 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 niceNo 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 AutomationDoes 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 SupportFull 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 IntegrationGit 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 ManagementCentralized 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.
NotificationsThis is something Portainer is working on for future roadmap. You don’t have the ability to send out notifications which would be a huge benefitWith 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 ObservabilityYou 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 AccessIt 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 SupportStrong 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 SupportFull 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 ManagementSupports environment variables and secrets for containerized applications.Provides shared global variables and secret management, enabling interpolation across deployments.
LicensingBusiness 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.

Subscribe to VirtualizationHowto via Email ๐Ÿ””

Enter your email address to subscribe to this blog and receive notifications of new posts by email.



Brandon Lee

Brandon Lee is the Senior Writer, Engineer and owner at Virtualizationhowto.com, and a 7-time VMware vExpert, with over two decades of experience in Information Technology. Having worked for numerous Fortune 500 companies as well as in various industries, He has extensive experience in various IT segments and is a strong advocate for open source technologies. Brandon holds many industry certifications, loves the outdoors and spending time with family. Also, he goes through the effort of testing and troubleshooting issues, so you don't have to.

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.