infra_wiki

Hosts

Every host in the homelab, with its role, site, hardware, OS and status, and how to reach it.

The hosts are the machines the homelab runs on: Kubernetes nodes, Raspberry Pis, Windows desktops and a cloud VM. They are at two sites, folly (home) and offsite (remote). See Network. nix/hosts/default.nix declares every NixOS host and image. The Kubernetes nodes run Talos Linux, and clusters/<site>/talos/ declares them.

NixOS hosts rebuild from main once a day. The Pi 4 hosts have no auto-upgrade, and no Pi Zero runs its NixOS config. See NixOS and Deploy a NixOS host.

HostRoleSiteHardwareOSStatus
optiplexfolly control planefollyDell OptiPlex 3050 microTalos Linuxlive
riptidefolly worker with a GPUfollyHP EliteDesk 800 G5 Desktop MiniTalos Linuxlive
shalefolly workerfollyHP EliteDesk 800 G2 DMTalos Linuxlive
retrofitoffsite control planeoffsiteHP EliteDesk 800 G2 DMTalos Linuxlive
oldschooloffsite workeroffsiteHP EliteDesk 800 G3 DMTalos Linuxlive
hotrodoffsite sandbox nodeoffsiteHP mini, Intel Core i5-10500TTalos Linuxlive
sporeGarage, x86 netboot, forge's boot image, DNS and NTPfollyRaspberry Pi 5, NVMeNixOSlive
capsuleDNS and NTPfollyRaspberry Pi 5, NVMeNixOSlive
forgearm64 build hostfollyRaspberry Pi 5, NVMeNixOSlive
rackpi5forge's HTTP boot imagefollyforge's boardNixOSlive
cloudpi4Test resolver and iperf3 serverfollyRaspberry Pi 4, 4 GBNixOSlive
homepi4Weather Hub kioskfollyRaspberry Pi 4, 7-inch touch displayNixOSlive
weatherpi4Weather Hub kioskoffsiteRaspberry Pi 4NixOSlive
radiopi0LEDs driven by CloudEventsfollyRaspberry Pi Zero W, pHAT BEATRaspbian 10off-git
blinkypi0LED stripfollyRaspberry Pi Zero W, Blinkt!Raspberry Pi OS Liteunplugged
eviropicoEnvironment sensornonePico W or Pico 2 W and a Pimoroni sensor pack (unverified)MicroPythonunplugged
tallboyThe owner's desktopfollyASUS ROG Strix G16CHRWindows 11 Prolive
atomicWindows desktopfollyunknownWindowsunverified
oldboyCloud VM that accumulates uptimeGCE, homelab-nge2-microNixOSunverified

Reach a host#

HostsNameDeclared in
folly nodes<host>.lolwtf.castatic_records in terraform/network/unifi/folly/k8s.tf, from the address of each node in clusters/folly/inventory/nodes.yaml
offsite nodes<host>.lolwtf.caterraform/network/cloudflare/lolwtf.ca.tf, from NODE_ADDRESSES in clusters/offsite/config/cluster-topology.json
Hosts on the Anchor network<host>.lolwtf.caThe lab and rpis entries with an ip in terraform/network/unifi/folly/clients.yaml
offsite control planeoffsite.lolwtf.caterraform/network/cloudflare/lolwtf.ca.tf, from API_SERVER_IP in clusters/offsite/config/cluster-topology.json
Tailnet devices<host>.<tailnet>terraform/network/tailscale/devices.tf. <tailnet> is the tailnet key in terraform/network/tailscale/fleet.tf.json.

The Kubernetes nodes run no Tailscale client. Off the LAN, the owner reaches them and the Anchor network through each site's Connector. See Remote access.

Unmanaged devices at offsite#

No file in git declares these, and the UniFi console lists them as clients.

DeviceJobLimit
JetKVMConsole video and keyboard for oldschool, on the Default network. It answers over Site Magic.It has no ATX power extension, so it cannot power-cycle oldschool. retrofit has no console.
TP-Link Kasa plugs (2× HS103, HS105, KP400) and a D-Link plugGarden and decoration loadsNone of them powers a node.

retrofit and oldschool power on after a power loss, from their BIOS setting. Nothing at offsite cuts a node's power remotely, so a hung oldschool needs the JetKVM keyboard or someone at the site, and a hung retrofit needs someone at the site.

Known divergence#

Each sheet states its host's divergence. These cover more than one host, or a host with no sheet:

  • eviropico runs Pimoroni's MicroPython firmware, and no file in git holds its code.
  • capsule and forge are on the tailnet, and devices.tf lists neither. forge enrols through the OAuth client in terraform/network/tailscale/oauth_clients.tf.
  • devices.tf lists desktop-g7i75ls, with tag:offsite. No sheet or NixOS configuration covers it.
  • The Kubernetes nodes run no Tailscale client, and devices.tf does not list them. Their tailnet entries stay in the admin console.

Edit on GitHub

↑↓ move ↵ open esc close