Skip to content

Homelab

This repository contains my personal homelab, defined and deployed as code using IaC, and GitOps practices where possible.

Goals

In addition to being a learning environment, my homelab also functions as my home network. It supports much of what I do everyday, and is designed with the following goals in mind:

  • High service uptime
  • High fault tolerance
  • Best practice security
  • Privacy by design
  • Efficient resource utilization
  • Low power, noise, and space

Layers

My homelab is broken up into layers which very loosely align with the concepts of IaaS, PaaS, and SaaS. Modularizing the infrastructure in this way helps me isolate dependencies, and avoid deployment problems.

  • The Software Layer provides the applications and services that users interact with. It includes deployed applications, along with their definitions and configurations.
  • The Platform Layer provides the platforms which applications and services are deployed on in the Software Layer. It includes for example, guest operating systems, container orchestration platforms (i.e. Kubernetes), and database management systems.
  • The Infrastructure Layer provides the basic networking, storage, and compute resources used by the Platform Layer. It includes physical hardware, hypervisors, and other infrastructure components.

Click on the links in the above descriptions for more detail on each layer.

Changelog

See commit history