My Profile Photo

Sheogorath's Blog

Growing home infrastructure


I’ve been running IT infrastructure at home for a while now, and I’ve seen people come in and out of self-hosting. So here are some lessons I’ve learned about running my home infrastructure with complex setups like Kubernetes.

Use what you are comfortable with

A lot of people have opinions about “the right way to do things”1, and of course people disagree. What I’ve learned from working with systems all the time is that the best results are not achieved by doing it “the right way”, but by doing it in a way that the people running the system are comfortable with.

Running a system that is beyond your skill set can be a challenge you want to take on, but it can also be overwhelming when problems arise.

Do you love containers? You like running Kubernetes? Great, do that. Can’t stand those technologies and prefer to wrestle with Ruby dependencies? Good for you, do that. It doesn’t matter which way is considered the right way, if you’re good at it, it’s the safer way to run your infrastructure.

Be aware of your time budget

In the SRE section of my documentation, I describe my concept of a “Self-Hosting Time Budget”.

As the name suggests, this is about taking a time budget that you set for your infrastructure. For example, 1 hour per week. This is the amount of time you want to spend on maintaining your infrastructure. That means doing updates, fixing problems, looking at metrics.

As long as you stay within your budget, you tinker with your infrastructure, add new services, expand, experiment. But if you notice that you are using up that time budget, you look at what is eating up your time and how you can reduce that. Maybe you need some automation, maybe a service is too much of a burden and should be replaced, maybe a piece of hardware is starting to fail.

Whatever it is, fix it before you grow your infrastructure, so that when times are tougher and time is short, you can be confident that your infrastructure will continue to work.

Grow the infrastructure slowly

There are so many homelab and infrastructure projects out there that allow you to deploy services with a few clicks, or by forking a repository and setting up a Kubernetes cluster with dozens of applications installed.

These projects tend to come back to bite you at some point, as they tend to focus on the happy path. Some even lack any concept of real maintenance.

Most software only becomes useful when it has state, i.e. data that it stores but can’t reproduce itself2. The main task of home infrastructure is to maintain that state.

That means you don’t care so much about the happy paths, but about the unhappy paths. How does the software in your infrastructure fail? How do you recover it?

Learning to answer these questions takes time and requires you to understand how the applications you run react to certain conditions. It requires you to make backups, perhaps test a restore, and generally learn how to fix the application you just installed.

So my main message to you is: Take your time when introducing software into your home infrastructure. Don’t read the Getting Started guide first, maybe read the Troubleshooting section. Read the issue tracker to see how helpful the community is, and walk around a bit before you actually put anything on it.

All in all: Use what you feel comfortable with, be aware of your time budget, and grow your infrastructure slowly. That way it’ll be sustainable and grow like a digital garden. 🌱

  1. This could even apply to this article 

  2. Think of your wedding pictures, unless you didn’t like your wedding, then think of something else you might want to keep.