From One Raspberry Pi to 100 Docker Containers

How a single Raspberry Pi running a few Python scripts quietly became a homelab of over a hundred Docker containers — and why the more I build, the more control I get back.

From One Raspberry Pi to 100 Docker Containers

The other day I was scrolling through container logs in Dozzle when I glanced at the sidebar.

104 containers.

I actually stopped for a second.

Somehow, without ever setting out to build a homelab of this size, I’d ended up running well over a hundred Docker containers across my infrastructure. It made me think back to where all of this started.

Like a lot of people, it began with a Raspberry Pi.

Back then it was just a handful of Python scripts automating small jobs around the house. Before every second YouTube channel was talking about home automation and AI, I was happily SSH’ing into a little Linux box to see what else I could make it do. RaspberryPI

That single Pi eventually became a Hyper-V cluster built from four Intel NUCs. One of them even started life as an old Datto storage appliance. Rather than throwing perfectly usable hardware away, I kept finding another purpose for it.

Later came three Dell Micro Form Factor PCs, now running as a Proxmox cluster, all mounted neatly inside a 3D printed rack designed by Stephan. It’s probably one of my favourite parts of the lab. It proves you don’t always need enterprise hardware or expensive cabinets to build something tidy and reliable. Dell Rack

That’s one thing I’ve grown to appreciate over the years.

Hardware generally lasts far longer than people give it credit for.

In enterprise IT we’re conditioned to think in three, five or seven-year refresh cycles. In a homelab, those same machines can often provide another five years of useful service with very little effort. Reducing e-waste isn’t just about buying efficient hardware. Sometimes it’s about simply making better use of what already exists.

The software has evolved just as much.

Home Assistant has become so embedded into the house that if it goes offline, people notice. Lights stop behaving as expected, automations disappear and the family starts asking questions. At some point I realised I’d accidentally created a production environment at home.

That also meant introducing something I’d never expected to need outside of work.

Change control.

These days I think twice before updating anything on a Friday evening. It’s the same instinct that eventually made me pin every image tag and update deliberately rather than let things drift under me.

Alongside Home Assistant I’m running Portainer to manage the Docker environment, Dozzle for container logs, Dashy as my dashboard, Hugo for this website, Pi-hole for network-wide ad blocking, Open WebUI to give the kids a supervised AI interface, n8n for workflow automation, Caddy as a reverse proxy, Cloudflared tunnels, and dozens of small services I’ve written myself to solve specific problems.

Individually they’re tiny.

Collectively they make the house run.

Something else has changed during all of this.

I’ve realised just how many online services follow the same pattern. Start with a useful free tier, gradually introduce subscriptions, then if you stop paying you’re greeted with adverts or reduced functionality. Individually they’re inexpensive. Collectively they become another monthly bill that quietly grows over time.

My homelab has become the opposite of that.

The more I build, the more control I regain. My data stays on my equipment. My automations aren’t tied to someone else’s roadmap. If I want to experiment, I can. If I break something, it’s my fault and I get to fix it.

Maybe this is my own version of declouding.

Not abandoning cloud services entirely, because plenty of them still make sense, but being more deliberate about what belongs in someone else’s datacentre and what belongs in mine. It’s the same argument I keep coming back to when I write about owning your tools.

It reminds me of what the internet felt like years ago.

People built things simply because they could. Websites were personal. Projects existed because someone wanted to learn something new. There wasn’t always a subscription attached to every feature.

That’s still the feeling I get every time I spin up another container.

Although… perhaps 104 is enough for now.