Skip to content
Homelab

Overview

This documentation is aming to be a complete yet sintetic guide to setup your own homelab.

For homelab I mean a collection of services that you can host at home, on your own hardware, or on a cloud provider. Basically you manage your own software stack, instead of relying on a third party. The main goal is to an integration of the IT supply-chain behind your services as much as possible.

Traditionally people that approach selfhosting are tech savvy people that work in IT or a related field and that are try to learn and get some experience in a sandbox environment for get some certifications, or test new equipements or tools to later use at work. This because the business world doesn’t like to experiment with production equipment to not provide any downtime to costumers.

However my hope is that this cookbook will be useful also for people that are not tech savvy, but are interested in selfhosting for other reasons, wheater it is for privacy concerns, for cost, for philosophical reasons, for mining cryptos, or just for fun.

Why even bother?

If your a new to this world, and still did not make up your mind about selfhosting. Let me try help you with the reasons I found most compelling when I started.

Learning and Skill Development

Learning how to selfhost your services is a great opportunity to learn what is under the hood of the services you use everyday. At smaller scale we will deploy software and setup infrastructure that businesses do at larger scale. Internet is everywhere and probably the most important invention of the last century. For every curious mind, there is no doubt that it is worth to learn how it works.

You will learn:

  • Basic networking
  • Containerization and virtualization
  • Hosting of services
  • DNS management etc.

Because of the nature of the internet every field somehow is touched by it. That’s why all the skills aquaired are higly spendable in every field you are working on. You might be a policymaker, and the skills will help you to better understand the implications of privacy and what is important to protect. You might have an economics background, and the skills will help you to better understand how to support the growth of a business leveraging the digital realm.

As added bonus if you are a developer like me you will have a sandbox environment where you can test workloads in almost production like environment.

Reclaim ownership of your digital realm.

This means became a digital citizen, not a digital consumer.

Looking back at the internet history, it was born as a decentralized network of computers, but now it is dominated by a few big tech companies that control the majority of the internet traffic. It means that the internet is not a free and open place anymore. It is the most important tool we have to build a better future. We need to reclaim the internet and make it a free and open place again.

With hosting your service you are making a step forward toward the build of the foundation of your little corner in the vast internet. A corner where you are free to do things as you please.

It’s increasingly clear how cancel culture is putting freedom of speech at serious risk, and self hosting will become a major defense against it. Even if you have nothing controversial to say, you should still be concerned about the future of free speech.

Deeply connection with IoT

If you are passionate about IoT and home automation as much as I am, you will find that selfhosting is a great way to integrate your IoT devices with your services. Somehow easier than with third party services or cloud providers. Also you will have all the compute power you need to run your automations and even push forward to some AI & ML on the edge.

Goals of the Cookbook

I will try to keep this documentation about general concepts. However, for each section, I will walk through the specific implementation I have settled on for now. This documentation reflects the current state of the project, and will be updated as my current setup evolves.

The reason behind this choice is that technology often go out of fashion instead concepts change less often.

This cookbook is still mainly about hands-on experience because the end goal is for you to have a working a complete homelab.

I expect previous knowledge in IT and feeling confortable with the command line. I will try to keep the documentation as complete as possible. Everything that is not explained here will be linked to the appropriate documentation. It does not make sense to rewrite documentation that is already available and good quality.

Plus you are always one Google/Youtube/ChatGPT search away from the answer you are looking for.

Sometime we will work with state of the art technology, becuase that is where my fous is. Don’t get discouraged if not everything works as expected at first.

Goals of the Stack

The homelab stack we will deploy will try to accomplish the following properties:

  1. fully autonomous:
  2. modular: For debugging and testing purpose, I often find myself in the need of running a single component of the system to isolate the problem.
  3. easy to use: I don’t want to spend too much time on the tooling. This should be a support for my projects, not the other way around.
  4. portable: I don’t want to put all my eggs in one basket, so one of the goal is to be portable as much as possible, to avoid the venodor locking.
  5. free: I often found myself gravitate toward free and open source software besause in this sector I think it is key for project to get vast adoption at the point they become standards.

(6. cheap: This is definitely not a goal for the long term because I plan to havily invest in my homelab infrastructure, but for now I am a student with very limited budget ,so I will try to use free tier as much as possible. Plus I still need to get my head around the way to get the best bang for the buck when it comes to buying used hardware. More thoughts on this in the homelab section.)

CNCF

The Cloud Native Computing Foundation (CNCF) hosts critical components of the global technology infrastructure. CNCF brings together the world’s top developers, end users, and vendors and runs the largest open source developer conferences. CNCF is part of the nonprofit Linux Foundation. Most of the tools I will use are part of the CNCF ecosystem because of the nature of their open-source projects.