the homelab

updated · one machine, at my family's home, two thousand kilometres from where i study.

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

diagramno addresses, on purpose
  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

incidents

every outage and what caused it, newest first. short and honest.

whenwhat happenedthe fix
week of 21 oct 2026several real power cuts in the week i moved out.none needed. it came back on its own every time.
oct 2026the isp router quietly dropped its port-forwarding rules until it was restarted.fixed, with a test that would have caught it.
oct 2026a power cut seconds after a config write left a dns file empty.fixed, with a test that would have caught it.
oct 2026turning 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 2026my 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 2026cold 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.