Home Lab
Runs on a Synology DS923+ NAS. Stacks, builds, procedures and alerters are declared in Komodo TOML and synced from a git repo; secrets stay in env files kept out of it.
Architecture
Komodo splits into a core that holds state and serves the API and a periphery agent that does the work on the Docker host. Synology's reverse proxy terminates TLS and routes by virtual host, so no container publishes a port to the network.
Stacks
Each stack below is one block in resources.toml. Select a stack to see what it runs and how it is checked.
Komodo Infrastructure
The management plane. Core serves the UI and API behind OIDC; periphery does the work on the Docker host; mongo holds resource state that git is the source of truth for.
CI/CD and Infrastructure as Code
Two webhook-driven pipelines. A code push builds images in parallel and redeploys the stack; a config push runs ResourceSync against resources.toml.
Application pipeline
Code push to image on the same host it will run on.
Infrastructure loop
Config push to reconciled infrastructure, no imperative step.
Automation and Recovery
Full rebuild from the komodo-configs repo, the env files and a backup restore. The last step verifies it: health endpoints answer, an SSO login completes, a webhook fires. One TOML file, and a recovery procedure I have run end to end.
Decisions
Komodo over Portainer
Moved off Portainer so that stacks, builds, procedures and alerters live in a git-tracked TOML file.
Portainer kept its state in its own database, so every change was a click nobody could review or replay. Komodo reads resource definitions from a repo and reconciles on push, which makes the environment reproducible from source. The cost is another thing to operate: Komodo is itself three containers, and while it is down the fallback is docker compose over SSH.