Kein Quellcode -- nur die Stelle, an der der Autoupdater seine Abbilder findet. Die Adresse wird beim Bauen in die Firmware gebrannt und laesst sich spaeter nur aendern, indem jeder Knoten ein Update bekommt; deshalb ein eigenes Repository mit festen Release-Tags statt einer Ablage im Quellcode-Repo. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|---|---|---|
| README.md | ||
hatemesh-firmware
Auslieferungspunkt des Autoupdaters. Hier liegt kein Quellcode — der steht in hatemesh-gluon.
Dieses Repository existiert, weil die Knoten eine Adresse brauchen, die sich nie ändert. Sie ist beim Bauen in die Firmware gebrannt und lässt sich nachträglich nur ändern, indem jeder Knoten ein Update bekommt.
Was hier liegt
Zwei Releases mit festen Tags. Ihre Anhänge werden bei jeder Auslieferung ersetzt:
| Tag | Kanal | Wer bekommt es |
|---|---|---|
stable |
Freigabe | alle Knoten, sofern nicht anders eingestellt |
experimental |
Vorab | Knoten, die im Admin-Bereich unter Automatische Updates umgestellt wurden |
Je Release:
<kanal>.manifest— die Liste der Abbilder, signiertgluon-hm-<datum>-<gerät>-sysupgrade.bin— die Abbilder selbst
Feste Tags deshalb, weil Forgejo keine latest-Route für Anhänge kennt.
Ein Tag je Auslieferung würde bedeuten, dass die Adresse in der Firmware
nach dem ersten Release nicht mehr stimmt.
Wie es hierher kommt
Niemand lädt hier etwas von Hand hoch. Ein Tag im Firmware-Repo löst alles aus:
git tag stable-20260914 && git push origin stable-20260914
Der Workflow .forgejo/workflows/release.yml baut alle Targets, erzeugt
das Manifest, signiert es und ersetzt die Anhänge hier.
Warum das öffentlich ist
Ein Knoten im Feld meldet sich nicht an. Er holt das Manifest anonym über https und prüft dessen ecdsa-Signatur gegen die öffentlichen Schlüssel, die in seiner Firmware stecken. Öffentlich lesbar zu sein ist damit eine Voraussetzung, keine Nachlässigkeit — und kein Sicherheitsproblem: wer den geheimen Schlüssel nicht hat, kann hier nichts unterschieben, das ein Knoten annimmt.
Die Organisation hatemesh schirmt ihre Repositories gegen
Unangemeldete ab. Deshalb liegt die Auslieferung hier und nicht dort.