The goal: fault-tolerant infrastructure that rebuilds 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, and Cribl Edge collectors keep the core running. Home Assistant
and a docker-host VM cover 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 command-line tool, 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 center 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. See Data pipelines for the full log and NetFlow 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, including HAProxy, Cribl Edge, Home Assistant, and 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, with no manual intervention required.DR plan
tofu-aws (private) 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.