max / makenotwork
- Co-Authored-By
- Claude Opus 5 (1M context) <noreply@anthropic.com>
1 file changed,
+20 insertions,
-15 deletions
| @@ -87,23 +87,28 @@ | |||
| 87 | 87 | [[tier.node]] | |
| 88 | 88 | name = "hetzner" | |
| 89 | 89 | platform = "linux/x86_64" | |
| 90 | - | # STILL root@, and it does not work: measured 2026-08-15, `Permission denied | |
| 91 | - | # (publickey)`. Not Tailscale SSH, whatever this line used to say. sandod runs | |
| 92 | - | # as the `sando` user on fw13 and that user's ~/.ssh/config maps `alpha-west-1` | |
| 93 | - | # to port 2200, which is the box's own sshd; Tailscale SSH is 22 and never sees | |
| 94 | - | # the connection, so reaching root this way would mean sando's key in root's | |
| 95 | - | # authorized_keys on a production box. | |
| 90 | + | # `pom@alpha-west-1` as of 2026-08-16, and the account it names now exists. | |
| 91 | + | # This was `root@alpha-west-1`, which never worked: sandod runs as the `sando` | |
| 92 | + | # user on fw13 and that user's ~/.ssh/config maps `alpha-west-1` to port 2200, | |
| 93 | + | # the box's own sshd. Tailscale SSH is 22 and never saw the connection, so | |
| 94 | + | # reaching root that way would have meant sando's key in root's authorized_keys | |
| 95 | + | # on a production box. | |
| 96 | 96 | # | |
| 97 | - | # DECIDED 2026-08-15 (Max): become `pom@alpha-west-1` instead, matching | |
| 98 | - | # `makenotwork@alpha-west-1` on the same machine — a service user holding | |
| 99 | - | # sando's key and a sudoers grant scoped to `systemctl reload-or-restart | |
| 100 | - | # pom.service`, and no root login for a deploy daemon anywhere. | |
| 97 | + | # The account matches `makenotwork@alpha-west-1` on the same machine, which is | |
| 98 | + | # the house pattern: the service user the unit already runs as, holding sando's | |
| 99 | + | # key and a sudoers grant scoped to the three systemctl verbs sandod uses. It | |
| 100 | + | # was a nologin system account until the cutover gave it a home and a shell. | |
| 101 | + | # Sando's key is pinned there with `restrict,from="100.103.89.95"`, which is | |
| 102 | + | # tighter than makenotwork's bare key line and still allows the rsync leg. | |
| 101 | 103 | # | |
| 102 | - | # Left as root@ until that account exists, because the `pom` user there is a | |
| 103 | - | # nologin system account today and a target nothing can log into is worse than | |
| 104 | - | # one that is honestly wrong. The rename and the account land in one pass, with | |
| 105 | - | # `bootstrap-pom-node.sh DEPLOY_USER=pom` doing the node half. | |
| 106 | - | ssh_target = "root@alpha-west-1" | |
| 104 | + | # Node half done by `bootstrap-pom-node.sh DEPLOY_USER=pom`: /opt/pom owned by | |
| 105 | + | # pom, the running 0.4.1 seeded as releases/preexisting-0.4.1 with `current` | |
| 106 | + | # pointing at it, ExecStart moved by /etc/systemd/system/pom.service.d/ | |
| 107 | + | # 20-release-root.conf. The node came out of it on the version it went in on. | |
| 108 | + | ssh_target = "pom@alpha-west-1" | |
| 107 | 109 | release_root = "/opt/pom" | |
| 108 | 110 | service_name = "pom.service" | |
| 111 | + | # Loopback is honest here, unlike astra's: this instance binds 0.0.0.0, and | |
| 112 | + | # 127.0.0.1:9100 on the node answers with pom's own health JSON rather than | |
| 113 | + | # some other daemon's index page. Verified 2026-08-16, before the first promote. | |
| 109 | 114 | health_url = "http://127.0.0.1:9100/api/health" |