← Blog
Why I Self-Host Everything

Why I Self-Host Everything

homelabself-hostingdockerinfrastructure

It started with a Plex server. That’s how it always starts, right?

You set up one thing, and before you know it you’re running 30 containers, writing Terraform configs for your home network, and explaining to anyone who will listen why you need another hard drive. Hi, I’m Lucas, and I have a homelab problem.

The Setup

Everything runs in Docker with Docker Compose. I tried Kubernetes at home once. Life’s too short. Compose gives me declarative config, easy updates, and I can actually debug things at 1 AM without wanting to throw my laptop out the window.

Traefik sits in front of everything as the reverse proxy. Automatic HTTPS via Let’s Encrypt, dynamic service discovery from Docker labels, and dashboard for when I inevitably forget what’s running on which port. It was a pain to set up the first time, but now adding a new service is just a few labels in the compose file.

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.myapp.rule=Host(`myapp.crostamusic.com`)"
  - "traefik.http.routers.myapp.tls.certresolver=letsencrypt"

That’s it. New subdomain, automatic HTTPS, done.

Infrastructure as Code (Yes, At Home)

I use Terraform to manage my infrastructure. “Isn’t that overkill for a homelab?” Absolutely. But here’s the thing. when I inevitably break something and need to rebuild, having everything codified means I can get back to a working state in minutes instead of hours of “wait, what was that config option again?”

It also forces me to document decisions. Every resource in Terraform has a reason for existing. That’s better documentation than any wiki I’d never maintain.

The Monitoring Stack

This is where it gets arguably excessive. I run the full Grafana + Prometheus + Loki stack.

  • Prometheus scrapes metrics from everything. containers, the host, Traefik, you name it
  • Loki aggregates logs so I can search them in one place
  • Grafana ties it all together with dashboards

Do I need production-grade observability for my home network? No. Is it incredibly satisfying to see a dashboard light up when something happens? Yes. And honestly, running this stack at home has made me a better engineer at work. You develop an intuition for metrics and logging patterns that’s hard to get from just reading docs.

Home Automation

Home Assistant runs in its own VM and controls basically everything in the house. Lights, climate, presence detection. the usual smart home stuff. The real power is in the automations: lights that adjust based on time of day, climate control that responds to occupancy, and a morning routine that starts the coffee maker when my alarm goes off.

The integration with the rest of the homelab is where it gets fun. Home Assistant can see container health, network status, and system metrics. If a service goes down, I get a notification on my phone before I’d ever notice.

The Media Stack

I’ll keep this one brief: Sonarr, Radarr, Prowlarr, and friends. The arr stack automates media management, and it works beautifully. Combined with Plex, it’s the setup that started this whole journey.

Why Bother?

People always ask why I don’t just use cloud services. It’s a fair question. Here’s my honest answer:

Control. My data lives on hardware I own. Services I depend on can’t be shut down by a company pivoting to AI or getting acquired. My configs are version-controlled and reproducible.

Learning. I’ve learned more about networking, DNS, TLS, reverse proxies, and Linux administration from my homelab than from any course or tutorial. When you’re the sysadmin, every problem is a learning opportunity (whether you want it to be or not).

It’s fun. This is the part people underestimate. Tinkering with infrastructure, optimizing systems, building something that works exactly the way you want. it’s the same satisfaction I get from finishing a project. You’re creating something from nothing.

Cost. After the initial hardware investment, running services at home is essentially free. No monthly subscriptions adding up. No “oh, they raised prices again.”

The Honest Downsides

It’s not all uptime and clean dashboards. Self-hosting means:

  • You’re on-call 24/7. When Plex goes down during movie night, there’s no support team to blame.
  • Updates are your problem. Security patches don’t apply themselves (though Watchtower helps).
  • Explaining it is hard. “Do you really need another container?” is a valid question.

But for me, the tradeoffs are worth it. There’s something deeply satisfying about owning your stack end-to-end, understanding every layer, and knowing that if something breaks, you have the knowledge to fix it.

If you’re on the fence about self-hosting, my advice: start small. One service, one container. See if you catch the bug. Fair warning. you probably will.