Files
platform/docs/servers.md
T

3.4 KiB

Servers — the running list

Every machine the owner runs, how to reach it, and what of Officer is on it. Kept here so an orchestrator ("pull and update every platform", "restart officer everywhere", "which host is behind") has one place to read rather than a fact re-derived per session.

Started 2026-08-21. Everything below was verified from officer-dev on that date by SSH and pm2 jlist, except where marked assumed. Commit SHAs are a snapshot and go stale immediately — they are here to show which checkout is live, not as a status board.

How access works

All of it is over the tailnet. There is no ~/.ssh/config — names resolve by MagicDNS and the login is key-based, so ssh <name> as pastilhas is the whole story:

ssh alpha
ssh fofos

Nothing here needs a password, a jump host or a port. A host that refuses port 22 is not misconfigured — see "Not SSH-reachable" below.

Officer platforms

Host Tailnet IP Live checkout Runs officer Git remote
officer-dev 100.64.0.13 ~/officer-dev/platform yes (this host) git@gitea.officer.dev:officerdev/platform.git
alpha 100.64.0.1 ~/officerdev/platform yes git@gitea.officer.dev:officerdev/platform.git
fofos 100.64.0.17 ~/officerdev/platform yes https://gitea.officer.dev/officerdev/platform.git
headscale 100.64.0.2 ~/dockers/officerdev/platform no ssh://git@gitea.pastilhas.dev:2222/officerdev/platform.git
omega 100.64.0.3 ~/projects/officerdev/platform no none set

Three things an orchestrator has to handle, all verified and none of them cosmetic:

  • The checkout path differs per host. There is no single path to hard-code. Take it from PM2 — pm2 jlist gives the officer process's pm_cwd, which is the checkout that is actually serving.
  • alpha has a SECOND, stale checkout at ~/dockers/officer.dev/platform (same remote, different HEAD). Pulling the wrong one updates nothing and looks like success. PM2's pm_cwd is the tiebreak.
  • The remotes are not the same URL. fofos pulls over HTTPS and headscale points at a different Gitea entirely (gitea.pastilhas.dev:2222). An orchestrator that assumes SSH to gitea.officer.dev breaks on two of five.

headscale and omega hold a checkout but run no officer process (no PM2 on either). Whether those are retired, staging or half-installed is not established — ask before treating them as targets.

Other machines on the tailnet

  • gateway (100.64.0.4) — reachable over SSH as pastilhas, no platform checkout, no PM2.
  • Not SSH-reachable (port 22 refused): edge-dns (100.64.0.8), edge-bridge (100.64.0.15), gitea-bridge (100.64.0.12), officer-bridge (100.64.0.5). Assumed to be service-only containers rather than hosts to log into — not confirmed.
  • Client devices, not servers: macbookpro, iphone16, andres-ipad, pixel9a, plus other people's devices in the tailnet (diogos-ipad, iphone-diogo, iphone-bruno, guilhermes-macbook-pro, macbook-pro-de-joo).

Keeping this list true

It is a running list, so it is worth saying what makes it rot: a new server, a moved checkout, a platform retired, or a remote changed. Re-verify with the same three commands the list was built from — tailscale status, pm2 jlist for the officer entry's pm_cwd, and git -C <cwd> remote get-url origin.