Europe/London
BlogJuly 8, 2026

One Box, Many Services: Self-Hosting an Indie Stack in 2026

Dubz
I've been hosting my own things for a long time. When Flex started in 1994 the web barely existed; by the late nineties I was learning that if your presence online lived on someone else's terms, it lived on borrowed time. Thirty years later the equipment is better but the instinct is the same: own the layer. This post is the current state of that instinct: the actual stack running this site and its siblings, in 2026. A handful of Contabo VPSes. Not Kubernetes, not serverless. Literal boxes with IP addresses, each running a shelf of services: several Next.js sites behind nginx, MariaDB containers for the data, uptime monitoring, the usual suspects. One nginx box fronts the domains with Let's Encrypt certificates that renew themselves. Two decisions do most of the work: 1. A private network over the messy internet. Every box sits on a Tailscale mesh. SSH, database replication, administrative panels: all of it travels the private network, and the public internet only ever sees port 80, 443, and whatever a service genuinely needs to expose. This one move deletes about eighty percent of the attack surface a self-hoster normally worries about. Management traffic that used to need VPN ceremony is just... there, from my laptop, as if the fleet were one machine. 2. systemd for apps, Docker for data. Containerize the stateful things where images are maintained upstream (databases especially, I never hand-install a MariaDB anymore), and run application processes as plain systemd units. A Next.js app is a Node process with a port; giving it a unit file with Restart=always is simpler than wrapping it in a container, simpler to inspect, and starts on boot without ceremony. Docker for what Docker is genuinely good at; systemd for what an operating system already does. The whole fleet costs less per month than a decent managed-platform bill for one of these sites. The trade is your time: patching, monitoring, the occasional 2am look at a log. Tooling keeps shrinking that trade: automated certificates, watchtower for container updates, uptime alerts that find problems before visitors do. But let's be honest: self-hosting is paying money instead of attention, in whatever ratio you can afford. Not just the money. Three things managed platforms can't sell you:
  • Sovereignty. Your data, your disks, your backups, your exit. No platform decides to change pricing, deprecate a runtime, or "sunset" your region. For client work, this is increasingly a sales point (see the HD2 line on data sovereignty); procurement is starting to care.
  • Honest debugging. When something breaks, there's no support-ticket layer between you and the machine. journalctl doesn't hallucinate.
  • The skills compound. Everything I know about Linux, networking, and deployment came from owning boxes. The fleet is tuition that pays wages.
The industry spent a decade telling us servers were over, abstract them away, rent the runtime, never touch a box. And for a lot of use cases, fair. But the pendulum is visibly swinging back, because "your infrastructure as someone else's abstraction layer" has a price that isn't on the invoice. A small fleet on cheap boxes, fronted by nginx, meshed with Tailscale, running boring processes under systemd: that's not nostalgia. It's the most leverage per pound I've found in tech, and I've been counting since 1994.
Share this post: