Files
kiddo/docs/DEPLOYMENT.md
2026-01-15 17:52:21 +01:00

4.0 KiB

ID: DOC_000014 | Version: 0.2.3 | Status: Draft By: Codex (GPT-5)

Deployment

Lokale Installation (systemd)

./scripts/install.sh fuehrt folgende Schritte aus:

  • legt Service-User/Group an
  • kopiert das Projekt nach /opt/sk
  • erstellt/aktualisiert .venv
  • erstellt /etc/skd/env aus env.example
  • erstellt /etc/skd/update.env aus env.update.example
  • schreibt eine systemd-Unit nach /etc/systemd/system/skd.service

Beispiel:

make install
sudo systemctl status skd.service

Manuelles Starten

./scripts/run.sh

Makefile Targets (Ops)

make install
make up
make down
make restart
make update
make uninstall

Remote-Deploy (SSH)

./scripts/deploy.sh packt das Repo und deployt es auf einen Zielhost. Konfiguration in deploy_hosts.yml.

Beispiel:

./scripts/deploy.sh kid-laptop

Deployment via ZIP

Im Repo liegt sk_deploy.zip. Dieses Archiv kann auf den Zielhost kopiert und nach /opt/sk entpackt werden. Anschliessend Abhaengigkeiten installieren und Service neu starten:

sudo -u skd /opt/sk/.venv/bin/pip install -r /opt/sk/backend/requirements.txt
sudo systemctl restart skd.service

Update des Services

./scripts/update.sh zieht den Branch neu und fuehrt einen harten Reset aus.

Wichtig: Das Script nutzt git reset --hard origin/main.

sudo ./scripts/update.sh

Update-Client (Remote Update Service)

Die Update-API startet scripts/update_client.sh bzw. scripts/rollback_client.sh. Wichtige ENV-Variablen:

  • SKD_UPDATE_SERVICE_URL
  • SKD_UPDATE_PROJECT_ID
  • SKD_UPDATE_TOKEN oder SKD_UPDATE_TOKEN_FILE Voraussetzungen auf dem Host:
  • curl, tar, sha256sum, python3, systemctl Referenz: Update-Service (intern) https://git.wlkns.org/stephan/update-webservice

Update-Service einbinden

  1. Service-URL und Projekt setzen:
SKD_UPDATE_SERVICE_URL=https://update.wlkns.org
SKD_UPDATE_PROJECT_ID=safe-kiddo-control
  1. Enrollment-Token besorgen (vom Update-Service-Admin) und einen Langzeit-Token erzeugen:
    • Option A: Ueber lokale API
curl -X POST -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"enroll_token\":\"example-enroll-token\"}" \
  http://localhost/update/enroll
  • Option B: Direkter Enrollment-Client
./scripts/manual_enroll.py --url "https://update.wlkns.org" --project "safe-kiddo-control" --token "example-enroll-token"
  1. Token-Datei pruefen:
sudo cat /var/lib/skd/update_token

Hinweis: Der Update-Check ist erst moeglich, wenn der Langzeit-Token gespeichert wurde.

Enrollment-Tools:

  • scripts/manual_enroll.py: Enrollment direkt gegen den Update-Service, schreibt Token in SKD_UPDATE_TOKEN_FILE.
  • scripts/enroll_local.py: Enrollment ueber die lokale API (/update/enroll), benoetigt Admin-Session; --token setzen (Default-Token ist nur Prototyp-Altlast).
  • scripts/enroll_update_service.sh: Holt den Langzeit-Token per curl vom Update-Service (liest update-addon.env).

Beispiel (curl-Script):

sudo ./scripts/enroll_update_service.sh --enroll-token "enroll_example"

Release-Upload (Dev/Prod)

Fuer Dev/Prod Uploads kann ein Release-Archiv (tar.gz) automatisiert gebaut und hochgeladen werden.

Beispiel:

./scripts/upload_release.sh --profile dev

Token-Quelle:

  • update-addon.env (z.B. DEV_UPDATE_UPLOAD_TOKEN_FILE=./upload.token).

Lokale update-addon.env

Fuer lokale Tests kann eine update-addon.env im Repo genutzt werden (gitignored). Beispiel:

cp update-addon.env.example update-addon.env

Lokale Status/Logs:

  • SKD_UPDATE_STATUS_FILE (default /var/lib/skd/update_status.json)
  • SKD_UPDATE_LOG_FILE (default /var/lib/skd/update_logs.jsonl)

Backup/Restore

  • Bei Apply wird /opt/sk nach /opt/sk_backup_1.2.3_1700000000 verschoben (Beispiel).
  • Rollback nutzt das letzte Backup (/opt/sk_backup_*).

Weitere Dokumente

  • Konfiguration: docs/CONFIGURATION.md
  • Nutzung: docs/USAGE.md
  • Troubleshooting: docs/TROUBLESHOOTING.md