Colophon
A short write-up of how this site is put together, for anyone curious.
Built with
The site is MkDocs with the Material for MkDocs theme, using its blog plugin for posts and a custom green palette instead of the stock theme colors. Content is plain Markdown, versioned in Git — no CMS, no database.
A couple of small build-time hooks generate the "recent posts" list and the Mastodon feed widget on the homepage from the post files themselves, so there's nothing to keep in sync by hand.
Built and deployed
Every change ships through a CI pipeline: linting (YAML, Markdown, Dockerfile, shell, Python), a security scan, then a container image build and release. The site itself is a small static build served by nginx, packaged as a container image and run with Podman on self-hosted infrastructure, reachable through a Cloudflare Tunnel rather than an exposed public IP.
Why this stack
Markdown-in-Git keeps writing frictionless and content portable, the CI pipeline means every change is linted and built the same way whether it's a typo fix or a new page, and running it myself on infrastructure I manage keeps the whole thing — hosting included — a small ongoing homelab project rather than a one-off.