1 mininfraastrokubernetes

Hello, world

Placeholder post — the blog is live, real articles land here next.

This is an example post. It exists so the site has something to render while the real writing is still in progress — replace or delete it whenever you like.

What this blog runs on

Nothing exotic, deliberately:

  • Astro, building Markdown files into static HTML at image-build time.
  • nginx (unprivileged, non-root, read-only root filesystem) serving the compiled output — about 20 MB of container.
  • A single-node Kubernetes cluster on a NUC in my apartment, reached through an outbound-only Cloudflare tunnel. No inbound ports are open.

There is no database, no CMS, and no admin panel. A post is a file in git; the deploy is a rebuilt image and a rolling restart.

Adding a post

Drop a .md file into src/content/blog/ with frontmatter:

---
title: 'A title'
description: 'One sentence, used for previews and meta tags.'
pubDate: 'Jul 27 2026'
---

title, description, and pubDate are required and validated at build time — a malformed post fails the build rather than shipping broken. updatedDate and heroImage are optional.