Relay: signed upgrades (RL-29), and older relays shown (RL-28) #270

Merged
jcoffey-dev merged 1 commits from relay/upgrade into main 2026-10-30 23:53:24 +00:00
1 Commits
Author SHA1 Message Date
jcoffey-dev 658bf324ef Relay: signed upgrades (RL-29), and older relays shown (RL-28)
ci / fork-checks (pull_request) Skipped
ci / build (pull_request) Skipped
github/ci (branch) GitHub Actions
ci / github (pull_request) Successful in 10m5s
A relay release binary comes with a signature file: version, target and
SHA-256, signed with Ed25519 by the inbuxa release key, whose public half
is compiled into relay-proto. tools/release/sign-relay.sh makes the file
with openssl.

inbuxa:Relay/set takes an update with upgrade: {blobId, signature}. The
server checks the signature, uploads the binary over this node's link and
calls Relay/upgrade. The relay refuses it in a container image, while
another upgrade is on its way, and for a bad signature, another target or
a version that isn't newer. Otherwise it runs the new binary's --version,
keeps the old one as inbuxa-relay.previous, swaps it in and exits with 75
for its supervisor to restart it.

inbuxa:Relay gains olderThanServer, from each link's last relay version.

No release key is set yet: that and signing in the release workflow come
with packaging (step 6), so for now every upgrade is refused.
2026-10-30 16:42:27 -07:00