Five years ago, I spun up my first Docker container. Today, I'm running a full Kubernetes cluster in my closet. Here's how I got here.

Why Self-Host?

Honestly? I needed to learn for my day job. Kubernetes was everywhere and I needed to actually understand it, not just read docs and mess around in sandboxes. I wanted to break things on my own hardware where nobody was going to call me at 2 AM.

The other stuff came later. Saving money, owning my data, not trusting some company with my watch history. And yeah, building things is just fun.

The Evolution

I didn't start small. I started with IBM Cloud Private at my work. If you know, you know. It was heavy and probably overkill, but it taught me a lot about how Kubernetes actually works under the hood. Its pretty complicated in a beautiful way.

I skipped the whole Docker Compose phase, honestly it always seemed like more of a headache than just learning Kubernetes properly. Why learn an in-between tool when I could just go straight to what the industry was using and I was using at work?

So that's what I did. k3s changed everything. Lightweight enough to run on a Raspberry Pi haha that's where it started in 2020, powerful enough to run my whole setup. The learning curve was steep but every hour paid off—at home and at work.

Today my cluster runs 24/7....unless a Great Freeze power outage happens. Traefik handles ingress and HTTPS. cert-manager deals with TLS so I don't have to think about it. When a container crashes, Kubernetes restarts it. When I want to add something new, it's a YAML file and kubectl apply. Done.

What's Actually Running?

I'll do a deeper dive on the full setup in another post. But to give you an idea—Jellyfin replaced all my streaming subscriptions and runs great on the cluster and I basically adopted it WAY BEFORE it even really had a userbase, not even a single usable app was around, probably one of the first K8s setups for it haha. Everything's accessible via custom domains, secured with TLS, all running on hardware in my closet.

What I've Learned

Start simple. One machine running k3s is enough to learn. (Use a Raspberry PI or something similar to start)

Embrace the YAML. Declarative infrastructure means you can version control everything, nuke it, and rebuild from scratch.

Backup religiously. Hardware fails.

Document everything. Future you will be grateful. Trust me.

What's Next

The homelab is never done, I am always tinkering. Next up is local AI, and maybe some home automation if I can justify another rabbit hole.

If you're on the fence—just start. Spin up k3s on an old laptop. Deploy one thing. Break it. Fix it. That's how you learn. Definitely how I learn for sure.