Files
kiddo/docs/_archive/update-client.md

1.7 KiB
Raw Blame History

ID: DOC_000004 | Version: 0.2.1 | Status: Draft Archived – superseded by new documentation. By: Codex (GPT-5)

Client Update Flow (Kiddo)

Purpose

Definiert den Client-seitigen Ablauf fuer das Pull-Update vom Update-Service.

Manifest Format (JSON)

Beispiel:

{
  "version": "0.1.2",
  "artifact_url": "https://update.wlkns.org/kiddo/kiddo-0.1.2.tar.gz",
  "sha256": "<hex>",
  "sig_url": "https://update.wlkns.org/kiddo/kiddo-0.1.2.sig"
}

Flow (High Level)

  1. Falls kein Token vorhanden ist: Enrollment durchfuehren (Pre-Shared Token -> Langzeit-Token).
  2. Manifest abrufen (auth via Bearer Token).
  3. artifact_url herunterladen.
  4. SHA256 pruefen (Signatur optional).
  5. In Staging-Verzeichnis entpacken.
  6. Service stoppen.
  7. Atomic swap: aktuelles Verzeichnis sichern, Staging nach /opt/sk verschieben.
  8. Service starten.
  9. Bei Fehlern Rollback auf Backup.

Prototype Script

  • scripts/update_client.sh implementiert den Flow als CLI-Prototyp.
  • Erfordert curl, tar, sha256sum, python3 und systemctl.

Rollback

  • Wenn Start fehlschlaegt: Backup nach /opt/sk zurueck, Service neu starten.
  • Backup-Verzeichnis benoetigt genuegend Speicher.

Security Notes

  • Artefakte muessen checksum-verifiziert sein.
  • Token-Handling ueber SKD_UPDATE_TOKEN oder SKD_UPDATE_TOKEN_FILE.
  • Enrollment nutzt einen Pre-Shared Token und speichert das Langzeit-Token lokal.

Constraints

  • Update-Service ist extern (update.wlkns.org).
  • Service muss als root stoppen/starten koennen.

Status Reporting

  • Status wird per HTTP POST an ${SKD_UPDATE_SERVICE_URL}/v1/projects/${SKD_UPDATE_PROJECT_ID}/status gemeldet.
  • Schema siehe docs/update-status.md.
  • Lokaler Status/Logs liegen unter /var/lib/skd (konfigurierbar via ENV).