public

I see my homelab as a place where I can easily deploy software. This might either be for educational purposes, like testing out certain programming languages, frameworks or libraries, or it might be for prototyping of business ideas.

Requirements

I want to run multiple applications with certain tech stack. See requirements here: homelab - requirements

Infrastructure

Hardware

List of all hardware components, that are used in my homelab: homelab - hardware

Kubernetes cluster

My homeland is based on a kubernetes cluster, that runs on two workers (Lenovo V145-15AST, Acer Extensa 5635Z) and two masters/workers (both (Minis Forum Venus Series UM773)). I use microk8s from cannonical

Version Control and CI

The git repository is provided by a self hosted gitlab instance on one of the Minis Forum Venus Series UM773. Merges to the main branches must go through a MR review. With every MR, there is a CI pipeline which executes builds, tests, and a preview-deployment. For more see homelab - gitlab

GitOps for main branches

For each application, the main branches are deployed to the cluster with Flux (see FluxCD). For more see homelab - FluxCD

DNS and VPN

The domains homelab.lan or *.homelab.lan are resolved to 192.168.8.201 (this is the node where my ingress runs). The domain server is hosted on my router GL.iNet GL-MT6000. Also I have set up a OpenVPN server together with DynDNS, so that I can access my homelab from everywhere. For more, see homelab - DNS and VPN setup

Ingress

Every traffic that goes into my k8s cluster is routed through an ingress service. It has a set of rules with which requests are routed to the right apps, i.e. services. For more, see homelab - Ingress.

Storage

Block storage realized with longhorn. It uses the existing disk space of each node and manages data synchronization, so that every node has a replication of the whole data. This allows that pods that uses persistent volumes (Persistent Volume) can be deployed on every node independent of the data location. Also risk of data loss is reduced. If one node falls out, the other node still has a full copy.

Projects

This section provides all projects, that are hosted in the cluster