The only door in is a Cloudflare Tunnel on the control-plane Pi. It publishes self-hosted services without opening a single inbound port.
The fleet
Tailscale mesh · every node reaches every other
Networking
Private mesh · one tunnelled way in
Every machine sits on the same private Tailscale mesh, so any of them can reach any other directly without exposing anything to the open internet. Storage sits on its own subnet, reachable from the machines that mount it rather than from everything.
Every published service sits behind Cloudflare Access, so an unauthenticated request never reaches the app.
The standby Pi carries its own connector, so the tunnel moves with the control-plane role in a failover.
What runs on it
Almost all of it on the two Linux machines
Tower hands work to whichever machine should run it (how that works). Nexus watches node health, running jobs and my own notes. Plus the Cloudflare tunnel, a few private services, and the nightly timers that merge, lint, snapshot and publish.
Loupe and its ML pipeline (the writeup), a local open-weight model for jobs that do not need a frontier model, and the semantic index the dashboard searches.
Backups, vault archives, the sync hub, and the machine deploys are pushed from.
The bytes the rest of it reads and writes, on its own subnet.