Composable self-hosted stack definitions, environment templates, and deployment guidance for a Docker-based homelab built around Komodo, SOPS/age, reverse proxying, and service-specific app stacks.
This repository documents a Docker-based homelab layout built around
stack-level compose.yaml files, tracked .env.example templates, and
deployment documentation. The structure is intended to stay reusable at the
stack level while keeping the operational workflow consistent across the repo.
If this project saves you time or helps your setup, you can support ongoing maintenance via Ko-fi or Buy Me a Coffee.
This repository is kept in sync automatically. When I update my homelab configuration, the published repository is refreshed through the synchronization workflow too.
- Background
- What This Repository Contains
- Stack Coverage
- Automation Scripts
- Repository Layout
- Using This Repository as a Base
- Companion Repositories
Many homelab repositories either reflect a single environment too closely or stop at isolated examples. This repository keeps the deployment model, config templates, and surrounding documentation in one place so the stack layout and operations workflow remain visible together.
The focus is on:
- stack-oriented Docker Compose deployments
- reproducible environment templates
- Komodo-based deployment workflows
- encrypted environment handling with SOPS and age
- documentation that explains how the surrounding deployment model works
At the root level, this repository gives you:
- a
stacksdirectory that contains one folder per stack or app - a
compose.yamlper stack - a tracked
.env.exampleper stack as the configuration starting point - stack-specific
README.mdfiles with upstream links and context - deployment guides under
docs
The goal is not to be a generic Docker examples collection. The repository is designed as a coherent homelab layout where networking, access management, deployment, monitoring, and media-adjacent services can live in one structure.
The repository currently spans several homelab areas:
- Edge and networking:
traefik,cloudflared,adguard-home-unbound,crowdsec - Access, control, and dashboards:
komodo,authentik,homepage,dozzle - Media, requests, indexing, and adjacent tooling:
radarr,sonarr,sabnzbd,prowlarr,seerr,episeerr,plex,tautulli,tracearr,umlautadaptarr,notifiarr,yamtrack - Utility and infrastructure services:
mosquitto,registry,speedtest-tracker,homebridge,changedetection-io,filebrowser-pnp,cloudberry-backup,uptime-kuma,apprise
Not every stack is required. The repository is modular, so individual stacks can be used independently or as part of a narrower deployment scope.
Some stacks also include focused helper scripts under
stacks/<stack>/scripts/. These cover small operational workflows
such as post-processing, state handling, queue cleanup, and maintenance
automation that are tied to a concrete service stack.
Current published script areas:
Radarr: Auto Tag and Deferred Cleanup for Watched MoviesSABnzbd + Gluetun: Download Speed Monitor and Recovery Script, ISO Extractor Post-Processing Script, Delete Items From History ScriptsUptime Kuma: Appdata Backup Uptime Kuma Maintenance Helper
Each script keeps its own README.md, changelog, and any script-specific
assets or example files next to the implementation.
The layout is built to be easy to navigate:
stackscontains the deployment files and local stack READMEsdocscontains cross-stack deployment guidance- stack READMEs explain what each service is for, what images are used, and where the upstream project lives
For the deployment workflow itself, the most important docs are:
One way to work from this repository is:
- Pick the stack directories that match the target environment.
These now live under
stacks. - Start from each stack's
.env.exampleand fill in the local values. - Adjust host paths, domains, and networking for the deployment environment.
- Follow the documentation in
docsfor encrypted env handling and deployment behavior. - Deploy the selected stacks with Komodo or plain Docker Compose, depending on the operating model.
This structure is useful when the deployment needs:
- a repo-backed homelab layout rather than isolated Compose snippets
- consistent environment file handling across stacks
- a documented path toward encrypted secrets in stack deployments
- room for environment-specific paths, domains, and operational preferences
- komodo-periphery-sops-age:
Komodo Periphery image with
sopsandagepreinstalled - caddy-modules:
custom Caddy image builds used by the
caddystack