the homelab
this is the inventory, not a sketch. it's the box that runs d's labs and about thirty other guests. the build story, with a video, is here.
status
live status isn't wired up to this page yet. when it is, this line will say when the server last spoke. until then, the incidents below are the honest record.
the machine
- cpu
- intel core i9-14900k, 8 performance and 16 efficiency cores. its built-in graphics mean no graphics card.
- board
- gigabyte b760m ds3h, micro-atx. its power stage is the weak point, not the cpu.
- memory
- 32 gb ddr4-3200, two sticks.
- system disk
- 1 tb wd_black sn7100 nvme.
- data disk
- 2 tb wd red plus, a cmr nas drive.
- cooling
- a 360 mm msi aio, plus a spare case fan zip-tied over the power stage. that fan took it from 85 to 67 degrees at full load.
- power
- corsair rm850e. the cpu is capped at 90 watts sustained and 125 watts burst, because the board's power stage hit 105 degrees in 55 seconds at 180 watts.
- case
- msi mag forge 120a.
- network
- 2.5 gbe to a home fibre line whose public address changes whenever it likes, and whose isp blocks inbound web ports.
- ups
- none for the server, so every power cut is a hard power-off. the fibre router has a small battery of its own.
how traffic reaches it
internet
│
cloudflare tunnels go out from the house, so no
│ inbound port is needed. a login sits
│ in front of anything sensitive.
┌──┴──────────────────────────────────────────────┐
│ proxmox ve the host │
├─────────────────────────────────────────────────┤
│ containers photos, files, passwords, │
│ documents, git, rss, apis, │
│ monitoring, backups │
│ virtual machines d's labs front door (always) │
│ d's labs lab host (only while │
│ someone has a lab running) │
│ immich │
└──┬──────────────────────────────────────────────┘
│
2 tb disk nightly backups, plus a second
restic copy of photos and files
admin: tailscale first, two independent fallbacks.
what runs on it
- d's labs
- the lab platform. student containers run on their own virtual machine that the front door powers on and off.
- public apis
- api.dharun.dev, free apis for indian developers. it deploys itself from github releases and rolls back on its own if a release fails its health check.
- personal
- photos, files, passwords, a document archive with tamil and hindi ocr, a private git server, rss, automations and a code editor in the browser. the full list is on uses.
- monitoring
- prometheus, grafana, loki and uptime kuma inside, and a small check from outside that pushes exactly two alerts on a power cut: down, and back.
the rules it runs by
- every change must be safe to make from two thousand kilometres away.
- there are always two independent ways in, and i never change both in one session.
- risky network changes run behind a ten-minute dead-man switch that undoes itself.
- a power cut is a normal event: the bios powers on when mains returns, every disk is ext4 with safe caching, every database has fsync on.
- a backup only counts once a restore has worked.
incidents
every outage and what caused it, newest first. short and honest.
| when | what happened | the fix |
|---|---|---|
| week of 21 oct 2026 | several real power cuts in the week i moved out. | none needed. it came back on its own every time. |
| oct 2026 | the isp router quietly dropped its port-forwarding rules until it was restarted. | fixed, with a test that would have caught it. |
| oct 2026 | a power cut seconds after a config write left a dns file empty. | fixed, with a test that would have caught it. |
| oct 2026 | turning on the firewall silently broke tailscale access to the guests. my rollout test never tried from a tailnet device to a guest. | the test does now. |
| oct 2026 | my ai assistant deleted the server's /dev/null with a stray command, and ssh died with it. only the physical console could fix it. | a guard that blocks destructive commands, and a timer that recreates the file within thirty seconds. |
| oct 2026 | cold boots took up to thirteen minutes. multi-mount protection waited about forty-two seconds per container after an unclean stop. | turned it off and reordered the boot. twenty-two guests now come back in fifty-three seconds. |