Homelab

Ten machines carrying live work — sites, routing, monitoring, storage, and the boring recovery paths that keep those surfaces usable. It is where I find out whether something I believe about a system is actually true.

machines10
alllive
public surfaces3
backupsnightly

Nodes

Hover or focus a machine to see what it is and what it carries.

nuc1 Core i7-5557U · 2c/4t live

Intel NUC5i7RYB

Knowledge graph and a task-scheduler app, each in its own container.

nuc2 Core i5-3427U · 2c/4t · 15 GB live

Intel D53427RKE

The always-on core: primary DNS, this website, a fantasy-football projection UI, a weekly competitive-intelligence pipeline, and the print server.

nuc3 Core i5-5250U · 2c/4t live

Intel NUC5i5RYB

Media playback — film, television and music servers — plus backup DNS and the internal HTTPS proxy that fronts every LAN service.

nuc4 Proxmox host live

ECS mini PC

Media library storage and processing, kept off the public network entirely.

m710q1 Tiny desktop live

Lenovo ThinkCentre M710q

Runs the origin-health sentinel — the watchdog that checks services from behind the edge rather than in front of it.

m710q2 Tiny desktop live

Lenovo ThinkCentre M710q

Reserve capacity. Deliberately unassigned so there is somewhere to move a workload in a hurry.

m710q3 Core i5-7500T · 4c/4t · 35 W live

Lenovo ThinkCentre M710q

Client site hosting: the edge proxy and the web server behind it.

m93p Core i5 · tiny desktop live

Lenovo ThinkCentre M93p

Scraping and data-collection jobs, and the push-notification server that alerts me when one of them stops.

optiplex Small form factor live

Dell OptiPlex

Staging and odd jobs — currently a time-tracking app that never found a permanent home.

nas 871 GB local · 787 GB pool live

HP ProDesk 600 G3 SFF

Storage. Network shares for media, backups and a lab scratch area.

Roles move around; this is written by hand and checked when the page is edited. Uptime Kuma holds the live view. A table that admits it is hand-maintained beats a dashboard that looks live and is not.

Services

ServiceJob
AdGuard HomePrimary and backup DNS, on separate machines
CaddyPublic edge, TLS, and the internal HTTPS proxy
NginxClient sites
Uptime KumaMonitoring
ntfyPush alerts when something stops
Proxmox Backup ServerNightly, written to a different machine than the one it backs up
PostgresKnowledge graph behind the agent tooling
SearXNGPrivate metasearch for the scraping jobs
CUPSPrint server bridging two VLANs

What it has taught me

The useful part is not the node count. It is clear separation between machines, services and public surfaces, so a change is easy to reason about and a failure is easy to isolate.

It is also where the quiet failures happen. One service spent weeks returning nothing because its configuration pinned an address the machine no longer held — everything was up, nothing errored, and the results were simply empty. The fix was to stop referring to that machine by number at all.

Another taught the same lesson from the other direction: a workload that has to leave the house through a specific interface must be bound to that interface by name. Restarting things in the right order is a habit, and a habit works right up until the moment it does not.

Email is the best way to reach me — [email protected].