Every few months someone asks whether it’s time to move the homelab to Kubernetes. The answer is no, and it will keep being no, and the reason is not that Kubernetes is bad. It’s that Docker Compose already does the job, and the job is the point.

What a Homelab Actually Needs

  • Services start on boot.
  • Services restart when they crash.
  • Config lives in one readable file you can put in git.
  • Updating a service is a two-command operation.
  • You can understand the whole system in one sitting.

That’s the list. Compose covers all five with a YAML file short enough to read while your coffee is still hot.

The Case People Make for Kubernetes

High availability, autoscaling, rolling deploys, declarative everything. All real, all valuable — at work. At home, “high availability” means your household loses the recipe manager for five minutes while a container restarts. Nobody is paging you. There is no SLA. The autoscaler would scale between one and one.

What you actually pay for those features at home: an ingress controller to debug, certificates for the control plane, YAML that references YAML, and a cluster that itself becomes the most demanding service you host.

The Honest Exception

If your goal is learning Kubernetes — for the résumé, for the day job, for curiosity — then run Kubernetes. A homelab is a legitimate place to practice. Just be honest that the cluster is the hobby, not the hosting strategy. Those are different projects with different success criteria.

Boring Is a Feature

The best infrastructure decision most self-hosters can make is to spend their complexity budget on the services, not the platform. Every hour spent debugging the orchestrator is an hour not spent on the thing you actually wanted to run. Compose is boring the way a hammer is boring. It has one moving part and it hits the nail.

When a single YAML file stops being enough, you’ll know — not because a blog post told you, but because you’ll be feeling a specific pain. Until you can name that pain out loud, docker compose up -d is still all you need.