Files
kiddo/docs/CONFIGURATION.md
2026-01-15 17:24:54 +01:00

4.2 KiB

ID: DOC_000011 | Version: 0.2.2 | Status: Draft By: Codex (GPT-5)

Konfiguration

Speicherort

Die Konfiguration erfolgt per ENV-Dateien:

  • /etc/skd/env (Core-App, Vorlage: env.example)
  • /etc/skd/update.env (Update-Service fuer Laufzeit, Vorlage: env.update.example)
  • update-addon.env (lokal fuer Upload/Enrollment, Vorlage: update-addon.env.example)

Authentifizierung

  • SKD_AUTH_MODE (default pam): pam oder oidc. Ungueltige Werte fallen auf pam zurueck. Hinweis: Der Wert wird aktuell nicht zur Erzwingung genutzt; OIDC ist aktiv, sobald die OIDC-Variablen gesetzt sind.
  • SKD_AUTH_SECRET (default change-me-secret): HMAC-Secret fuer JWTs.
  • SKD_TOKEN_TTL_SECONDS (default 900): Token-Laufzeit in Sekunden.
  • SKD_AUTH_ALLOWED_USERS (default leer): Kommagetrennte Liste erlaubter Admin-User (gilt fuer PAM und OIDC).
  • SKD_AUTH_ALLOWED_GROUPS (default sudo): Erlaubte Gruppen fuer PAM-Login.
  • SKD_AUTH_PAM_SERVICE (default login, auf Debian/Ubuntu via install.sh auf skd gesetzt).

OIDC

OIDC ist optional und zusaetzlich zu PAM.

  • SKD_OIDC_ISSUER
  • SKD_OIDC_CLIENT_ID
  • SKD_OIDC_CLIENT_SECRET
  • SKD_OIDC_REDIRECT_URI (default http://localhost:8000/login/oidc/callback)
  • SKD_OIDC_SCOPES (default openid profile email)
  • SKD_SESSION_COOKIE_SECURE (default false): Setze true fuer HTTPS.
  • SKD_OIDC_STATE_COOKIE_NAME (default skd_oidc_state) Referenz: OIDC-Service (intern) https://git.wlkns.org/stephan/oicd

OIDC-Einbindung (Kurz)

  1. Issuer setzen (muss der externen URL des IdP entsprechen):
    • SKD_OIDC_ISSUER=https://auth.example.org
  2. Client registrieren (DCR), falls der IdP es erlaubt:
export SKD_OIDC_ISSUER="https://auth.example.org"
export SKD_OIDC_REDIRECT_URI="https://kiddo.example.org/login/oidc/callback"
export OIDC_INITIAL_ACCESS_TOKEN="example-token"
./scripts/register_oidc_client.sh
  1. Client-Credentials in /etc/skd/env setzen:
SKD_OIDC_CLIENT_ID=example-client-id
SKD_OIDC_CLIENT_SECRET=example-client-secret
SKD_OIDC_REDIRECT_URI=https://kiddo.example.org/login/oidc/callback
SKD_SESSION_COOKIE_SECURE=true

Hinweis: OIDC ist aktiv, sobald Issuer, Client-ID und Secret gesetzt sind.

Session/Benutzerverwaltung

  • SKD_SESSION_COOKIE_NAME (default skd_session)
  • SKD_ALLOWED_USERS (default leer): Optionales Allowlist fuer verwaltbare System-User.

Aktionen (Countdown/Notify/Sound)

  • SKD_DEFAULT_COUNTDOWN (default 60 Sekunden)
  • SKD_DEFAULT_SOUND (default false)
  • SKD_NOTIFY_TIMEOUT (default 5 Sekunden)
  • SKD_NOTIFY_SEND_PATH (default notify-send)
  • SKD_SOUND_PLAYER (default paplay)
  • SKD_SOUND_FILE (default /usr/share/sounds/freedesktop/stereo/dialog-warning.oga)

Update-Client

  • SKD_UPDATE_SERVICE_URL (default https://update.wlkns.org)
  • SKD_UPDATE_PROJECT_ID (default safe-kiddo-control)
  • SKD_UPDATE_ENROLL_TOKEN (optional; fuer /update/enroll)
  • SKD_UPDATE_TOKEN (optional; alternativ per Datei)
  • SKD_UPDATE_TOKEN_FILE (default /var/lib/skd/update_token)
  • SKD_UPDATE_STATUS_FILE (default /var/lib/skd/update_status.json)
  • SKD_UPDATE_LOG_FILE (default /var/lib/skd/update_logs.jsonl)
  • SKD_UPDATE_INTERVAL (default 3600): Hinweis: wird aktuell nur eingelesen, aber nicht automatisch genutzt.
  • SKD_UPDATE_UPLOAD_TOKEN (optional; fuer Release-Upload)
  • SKD_UPDATE_UPLOAD_TOKEN_FILE (optional; z.B. /etc/skd/update.upload.token)

Dry-Run

  • SKD_DRY_RUN (default false): Keine echten System-Aktionen, nur Logging.

Tuning und Betrieb (Power-User)

  • SKD_TOKEN_TTL_SECONDS: kuerzere Tokens reduzieren Risiko, laengere Tokens reduzieren Login-Haeufigkeit.
  • SKD_DEFAULT_COUNTDOWN: steuert Nutzerwarnung vor Sperre/Shutdown.
  • SKD_NOTIFY_TIMEOUT: Dauer der Desktop-Benachrichtigung.
  • SKD_SESSION_COOKIE_SECURE=true: zwingend bei HTTPS, sonst Login-Cookies unsicher.

Hinweise

  • scripts/install.sh erstellt /etc/skd/env und setzt Default-Werte fuer PAM/Allowed-User.
  • scripts/install.sh erstellt /etc/skd/update.env fuer Update-Service Variablen.
  • Aenderungen in /etc/skd/env erfordern einen Service-Restart (sudo systemctl restart skd.service).

Weitere Dokumente

  • Nutzung/Automation: docs/USAGE.md
  • Deployment: docs/DEPLOYMENT.md
  • Architektur: docs/ARCHITECTURE.md