I spent 7 years building a homelab. Most of it was wrong. All of it was necessary.


Year 1: The Cathedral

I built a proper rack. Rails. Cable management. Color-coded everything. Spent more time making it beautiful than making it work.

The first power outage killed three drives. Turns out beauty doesn’t help with UPS sizing.

Lesson: None. I rebuilt it prettier.


Year 2: The Tower of Babel

I wanted to learn everything. So I ran everything. Kubernetes cluster. Ceph storage. Proxmox hypervisors. A dozen containers that each depended on three others.

I spent more time fixing the infrastructure than using it.

Monday: Ceph OSD down. Tuesday: etcd consensus lost. Wednesday: wondering why I do this.

Lesson: Complexity has a maintenance cost. I ignored it.


Year 3: The Paranoid

Security obsession. VLANs for everything. Firewall rules that took longer to write than the services they protected. mTLS everywhere. Zero trust before zero trust was a marketing term.

I locked myself out seventeen times. Once for three days because the cert renewal script depended on a service that depended on the certs.

Lesson: Security theater is still theater.


Year 4: The Minimalist

I tore it all down. Single server. Docker Compose. No orchestration. No distributed anything.

It worked. For six months. Then I needed high availability for something, and I realized I’d forgotten how the cluster worked.

Lesson: Minimalism is just complexity you’ve chosen to ignore.


Year 5: The Automator

Everything in Ansible. Infrastructure as code. Idempotent deployments. If a server died, I could rebuild it in twenty minutes.

I spent four hundred hours writing playbooks for a lab that existed to save me time.

Lesson: Automation is procrastination with better tooling.


Year 6: The Accepter

I stopped optimizing. Let things be wrong. The monitoring dashboard had three red alerts I stopped caring about. The backup job was “probably” running.

Nothing catastrophic happened. Which meant I’d either gotten lucky or overengineered everything years ago.

Both possibilities were equally depressing.

Lesson: Sometimes “good enough” is just “too tired to fix.”


Year 7: The Now

Twelve servers. Most of them off. Three actually do things. The rest are “going to be used for something.”

The rack is dusty. The cable management is a memory. I haven’t logged into the Proxmox dashboard in two months.

It runs. Mostly. I’ve forgotten how half of it works.


What did I learn?

Nothing. Everything. The same thing.


I learned that building systems is easier than maintaining them. That documentation lies because the system changes but the docs don’t. That every abstraction leaks and every dependency breaks.

I learned that homelabs are not about the lab. They’re about having something to fix. Something to improve. Something to rage against when everything else is out of your control.

I learned that Sisyphus had rack servers.


The boulder rolls down. You push it up again. Not because you’ll reach the top, but because pushing is the only thing you know how to do.

I’ll probably tear it down next year. Build something new. Something better. Something that will also be wrong.

That’s fine.

That’s the point.