Benutzer-Werkzeuge

Webseiten-Werkzeuge


freifunk:anleitungen:rollout

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
freifunk:anleitungen:rollout [2018-07-24 19:30] tuxfreifunk:anleitungen:rollout [2018-07-24 19:31] (aktuell) – [Firmware hochladen] tux
Zeile 1: Zeile 1:
 +====== Firmware Rollout ======
  
 +Wie kommen kompilierte Firmware-Images auf Server und Geräte?
 +
 +===== Checkliste =====
 +  * Firmware als stable bauen
 +  * Manifest signieren lassen (Wahl der Schlüssel so, dass für alle aktiven Versionen gültige Signaturen vorhanden sind)
 +  * Firmware und signiertes Manifest ablegen (gw1, /var/www/firmware/stable/0.xx)
 +  * Symlink latest auf entsprechende Firmware setzen
 +  * Info über Mailingliste
 +  * Blogeintrag schreiben
 +  * Ankündigung auf Twitter/ Facebook
 +  * Anpassung der Download-Seite (https://md.freifunk.net/mitmachen/firmware/), Links und Changelog
 +
 +===== Firmware bauen =====
 +
 +Wir nutzen [[https://gluon.readthedocs.io/|Gluon]] als Firmware für unsere Knoten. Das erfordert einige angepasste Dateien im Unterordner ''site'' des geklonten Gluon-Repositories, für Freifunk Magdeburg liegen diese [[https://github.com/FreifunkMD/site-ffmd|bei GitHub]] derzeit. In der entsprechenden ''README.md'' ist eine Anleitung zum Bauen der Firmware für FFMD.
 +
 +  * [[https://github.com/FreifunkMD/gluon-docker|Build mit Docker]]
 +
 +
 +Per default wird für //experimental// gebaut. Für die anderen Branches muss das Argument //beta// oder //stable// angegeben werden:
 +
 +  site/build.sh beta
 +
 +
 +===== Firmware signieren =====
 +
 +In der ''site.conf'' sind kryptografische Schlüssel der Entwickler hinterlegt. Für ein //experimental// build ist die Signatur eines Entwicklers, für //beta// und //stable// jeweils zwei Signaturen nötig, damit [[http://gluon.readthedocs.io/en/latest/features/autoupdater.html|Autoupdate]] auf den Knoten funktioniert.
 +
 +Gluon enthält ein Skript zum Signieren, Voraussetzung sind die //ecdsautils//:
 +
 +  contrib/sign.sh $SECRETKEY output/images/sysupgrade/experimental.manifest
 +
 +Wie die Entwickler die Manifest-Dateien zum Hinzufügen mehrerer Signaturen austauschen, bleibt ihnen überlassen. Eine Möglichkeit ist bspw.: der erste Entwickler lädt alle Images plus Manifest auf den Webserver. Weitere Entwickler laden sich das Manifest von dort, signieren, laden die neue Version wieder auf den Webserver.
 +
 +==== Schlüsselerzeugung mit ecdsautils ====
 +
 +Installation kann aus dem [[https://packages.debian.org/search?keywords=ecdsautils|Debian-Paket]], dem Paket der gewünschten Distribution oder aus dem [[https://github.com/tcatm/ecdsautils|Quellcode]] erfolgen.
 +
 +=== bis 0.3.2 ===
 +
 +<code>
 +% ecdsakeygen -h
 +ecdsautils 0.3.2
 +
 +Usage: ecdsakeygen [-s] [-p] [-h]
 +        -s      generate a new secret on stdout
 +        -p      output public key of secret read from stdin
 +        -h      display this short help and exit
 +</code>
 +
 +<code>
 +% ecdsakeygen -s > secret 
 +% cat secret 
 +68b12c0eaf88bf17fbcdf560780136b9cc4be352fb8aa7148215fbd65887db7b
 +</code>
 +
 +<code>
 +% ecdsakeygen -p < secret 
 +1f63ef7450760af9062ff697995eb536eef25a555822087fa4cfd9a82d9faa79
 +</code>
 +
 +=== ab 0.4.0 ===
 +
 +<code>
 +% ecdsautil generate-key > secret
 +% cat secret
 +68b12c0eaf88bf17fbcdf560780136b9cc4be352fb8aa7148215fbd65887db7b
 +</code>
 +
 +<code>
 +% ecdsautil show-key < secret
 +1f63ef7450760af9062ff697995eb536eef25a555822087fa4cfd9a82d9faa79
 +</code>
 +
 +=== Schlüssel sicher speichern ===
 +
 +Der erzeugte Schlüssel ist ebenso sorgfältig abzulegen wie private Schlüssel von PGP oder SSH. Leserechte sollte nur der Nutzer haben:
 +
 +<code>
 +% chmod go-rwx secret
 +% ls -l secret 
 +-rw------- 1 adahl adahl 65 Jan 31 15:07 secret
 +</code>
 +
 +===== Firmware hochladen =====
 +
 +Die Firmware-Images plus Manifest mit Signatur(en) wird vom Build-Rechner auf den Webserver kopiert, dazu kann bspw. //rsync// genutzt werden.
 +
 +  rsync -rlthcvz output/images/ gw1.md.freifunk.net:/var/www/firmware/stable/0.37
 +
 +Anschließend auf dem Webserver kontrollieren, dass die Rechte korrekt gesetzt sind und ggf. symbolische Links anpassen.
 +
 +Der Webserver hat die Images in einer Ordnerstruktur liegen (nicht doppelt), liefert aber je nach VHOST ggf. unterschiedliche Seiten/Pfade aus. Über http://firmware.md.freifunk.net/ bspw. Images zum Download durch Nutzer über das Internet und den Webbrowser und über http://experimental.updates.firmware.ffmd/ bspw. experimental Updates für die Knoten. Im Freifunk-Netz muss dementsprechend die Zone ''.ffmd'' korrekt auf den Webserver aufgelöst werden und der Webserver muss intern im Freifunk-Netz erreichbar sein (nicht (nur) aus dem Freifunk-Netz über das Internet).
 +
 +Symlinks:
 +  * LATEST im Firmware-Oberverzeichnis (z.B. stable/LATEST)
 +  * manifest auf z.B. manifest.stable