diff --git a/INFRA.md b/INFRA.md index fc2815b..42a2fd4 100644 --- a/INFRA.md +++ b/INFRA.md @@ -24,6 +24,40 @@ root-effective command. See the script's header comment for the full rationale and revocation steps (one line to delete, or delete the whole account — your own access is never affected). +### Current access state (live) + +Both boxes are provisioned and reachable as of this writing: + +| Host | Role | Public IP | Login | +|------|------|-----------|-------| +| prod | manager (Swarm), Thermograph's eventual home | `169.58.46.181` | `agent` | +| beta | worker (Swarm), old VPS | `75.119.132.91` | `agent` | + +``` +ssh -i ~/.ssh/thermograph_agent_ed25519 agent@169.58.46.181 # prod +ssh -i ~/.ssh/thermograph_agent_ed25519 agent@75.119.132.91 # beta +``` + +The private half of the agent's dedicated keypair lives at +`~/.ssh/thermograph_agent_ed25519` on the operator's own machine (never in +this repo, never in a CI secret) — same convention `DEPLOY.md` already uses +for the separate CI deploy key (`~/.ssh/thermograph_ci`). If you're setting +this up fresh elsewhere, generate a new pair the same way +(`ssh-keygen -t ed25519 -a 100 -C "claude-agent@thermograph-infra" -f +~/.ssh/thermograph_agent_ed25519 -N ""`), embed the new public half in +`AGENT_PUBKEY` at the top of `provision-agent-access.sh`, and re-run it on +both boxes — that replaces the authorized key wholesale rather than +appending, so an old key stops working the moment the new one lands. + +**Keep the private key somewhere that survives** — not a scratch/temp +directory that gets cleaned up, not anywhere-in-repo. Losing it just means +regenerating and re-running the provisioning script; it does not lock either +box, since your own login is untouched. + +As of this writing, neither box has Docker installed yet and Terraform has +not been applied to either (`prod` is a bare OS install; `beta` has an old +`/opt/thermograph` checkout but no Docker) — Track 2 is paused on that. + ## Track 2 — Swarm See `deploy/swarm/README.md` for the exact order of operations (WireGuard @@ -87,8 +121,9 @@ Only after 3a–3c are verified: whole migration; retire it deliberately, not by accident. ## Verification checklist -- [ ] `ssh agent@` and `ssh agent@` both work; `sudo whoami` → `root` -- [ ] Password SSH auth confirmed dead on both boxes +- [x] `ssh agent@` and `ssh agent@` both work; `sudo whoami` → `root` +- [x] Password SSH auth confirmed dead on both boxes (tested with an actual + failed login attempt, not just config inspection) - [ ] `docker node ls` (from prod) shows both nodes `Ready` - [ ] Swarm ports (2377/7946/4789) unreachable from outside the WireGuard tunnel - [ ] `https://git.thermograph.org` (or your chosen domain) serves Forgejo over TLS