ID: DOC_000011 | Version: 0.2.3 | 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: ```bash 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 ``` 3. 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`