Nodes ready
– / –
The stack · five layersJump to a layer
Checking homelab status
Platform
Applications
Homelab · platform engineering
The story of my homelab, from a single box to a GitOps-run platform, with live evidence that it works. Scroll to build it.
01 / The stack
One server. A mirrored ZFS pool for everything irreplaceable, NVMe for fast disks, a GPU for transcoding.
Proxmox splits the box into virtual machines and containers. The cluster manager runs beside the cluster, never inside it.
Four Talos Linux nodes form Kubernetes: no SSH, no shell, every machine described by its configuration.
Git is the source of truth. Flux applies every change; networking, identity, secrets, certificates, backups and monitoring come with it.
What the family uses every day: photos, media, files, documents, code and automation, behind one login.
02 / A request
Someone opens a link. From here on, nothing is trusted by default.
One port is open, and only to addresses from one country. Intrusion prevention watches the rest. Most scanners never get further.
Encryption ends here, with certificates that renew themselves. Rate limits slow down anyone guessing passwords.
One account for every app, with a second factor. The identity service decides who gets in.
The request arrives, checked three times on the way.
03 / When it breaks
Four nodes, the apps spread across the three workers.
A worker stops answering. Kubernetes marks it not ready and sends it no more work.
Its apps start again on the healthy workers. Nobody has to log in for that.
If data itself is lost, it comes back from backup. Every night it goes to storage outside the cluster, and an encrypted copy leaves the house.
The node is rebuilt from its configuration and rejoins. A restore test runs every night, so the backups are proven, not hoped for.
The restore test runs every night. Its live result shows here once the lab reports in.
04 / It's live
Everything above was a drawing. These values come from the cluster itself, pushed every five minutes.
Checking homelab status
– / –
–
–%
last 30 days
–
in the family library
–
per day, last 30 days
–%
mirrored pool for irreplaceable data
About
This lab is where I run things the way I would at work: everything in Git, every change reviewed, backups that get restored on a schedule, and nothing that depends on luck. If you are building something similar or want to compare notes, write me.