Jonas Hansen

Where to start with self-hosting

So you want to stop renting and run your own things, and every guide assumes you already know whether you want Kubernetes.

I have been there. Here is the decision first, the reasoning after.

Pick the smallest thing that fits

  • One app, one operator. Do not orchestrate. One box, a reverse proxy, and a database on the host. About €7 a month. → One box, two jails and a five second deploy, and how to get FreeBSD onto Hetzner if that is the box you want.

  • A handful of services, one team, existing compose files. Docker Swarm. You already know most of it, and docker stack deploy is a compose file with a different verb. → Docker Swarm instead of a k3s platform

  • Several services and one person authoring the isolation. Still not Kubernetes. Three machines with jails or containers, hand-tended, beats a cluster until the tending becomes the job. → Three FreeBSD boxes instead of a k3s cluster

  • Tenants who must not see each other, or a second author. Now Kubernetes. Not for the scheduler — for the part that generates each tenant’s quota, network policy and permissions and then checks they are still there. €122 a month for three nodes and a load balancer. → K3s starter kit on Hetzner cloud

The honest line, from having run both: below about ten services, the simpler answer wins on every axis that matters. What flips it is rarely the machine count. It is the second person who has to keep the isolation correct, because that is the point at which “we remember to do it” stops being true.

If you picked the cluster

Two things you will need within a week of it working, and will not have thought about on day one:

The platform itself is at hcloud-k3s-platform-kit: fork it, edit the values, apply it. Every decision has the reasoning attached, and the failures are in a file of their own.

Two workloads, worked through

Once you have somewhere to put things, the interesting question is what fits and what does not.

What you are actually signing up for

Nobody upgrades your control plane. There is no support contract. When something breaks at two in the morning the runbook is a file you wrote.

That is the trade, and it is worth it exactly when the thing you get back — isolation you can prove, on hardware you can price — is worth more than the attention it costs. For one app it is not. For a handful of tenants it starts to be.

Every number in this series was measured on a cluster that existed, and where I could not measure something I say so rather than estimating it. Several posts carry a list of what they have not proven, which is the part I would want to read first if somebody else had written them.