Off topic

Yay! First post written across two countries.
Osaka + Kobe = perfect short break destination.

nice-coffee
The Glitch Coffee offers great coffee at a reasonable price.

Back to the post

Recently I wanted to ditch Portainer for a couple of reasons:

  • Why not? It is always fun to tinker.
  • A 5-instance limit for Portainer CE, which is not enough for a bunch of VMs.
  • Even though there is a free Portainer BE offer, it is only 3 nodes and asks for unnecessary information
  • Some core functions are paywalled, e.g. auto-update image, you need watchtower to do that on Portainer CE.

So I checked the available FOSS options and found two of them:

Dockge looks cool and neat, but it is not that feature-rich.
So I gave Komodo a shot and it looked good to me.
Komodo

Why Komodo?

  • The feature set is somewhere practical enough for a homelabber (not sure about production environment)
  • It is open-source
  • It does not require a business license to work with
  • The UI is simple enough for basic operations
  • It is automated if you configure it well

Before this, I edited my stack compose files directly in the Portainer UI, which was fine enough (they were mostly set-and-forget).
But I wanted to put the compose files I deploy with Komodo into a git repo for easier container redeployment.
Of course you can edit your compose file in the Komodo UI, but I chose not to.

Why not Komodo?

So far Komodo does miss a few features provided by Portainer:

  • Although it claims it supports Podman , I can’t get it to work by aliasing
  • No UI for container shell access, you need good old docker exec to do that
  • No UI for uploading files to volumes
  • No Docker swarm support (which I don’t need at this moment)

Install and Configure Komodo

The Komodo installation guide covers the setup details; I went with the MongoDB backend version.

Optionally, you could install Komodo Periphery on any other machine where you want to run those services.
It is basically Komodo’s equivalent of the Portainer agent.

Add your server to the Komodo in the UI, set the server location and enable it.
add-server

After adding the new server, you can add the stack by filling in the info:

  • Server
  • Choose mode as “Git Repo”
  • Fill in the account, repo and branch
    • You will need to generate an access token for your Gitea account with read access to the repo
  • By default, Komodo will look for compose.yaml in the root folder to deploy
    • You can set Run Directory if you want to version control all stack in one repo like me, and sort them into different folders.
  • new-stack

Auto-update image should be a core feature, not something done via watchtower. ☹️
auto-update

Automatic Deployment by using Webhook

Komodo provides a webhook to deploy the stack when changes are pushed to the git repo.

Portainer also has this feature, but it is paywalled. (Portainer, seriously?)
portainer-webhook-paywall

To integrate it with Gitea when you push:

  1. (Do this ONCE only) Add your Komodo domain to your ALLOWED_HOST_LIST in app.ini.
    Otherwise, it won’t work.
  2. Go to the stack you want to auto-deploy
    • Enable the webhook
    • Set any Webhook secret string, anything will do but do not leave it empty
    • Select Auth Style as GitHub and copy the URL
  • komodo-webhook-setting
  1. Go to your Gitea project and select Settings > Webhooks
    • Add a Gitea webhook
    • Target URL = Komodo webhook URL
    • Secret = the webhook secret set on Komodo
  • gitea-webhook-setting

Test it by pushing something to the repo, and you are good to go with automatic redeploys for that stack.