About
What devhome is
A self-hosted homelab built to practice and document the same platform-engineering patterns used in production enterprise environments: infrastructure as code (Terraform/Packer), configuration management (Ansible), GitOps delivery (ArgoCD), fleet management (Rancher), centralized secrets (Vault), and a hybrid connection to Azure (Arc, private AKS).
Why this documentation exists
Homelab knowledge is easy to lose — a routing workaround, a DHCP quirk, a script that silently swallows an error for months — the moment nobody remembers why something was done a certain way. This site is a deliberate attempt to keep the why, not just the how, attached to every non-obvious decision, so the lab (and anyone setting up something similar) doesn't have to re-derive hard-won lessons from scratch.
How to update this site
Content lives under docs/, organized by subsystem. Navigation order and grouping is
controlled entirely by mkdocs.yaml's nav: block — adding a file under docs/
doesn't make it appear in the site unless it's also added there.
Self-hosted as a Docker container on truenas-dr — see the README in
config/truenas/compose/devhome-docs/docs/ for the deploy command and why it lives on
port 8443 rather than 443.
Relationship to the main devhome repo
This site documents the lab; it does not contain the lab's actual Terraform, Ansible,
or Kubernetes manifests — those live in the devhome repo. Several pages here link
directly to specific files/runbooks in that repo (e.g.
config/truenas/asymmetric-routing-fix.md,
k8s/dke-mgmt/node-ip-change-runbook.md) as the canonical, most-detailed source —
this site summarizes and cross-links rather than duplicating them wholesale, so there's
one source of truth per topic, not two that can drift apart.
Where the deeper history lives
Beyond this site and the devhome repo itself, there's a third source: a persistent,
per-topic memory store (the devhome-memory MCP server — a small FastMCP server,
itself running as a Docker container on truenas-dr, storing one markdown file per
lesson learned) that exists specifically so operational knowledge survives a repo
relocation or a long gap between sessions. It predates and outlives any single repo
location — devhome itself was a from-scratch relocation of an earlier repo
(devhome-gitops) that had to be abandoned because secrets were committed to its git
history (see Vault Overview), and the memory store carried
straight through that move unaffected. A large share of this site's more detailed
troubleshooting content (the Supervisor/WCP operations page
in particular) was written directly from that store.