$ cat ~/projects/homelab/README.md

Homelab

A hybrid homelab: a three-node, mixed-architecture Kubernetes cluster run with GitOps and connected to AWS.

status running started 2026-01

  • Kubernetes
  • Argo CD
  • Cilium
  • MetalLB
  • ingress-nginx
  • cert-manager
  • Helm
  • Woodpecker CI
  • Prometheus/Grafana
  • Ollama
  • MLflow
  • Raspberry Pi
  • Synology NFS
  • AWS

What it does

My homelab is a three-node Kubernetes cluster that runs everything I self-host - media, ebooks, passwords, and automations - alongside local LLMs and the on-prem half of Security-Copilot. It mixes architectures: an x86 mini PC as the control plane and two arm64 Raspberry Pi 5s as workers, for 16 cores and 96 GB of RAM, with persistent storage on a Synology NAS over NFS.

It is managed with GitOps - every app is a manifest in Git, and Argo CD keeps the cluster in sync with it. It is also hybrid: workloads here share a container image, a cost budget, and data with AWS, over connections that always start from inside the lab.

Why I built it

Hardware

NodeHardwareRole
webhost1 ASUS PN50 mini PC - Ryzen 7 4700U (8 cores), 64 GB RAM, NVMe + 2 TB SSD Control plane (x86); also runs the heaviest apps
webhost5 Raspberry Pi 5 - 16 GB RAM, PoE, NVMe Worker (arm64)
webhost6 Raspberry Pi 5 - 16 GB RAM, PoE, NVMe Worker (arm64)
Synology DS124 Single-bay NAS NFS storage, backups, private container registry

Architecture

Git is the source of truth. Argo CD syncs every app into the cluster from a single root application, and Woodpecker CI builds images and pushes them to a private registry on the NAS, tagged with the commit they were built from. Cilium handles pod networking, MetalLB hands out LAN addresses for load-balanced services, and ingress-nginx routes each app's hostname to the right service. Stateful apps get volumes from the NAS through an NFS provisioner, with local-path volumes for node-local data.

Hybrid cloud

Security-Copilot runs in two places at once: as a scale-to-zero AWS Lambda and as a deployment on this cluster. The lab connects to AWS only where it has a reason to:

The cloud side is covered in detail on the Security-Copilot page.

What runs on it

Platform

Machine learning

Security

Self-hosted apps

Lessons learned