THE HOUSE AS INFRASTRUCTURE

Homelab

The hypervisor sits on a network I specced, on cable labelled the same at both ends, on a panel that was upgraded before any of it went in. This page goes from the breaker box up. It is architecture, not an address book: the content schema refuses IPs, hostnames and ports, and camera counts and placement are left out on purpose.

The most useful thing here is a failure: eighteen months of hard lockups that turned out to be the RAM. Read the postmortem.

Layers, top to bottom

The homelab as six layers, from services at the top down to power at the bottom. Each layer links to the system that carries it.

ServicesWhat the house actually usesStoragemergerfs pool, SnapRAID parityComputeOne Proxmox node, not a clusterNetworkUniFi gateway, PoE switch, four APsCabling and rack13 Cat6 home runs, star to one rackPower200A panel, knob-and-tube gone

House network

Project record

The physical layer under everything else: the electrical panel, thirteen Cat6 home runs to one rack, and UniFi on top.

What runs here6

SERVICEROLESTATE
PowerA 200A panel with arc-fault and GFCI breakers, the knob-and-tube gone, and dedicated circuits for the office and the rack.running
Structured cablingThirteen Cat6 home runs in a star to one rack, through a keystone patch panel and a brush panel, every run labelled with one ID at both ends.running
Gateway and switchingA UniFi gateway and a 24-port PoE switch that powers the access points and cameras.running
Wi-FiThree ceiling access points inside and a mesh point outside, each on its own home run.running
UniFi ProtectCameras and doorbell on PoE, recorded locally. Counts and placement are deliberately not published.running
HomebridgeOn a Raspberry Pi, bridging Protect into HomeKit.running
  • Labelling both ends of a cable with the same ID is free while it is in your hand and expensive forever after.

Media pool

Project record

Four spinning disks pooled into one tree with mergerfs, one of them given over to SnapRAID parity. Where the lossless library and the backups live.

What runs here2

SERVICEROLESTATE
mergerfsPools the data disks so the library is one tree. Its create policy now picks the disk with the most free space, not the one where the folder already exists, which would have filled one disk while the others sat empty.running
SnapRAID parityRecovery for a dead data disk. The scheduled sync was the crash trigger on bad memory, so it was switched off until the RAM was replaced, and the parity resync is the open item.building
  • Parity that has not been synced protects nothing added since. This page says so rather than calling the array healthy.

Proxmox node

Project record

The one machine everything self-hosted runs on. A single node, not a cluster: a consumer board, a 4-core APU, NVMe for guests, and the media pool hanging off it.

What runs here8

SERVICEROLESTATE
PlexIn a container, with the APU's integrated GPU passed through for hardware transcode. Serves the lossless library to Plexamp.running
SambaExports the media pool to the rest of the house.running
Guest backupsvzdump on a schedule, restored from rather than merely configured. Written to the parity disk so they add no load to the array.running
Host config backupA nightly tarball of the hypervisor's own configuration, because vzdump backs up guests and nothing else.running
Alert relayOutbound mail through Resend, so the box can tell someone it is failing. It spent eighteen months unable to.running
Hardware watchdogThe chipset's own timer, which fires even when the kernel is wedged. The default software watchdog could not.running
Offsite backupRestic to object storage, so a dead house is not a dead library.planned
Minecraft serverA container for the kids' world. Capacity is not the problem; the RAM swap came first.planned
  • Conceptual only. Addresses, ports and hostnames are refused by the content schema rather than left to a reviewer to notice.
  • It ran on failing non-ECC memory for eighteen months without a single machine check exception. The postmortem is in the notes.