Home Infrastructure Overview
Welcome to a comprehensive overview of my home infrastructure. In this post, I’ll cover various aspects including physical hardware, software running on different servers, VMs, and Kubernetes clusters.
Physical Things
Location and Hosting
- Basement All physical servers are located in the basement for optimal cooling and accessibility.
- Hetzner Cloud Remote services hosted on Hetzner’s cloud infrastructure.
Physical Servers
Server Name | Brand/Type | CPU | RAM | Disk |
---|---|---|---|---|
R620 | Dell PowerEdge R620 | 2x Xeon E5-2695 v2 (24C/48T total) | 256 GB DDR3 ECC | N/A |
R730xd | Dell PowerEdge R730xd | 2x Xeon E5-2640 v4 (20C/40T total) | 256 GB DDR4 ECC | 2x 480GB Samsung Enterprise SSD (boot), 6x 960GB Kingston DC500 Mixed use SSD, 4x Seagate Exos X16 16TB HDD, 4x 1TB Sabrent gen 3 NVMe SSD |
R320 | Dell PowerEdge R320 | 1x Xeon something (10C/20T total) | 96GB DDR3 ECC | 1x 120GB Kingston DC500 Mixed use SSD, 4x 4TB HDD |
MD3200 | Dell PowerVault MD3200 | N/A | N/A | 12x 3TB HGST/Hitachi/etc HDD |
d1 | Dell Optiplex 3050 | 1x i5-6500T (4C/4T total) | 8GB DDR3 | 256 GB NVMe SSD |
d2 | Dell Optiplex 3050 | 1x i3-6100T (2C/4T total) | 8GB DDR3 | 256 GB NVMe SSD |
raspi-1 | Raspberry Pi 5 | Broadcom BCM2712 (4C/4T total) | 8GB LPDDR3 | 256GB NVMe SSD |
kpi-1 | Raspberry Pi 5 | Broadcom BCM2712 (4C/4T total) | 8GB LPDDR3 | 256GB NVMe SSD |
kpi-2 | Raspberry Pi 5 | Broadcom BCM2712 (4C/4T total) | 8GB LPDDR3 | 256GB NVMe SSD |
kpi-3 | Raspberry Pi 5 | Broadcom BCM2712 (4C/4T total) | 8GB LPDDR3 | 256GB NVMe SSD |
Network Stack
- Primary Router / Firewall / DHCP: Mikrotik RB4011iGS+
- Switches: Dell PowerConnect 5548, Mikrotik CRS309-1G-8S+, Mikrotik CRS112-8P-4S
- Wi-Fi Access Points: 2x TP-Link Omada EAP660 HD (managed by a TP-Link OC200)
- DNS/DHCP: 2x Technitium DNS + 1x Pi-Hole as upstream
Power
- UPS: Dell branded APC UPS, 1920W, ~30-60min runtime under current load (~100+ if the R730xd is shut down on power-loss detection)
Software Layer
What’s Running on Which Physical Server
- R620: Proxmox VE, offline for now
- R730xd: Proxmox VE, running the VMs for “Basement vCPU Cluster” (bcc)
- R320: Proxmox Backup Server, offline for now
- MD3200: External SAS storage array, offline for now, only turned on for occasional backups
- d1: Proxmox VE, clustered together with d2, running the primary DNS server
- d2: Proxmox VE, clustered together with d1, running the secondary DNS server and an XP VM
- raspi-1: Raspbian, running HomeAssistant, Grafana, InfluxDB v2, Prometheus
- kpi-1..3: Raspbian, used to run a k3s cluster, offline for now (until Talos linux fully supports the pi 5)
Virtual Machines (VMs)
R730xd
VM Name | Purpose | OS | Software Overview | Resources |
---|---|---|---|---|
g-runner | Gitlab Runner (for infra only) | openSUSE Leap 15.6 | Runs gitlab-runner with the docker executor to handle infrastructure pipelines (e.g. opentofu) | 4 vCPU, 4GB RAM, 32GB disk |
harbor | Harbor OCI Registry | openSUSE Leap 15.6 | Runs Harbor for proxying/caching container image pulls for the local k8s cluster | 4 vCPU, 8GB RAM, 120GB disk |
bcc-ctrl-1 | K8S control-plane | Talos Linux | K8s control-plane | 4 vCPU, 8GB RAM, 64GB disk |
bcc-ctrl-2 | K8S control-plane | Talos Linux | K8s control-plane | 4 vCPU, 8GB RAM, 64GB disk |
bcc-ctrl-3 | K8S control-plane | Talos Linux | K8s control-plane | 4 vCPU, 8GB RAM, 64GB disk |
bcc-gpu-1 | K8S worker w/ gpu | Talos Linux | K8s worker node with a gpu | 8 vCPU, 32GB RAM, 128GB disk, NVIDIA RTX A2000 12GB |
bcc-gpu-2 | K8S worker w/ gpu | Talos Linux | K8s worker node with a gpu | 8 vCPU, 32GB RAM, 128GB disk, NVIDIA Quadro P1000 |
bcc-worker-1 | K8s worker | Talos Linux | K8s worker node | 8 vCPU, 32GB RAM, 128GB disk |
bcc-worker-2 | K8s worker | Talos Linux | K8s worker node | 8 vCPU, 32GB RAM, 128GB disk |
bcc-worker-3 | K8s worker | Talos Linux | K8s worker node | 8 vCPU, 32GB RAM, 128GB disk |
bcc-worker-4 | K8s worker | Talos Linux | K8s worker node | 8 vCPU, 32GB RAM, 128GB disk |
bcc-longhorn-1 | K8s storage | Talos Linux | K8s storage node for longhorn | 4 vCPU, 8GB RAM, 128GB Disk, 1TB NVMe passthrough |
bcc-longhorn-2 | K8s storage | Talos Linux | K8s storage node for longhorn | 4 vCPU, 8GB RAM, 128GB Disk, 1TB NVMe passthrough |
bcc-longhorn-3 | K8s storage | Talos Linux | K8s storage node for longhorn | 4 vCPU, 8GB RAM, 128GB Disk, 1TB NVMe passthrough |
bcc-longhorn-4 | K8s storage | Talos Linux | K8s storage node for longhorn | 4 vCPU, 8GB RAM, 128GB Disk, 1TB NVMe passthrough |
d1 & d2
VM Name | Purpose | OS | Software Overview | Resources |
---|---|---|---|---|
ns1 | Primary DNS | openSUSE Leap 15.6 | Runs Technitum DNS in docker | 2 vCPU, 2GB RAM, 10GB disk |
ns2 | Secondary DNS | openSUSE Leap 15.6 | Runs Technitum DNS in docker | 2 vCPU, 2GB RAM, 10GB disk |
xp | Old software | Windows XP SP3 | VM virtualized from an old failing Pentium 3 PC, runs an old version of Vivid WorkshopData |
Hetzner
VM Name | Purpose | OS | Software Overview | Resources |
---|---|---|---|---|
omni | Siderolabs Omni | openSUSE Leap 15.6 | Runs siderolabs omni in docker | CAX11, 2vCPU, 4GB RAM, 40GB disk |
gitlab | GitLab | openSUSE Leap 15.6 | Runs the omnibus version of GitLab CE | CPX31, 4vCPU, 8GB RAM, 160GB disk |
hcc-1 | K8s node | Talos Linux | K8s node (control-plane, worker and storage all in one) | CX32, 4 vCPU, 8GB RAM, 80GB disk |
hcc-2 | K8s node | Talos Linux | K8s node (control-plane, worker and storage all in one) | CX32, 4 vCPU, 8GB RAM, 80GB disk |
hcc-3 | K8s node | Talos Linux | K8s node (control-plane, worker and storage all in one) | CX32, 4 vCPU, 8GB RAM, 80GB disk |
Other Hetzner resources
- Load Balancer for the hcc cluster
- Object Storage (buckets for everything): Longhorn backups, Loki logs, Omni / k8s etcd backups
Kubernetes Clusters
Home Cluster (BCC)
- Setup & Bootstrapping: VMs created and managed with opentofu using the proxmox ve provider, kubernetes bootstrapping done with Siderolabs Omni / Talos Linux
- Workloads (Managed using Flux for GitOps):
- apps
- ai
- authentik ldap outpost
- cnpg operator
- gitlab runners
- unprivileged instance runner
- privileged group runner for oci image building with buildah
- immich
- media
- renovate bot
- sonarqube
- valkey operator
- infra
- apps
Hetzner Cluster (HCC)
- Setup & Bootstrapping: VPSs created and managed with opentofu using the hetzner provider, kubernetes bootstrapping done with Siderolabs Omni / Talos Linux
- Workloads (Managed using Flux for GitOps):
- apps
- infra
Conclusion
This overview gives a snapshot of my home infrastructure, covering both physical and software aspects. Future posts will delve deeper into specific components like Kubernetes configurations and VM setups.
Feel free to reach out if you have any questions or want more details on any part of the setup!