Files
kiddo/docs/CONFIGURATION.md

89 lines
4.0 KiB
Markdown

ID: DOC_000011 | Version: 0.2.1 | 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, Vorlage: `env.update.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.
## 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`