14 hosts, ~110 containers, and the documentation discipline to keep them legible
Overview
A homelab stops being a hobby the moment your household depends on it. Mine crossed that line — DNS, home automation, media, document storage and password-adjacent SSO all run on it. At that point the failure mode is no longer "a service is down." It is "I no longer remember why this is configured this way, and the person who knew is me six weeks ago."
Sole architect and operator. Every host, every compose file, every decision record.
A Proxmox node hosts purpose-separated Docker VMs: shared infrastructure (reverse proxy, SSO, metrics, logs, uptime, push notifications), an operational backend (self-hosted Git, CI runners, an append-only event ledger), human-facing knowledge and document apps, and a sandbox for experiments and public demos. A NAS holds persistence and backups and doubles as the second DNS node. A separate GPU workstation runs the local model stack.
Ingress is a single reverse proxy with forward-auth in front of everything internal. DNS runs highly available across two nodes with one-way policy sync from a designated source of truth, so the replica can never drift into being a second opinion.
Everything is Git-backed and Git-first: inventory, compose files, runbooks and decision records live in one repo, and the running fleet is compared against that repo by read-only collectors that change nothing and record their own errors rather than crashing.
14 hosts and around 110 containers, documented in 368 markdown pages: 21 architecture decision records, 131 runbooks — including a restore procedure for every stateful service — and postmortems kept honest enough to include the fixes that didn't work.
Write the decision records from day one rather than reconstructing them. The expensive part was never the configuration; it was recovering the reasoning behind configuration I had already forgotten. And buy the UPS before the unclean power loss teaches you to.
Lessons
Homelab is where I test ops patterns before I take them to work — cheap blast radius, high learning rate. The pattern that transferred best was read-only first: collectors that observe and report earned trust long before anything was allowed to change state.
Stack
Related writing
Talk shop
If you're hiring for similar backend, AWS, voice, or integration work — or just want to compare notes on architecture — reach out directly.