Architecture

A high-level view of how the home lab is put together.

graph TD
    Internet([Internet]) --> Router[Router / Firewall]
    Router --> Host["ThinkCentre M920q
Proxmox VE (master node)"] subgraph Proxmox["Proxmox VE"] Docker["docker-host (VM)
Docker + Portainer"] end Host --> Proxmox subgraph Containers["Portainer-managed containers"] Svc1[Services] end Docker --> Containers Router --> NAS["WD My Cloud EX2 Ultra
(NAS — family backups)"] Router --> K3s["4 x Raspberry Pi 4B (8GB)
k3s HA cluster
(see diagram below)"]
  • Host: a Lenovo ThinkCentre M920q running Proxmox VE as the master node (see Hardware).
  • Virtualization: Proxmox hosts a docker-host VM (Ubuntu Server) that runs Docker.
  • Containers: workloads run as Docker containers, managed through Portainer (see Software & Services).
  • NAS: a WD My Cloud EX2 Ultra handles family backups (see Storage & Backups).
  • k3s cluster: 4 × Raspberry Pi 4B (8 GB) run a highly-available k3s cluster — see below for what's running inside it.

Inside the k3s cluster

graph TD
    Router2[Router / Firewall] --> MetalLB
    Router2 -. LAN DNS .-> Pihole

    subgraph K3s["4 x Raspberry Pi 4B (8GB) -- k3s HA cluster"]
        direction TB
        MetalLB["MetalLB
bare-metal LoadBalancer"] Ingress["ingress-nginx"] CertManager["cert-manager
trusted TLS via DNS-01"] Longhorn["Longhorn
replicated block storage"] Pihole["Pi-hole
network-wide DNS + ad-blocking"] MetalLB --> Ingress CertManager --> Ingress Ingress --> Pihole Pihole --> Longhorn end

All 4 nodes run as control-plane + etcd members, tolerating the loss of one. MetalLB hands out LoadBalancer IPs on the LAN, ingress-nginx routes HTTP(S) traffic, and cert-manager issues real, trusted TLS certificates via a DNS-01 challenge — so internal-only services get valid HTTPS without any inbound exposure to the internet. Longhorn provides replicated block storage across the 4 nodes so a single node failure doesn't lose data. Pi-hole runs as the first real workload, serving DNS and ad-blocking for every device on the network (see Software & Services and Storage & Backups).

The diagrams above are rendered with Mermaid loaded from a CDN.