Self-Hosted Infrastructure from Homelab to Company Part 0

An overview of the infrastructure in this series
On this page

Self-Hosted Infrastructure from Homelab to Company Part 0

An overview of the infrastructure in this series

Introduction

This article gives an overview of the architecture of the home lab setup used in this series. It’ll cover building everything up from the hardware to the operating system and then installing the foundation services that tie everything together; it’ll finish with several tutorials about installing individual services. Because the services tutorials are optional, you can choose what services you want in your lab. Additionally, I’ll cover information about alternative services, operating systems, and options that differ from the ones used.

Hardware

For the hardware setup, we’ll use standard consumer-grade components in a rack-mounted case with enough resources to run most services. The build will be as budget-friendly as possible and use commonly available parts.

Operating system

The operating system will be the current LTS of Ubuntu since it has good community and enterprise support, allowing for general use in the home and enterprise settings.

Software

The core software that provides the foundation for all the services will include Docker, Docker-compose, Caddy v2, Cloudflared, Pi-hole, Authentik, and FreeIPA. Docker with Docker-compose will give a simple infrastructure-as-code setup reproducible on other servers and allow for simple .env files to store configurations. Caddy V2 will provide the function of a reverse proxy, with optional Cloudflared making services accessible from outside the local network. FreeIPA and Authentik will provide login and Single Sign On (SSO). Finally, Pi-hole will provide ad blocking and DNS so you can access services with service_name.domain.com instead of an IP address with a port number.

Outcome

After the hardware, the operating system, and the foundational software are in place, you can choose all other services depending on what you want to make available in your lab. This setup should be reliable, easy to maintain, and easy to find help online if something goes wrong.