Infrastructure as a long-running experiment

My homelab began as three Raspberry Pi 4 nodes and a Synology NAS. It has grown into a mixed-architecture K3s cluster with an x86 worker for heavier media, document, and machine-learning workloads.

The cluster runs the services my family actually uses, which makes it a useful place to practice the parts of infrastructure work that only appear over time: upgrades, storage migrations, observability, security boundaries, backups, resource contention, and recovery.

What it includes

  • A Helm-managed application and infrastructure stack
  • PostgreSQL, Valkey, NFS, and local storage where each is appropriate
  • Pocket ID-based OIDC across compatible applications
  • Targeted Kubernetes NetworkPolicies
  • VictoriaMetrics, Grafana, Beszel, Gatus, and synthetic checks
  • Nightly cluster and database backups
  • Cloudflare Tunnel for selected public services

The interesting part is less the service count than the operating discipline: keeping a small cluster understandable, recoverable, and pleasant to live with.