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.
| Host | Role | Site | Hardware | OS | Status |
|---|---|---|---|---|---|
| optiplex | folly control plane | folly | Dell OptiPlex 3050 micro | Talos Linux | live |
| riptide | folly worker with a GPU | folly | HP EliteDesk 800 G5 Desktop Mini | Talos Linux | live |
| shale | folly worker | folly | HP EliteDesk 800 G2 DM | Talos Linux | live |
| retrofit | offsite control plane | offsite | HP EliteDesk 800 G2 DM | Talos Linux | live |
| oldschool | offsite worker | offsite | HP EliteDesk 800 G3 DM | Talos Linux | live |
| hotrod | offsite sandbox node | offsite | HP mini, Intel Core i5-10500T | Talos Linux | live |
| spore | Garage, x86 netboot, forge's boot image, DNS and NTP | folly | Raspberry Pi 5, NVMe | NixOS | live |
| capsule | DNS and NTP | folly | Raspberry Pi 5, NVMe | NixOS | live |
| forge | arm64 build host | folly | Raspberry Pi 5, NVMe | NixOS | live |
| rackpi5 | forge's HTTP boot image | folly | forge's board | NixOS | live |
| cloudpi4 | Test resolver and iperf3 server | folly | Raspberry Pi 4, 4 GB | NixOS | live |
| homepi4 | Weather Hub kiosk | folly | Raspberry Pi 4, 7-inch touch display | NixOS | live |
| weatherpi4 | Weather Hub kiosk | offsite | Raspberry Pi 4 | NixOS | live |
| radiopi0 | LEDs driven by CloudEvents | folly | Raspberry Pi Zero W, pHAT BEAT | Raspbian 10 | off-git |
| blinkypi0 | LED strip | folly | Raspberry Pi Zero W, Blinkt! | Raspberry Pi OS Lite | unplugged |
| eviropico | Environment sensor | none | Pico W or Pico 2 W and a Pimoroni sensor pack (unverified) | MicroPython | unplugged |
| tallboy | The owner's desktop | folly | ASUS ROG Strix G16CHR | Windows 11 Pro | live |
| atomic | Windows desktop | folly | unknown | Windows | unverified |
| oldboy | Cloud VM that accumulates uptime | GCE, homelab-ng | e2-micro | NixOS | unverified |
Reach a host#
| Hosts | Name | Declared in |
|---|---|---|
| folly nodes | <host>.lolwtf.ca | static_records in terraform/network/unifi/folly/k8s.tf, from the address of each node in clusters/folly/inventory/nodes.yaml |
| offsite nodes | <host>.lolwtf.ca | terraform/network/cloudflare/lolwtf.ca.tf, from NODE_ADDRESSES in clusters/offsite/config/cluster-topology.json |
| Hosts on the Anchor network | <host>.lolwtf.ca | The lab and rpis entries with an ip in terraform/network/unifi/folly/clients.yaml |
| offsite control plane | offsite.lolwtf.ca | terraform/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.
| Device | Job | Limit |
|---|---|---|
| JetKVM | Console 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 plug | Garden and decoration loads | None 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.tflists neither. forge enrols through the OAuth client interraform/network/tailscale/oauth_clients.tf. devices.tflists desktop-g7i75ls, withtag:offsite. No sheet or NixOS configuration covers it.- The Kubernetes nodes run no Tailscale client, and
devices.tfdoes not list them. Their tailnet entries stay in the admin console.
Linked from 15
- kthxThe lab's hosting product on the offsite cluster, which the owner and agents use to serve a directory at <name>.kthx.dev or to build a repository and deploy it to a cluster or a cloud.
- Ownership and securityWhich system owns each part of kthx, the identities and federation each part uses, and how built images are signed and admitted.
- Quick sitesA kthx quick site is a directory served at https://<name>.kthx.dev from a bucket, with its own database, websocket, visitor ID, file store, model endpoint and MCP server.
- atomicA Windows desktop at folly on the future network that Prometheus on folly cannot scrape.
- capsuleA Raspberry Pi 5 on NVMe that is one of the three lab DNS and time anchors, and runs NetBox.
- cloudpi4A wired Raspberry Pi 4 at folly that is a test DNS resolver and an iperf3 server.
- forgeA Raspberry Pi 5 on NVMe that is the lab's native arm64 build host.
- homepi4A Raspberry Pi 4 kiosk at folly with the 7-inch touch display, which shows the Weather Hub full screen.
- oldschoolAn HP EliteDesk 800 G3 mini PC that is the offsite cluster's worker node, on Talos Linux.
- sporeA Raspberry Pi 5 on NVMe that serves x86 netboot, forge's HTTP boot image, the Talos boot image and Tinkerbell, lab DNS and time, and the SPIRE server.
- tallboyThe owner's Windows 11 desktop at folly on the future network, which sends metrics and event logs to folly.
- weatherpi4A Raspberry Pi 4 kiosk at offsite that shows the Weather Hub full screen and is reached over the tailnet.
- HomeThe owner's homelab at two sites, folly and offsite, managed as code: its apps, platform, hosts and runbooks.
- Build host and cacheHow GitHub Actions builds NixOS closures and images, the Nix binary caches that hosts pull from, and the arm64 build role of forge.
- Deploy a NixOS hostDeploy the NixOS configuration of a host from your machine or from GitHub Actions, or restore the previous generation.