The goal: fault-tolerant infrastructure I can rebuild from a single nix build.
The homelab is a real production environment, just for one person. Proxmox cluster on bare metal, UniFi networking, Splunk indexers, Cribl Edge collectors, Home Assistant, a docker-host VM for the necessary evil of vendor-locked containers.
Hardware footprint
Buying used enterprise gear
Most of the rack is second-hand, so every arrival is audited against its listing before it is trusted. The BMC gives that away for free over Redfish and the vendor CLI, and the useful checks are rarely the advertised specs:- Remaining write endurance on every SSD. Used enterprise drives are sold on the life left in them, and a listing almost never quotes it.
- Repeat counts in the system event log, not just whether an error is present. A recurring fault over months is a different machine from one that logged something once.
- The real-time clock. A BMC reporting a date near the epoch means a dead CMOS battery, whatever the seller claimed about replacing it.
- Line input per power supply. A
Criticalhealth rollup is very often one uncorded supply rather than a hardware fault. - Prior-owner remnants. Hostnames and retained logs survive a drive-level secure erase, so their presence shows the erase was narrower than advertised.
- Firmware currency, before anything else. An old BMC doesn’t just lack niceties — it can drop entire management API surfaces: no memory or storage inventory, no virtual media, no remote power control. Treat a firmware update as required onboarding, not optional hygiene.
- The chassis’s CPU thermal ceiling, not the socket’s. Entry-tier 2U chassis often share a cooling design with smaller siblings and cap TDP well below what the socket supports. A bigger heatsink doesn’t raise that ceiling — it only changes which drive-count and ambient-temperature combinations are certified. Check the ceiling, and whether a newer CPU generation needs a BIOS update first, before buying an upgrade chip.
- Warranty matters most on drives and power supplies, least on CPUs. Server CPUs rarely fail once burned in, and datacenters retire previous-generation chips in bulk — that’s where the price-per-performance is. Put the warranty budget toward drives and PSUs instead, and burn in every drive before trusting it.
Network topology
The UniFi gateway sits at the centre of the LAN; the Proxmox cluster, personal devices, and the bare-metal LLM box all hang off it. WireGuard tunnels traverse the Internet → UniFi edge. Per-service VLANs encode workload tier. Diagram and the network-as-code that defines it:tofu-unifi.
Data flow
UniFi gear and host telemetry feed HAProxy → Cribl Edge → Splunk → AWS DR. Full log and NetFlow pipelines: Data pipelines.Container philosophy
LXC is the default for production homelab services; Docker is the exception, fenced off to a dedicateddocker-host VM whenever a vendor ships Docker-only images. The four-question decision tree: LXC vs Docker.
What runs where
Most workloads run as LXC on the Proxmox cluster — HAProxy, Cribl Edge, Home Assistant, Qdrant. Splunk Enterprise gets a bare-metal-ish VM for network volume. Docker is fenced off to a singledocker-host VM. Local LLM inference runs bare-metal on NixOS to dodge passthrough overhead. Full per-workload inventory: Infrastructure overview.
Provisioning + configuration
tofu-proxmox builds VMs and LXCs. ansible-proxmox configures the host. ansible-proxmox-apps layers the apps on top. The macOS counterpart that runs the monitoring stack as Kubernetes is orbstack-kubernetes.
High availability
Core infrastructure services (DNS, secrets, ingress) run as redundant pairs across separate Proxmox nodes, managed by Proxmox HA: a node failure triggers automatic restart of the affected service elsewhere in the cluster, no manual intervention required.DR plan
tofu-aws defines a cold AWS footprint sized to take a Splunk failover. Cribl Edge routes can be flipped to the AWS HEC endpoint via config change. Details: tofu-splunk-aws.