State of the homelab, Mid-2026
Half a year has passed since I wrote the last State of the homelab post. A lot has changed since then, and I figured this is a good cadence to keep up. So going forward, I’ll be doing these as a bi-annual update: one in June and one in December.
Hardware
The biggest change this half is that the homelab finally outgrew the single Mac mini. The Pis, Elitedesks, and the Jetson I bought at the end of last year are now all racked, cabled, and doing actual work.
The cluster looks like this now:
| Hostname | Hardware | Role |
|---|---|---|
| marten | Mac Mini 2018 | NAS / media server |
| marmot[1:3] | Elitedesk 800 G3 | k3s server |
| pika[1:4] | RPi 5 8GB | k3s agent |
| numbat | Jetson AGX Orin | AI / ML workloads |
The marmots run the control plane and the heavier workloads, the pikas pick up the lighter stateless stuff, and numbat is dedicated to anything that wants a GPU. Marten is still doing its original job of holding all the bulk data, mounted into the cluster over NFS.
Getting the Jetson onto k3s was its own adventure. I had to recompile the L4T kernel to get Istio and Longhorn working on it, which I wrote about in Running kubernetes on Jetson AGX Orin.
Infrastructure
The other big shift is that everything moved off Docker Compose and onto Kubernetes. I’m running k3s with FluxCD doing GitOps from day one, which I cannot recommend enough (see Automate from day one with FluxCD).
The current stack:
- k3s for orchestration
- FluxCD for GitOps
- Istio (ambient mode) for service mesh and ingress
- MetalLB for the network load balancer
- Pangolin for VPN between the homelab and Hetzner (see Using Pangolin to unify my networks)
- Cloudflare for exposing things outside the LAN
- AdGuard + external-dns for internal DNS
- Longhorn for block storage, plus NFS off marten for media
- cert-manager for certs
- External Secrets backed by 1Password Connect so no secrets live in Git
- Victoria Metrics + Grafana + node-exporter for monitoring
- postgres-operator and redis-operator for stateful app dependencies
Bootstrapping nodes is all Ansible now, which is great because rebuilding a node is a one-liner instead of an afternoon.
Software
The application list has grown quite a bit. Most of the originals made the trip over to Kubernetes, and a few new ones showed up along the way:
- Authentik - SSO and OIDC in front of all of it
- CommaFeed - RSS reader
- HomeAssistant - Smart home
- Immich - Google Photos replacement
- Karakeep - Bookmarks
- Kiwix - Offline Wikipedia
- Matrix - Chat
- NextCloud - GSuite replacement, with Collabora for online docs
- OpenWebUI - ChatGPT replacement
- Paperless-ngx - Document archive
- Plex - Media server
- RSSHub - Feed generator for the sites that don’t have one
- Servarr + Overseerr - Media management
- TubeArchivist - YouTube archiver
- k8up - Backups for the cluster
Late-2026 Goals
Now that the cluster is real, the focus shifts from “build it” to “use it more and break it less.” Goals for the second half of the year:
- Self-host smart speakers and wire them into HomeAssistant + local AI
- Pick a real long-term storage solution (the MergerFS + SnapRAID setup on marten is on borrowed time)
- Get backups offsite, not just on-cluster with k8up
- Exercising, and test restore all backups
- Lean into automation: fewer manual nudges, more declarative everything
See you in late 2026.