141 lines
5.1 KiB
Markdown
141 lines
5.1 KiB
Markdown
# Konfiguration
|
|
|
|
## config.yml
|
|
|
|

|
|
|
|
Die Konfiguration liegt in `data/config.yml` und kann über das Web-UI unter **Einstellungen** bearbeitet werden.
|
|
|
|
Beim ersten Start wird die Datei automatisch mit Standardwerten erstellt. Eine Vorlage mit Kommentaren findet sich in `bin/config.yml.dist`.
|
|
|
|
Die Datei enthält Secrets und wird beim Containerstart auf die Rechte `600` gesetzt.
|
|
|
|
## Abschnitte
|
|
|
|
### Aufnahme
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `recording.download_path` | `/app/data/recordings` | Speicherort für Aufnahmen. Muss innerhalb eines Verzeichnisses aus `RECORDING_ROOTS` liegen |
|
|
| `recording.max_retries` | `5` | Max. Reconnect-Versuche bei Verbindungsabbruch (0 = unbegrenzt) |
|
|
| `recording.retry_delay` | `5` | Wartezeit (Sekunden) zwischen Reconnect-Versuchen |
|
|
|
|
### Server
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `server.host` | `0.0.0.0` | Bind-Adresse des Webservers |
|
|
| `server.port` | `8484` | Port des Webservers |
|
|
|
|
Der Abschnitt `server` wird nur aus der Datei gelesen und kann nicht über Web-UI/API geändert werden. Da die Anwendung nicht als root läuft, sind Ports unter 1024 nicht möglich.
|
|
|
|
### Authentifizierung
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `auth.enabled` | `true` | Basic Auth aktivieren (erfordert ein Passwort mit mind. 8 Zeichen) |
|
|
| `auth.username` | `admin` | Benutzername |
|
|
| `auth.password_hash` | _(generiert)_ | PBKDF2-Hash des Passworts |
|
|
| `auth.password` | — | Optional: Klartext-Passwort, wird beim Start automatisch in `password_hash` umgewandelt |
|
|
|
|
Beim ersten Start (keine `config.yml` vorhanden) ist die Anmeldung aktiv. Benutzer ist `admin`, das zufällig erzeugte Passwort wird einmalig im Container-Log ausgegeben:
|
|
|
|
```bash
|
|
docker logs stream-recorder
|
|
```
|
|
|
|
Bestehende Installationen behalten ihre bisherige Auth-Einstellung. Nach 10 fehlgeschlagenen Logins innerhalb von 5 Minuten wird die IP für den Rest des Zeitfensters mit HTTP 429 abgewiesen.
|
|
|
|
**Passwort vergessen:** In `data/config.yml` den Eintrag `password_hash` durch `password: neues-passwort` ersetzen und den Container neu starten.
|
|
|
|
### Zeitplan-Puffer
|
|
|
|
Standardwerte für die Vor- und Nachlaufzeit bei neuen Jobs mit Zeitplan.
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `schedule.default_pre_buffer` | `5` | Standard-Vorlaufzeit (Minuten) |
|
|
| `schedule.default_post_buffer` | `5` | Standard-Nachlaufzeit (Minuten) |
|
|
|
|
### NTFY
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `ntfy.url` | _(leer)_ | NTFY Topic-URL (z.B. `https://ntfy.sh/mein-topic`) |
|
|
| `ntfy.token` | _(leer)_ | Bearer-Token für authentifizierte Topics (wird von der API nie zurückgegeben) |
|
|
| `ntfy.events` | `error` | Kommaseparierte Events: `start`, `stop`, `error`, `upload` |
|
|
|
|
### Plik
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `plik.url` | _(leer)_ | Plik-Server URL (z.B. `https://plik.example.com`) |
|
|
| `plik.api_key` | _(leer)_ | API Key für authentifizierte Uploads (wird von der API nie zurückgegeben) |
|
|
| `plik.ttl` | `30d` | Aufbewahrungsdauer der Uploads (`30d`, `12h`, etc.) |
|
|
|
|
### Logging
|
|
|
|
| Parameter | Standard | Beschreibung |
|
|
|-----------|----------|-------------|
|
|
| `logging.level` | `INFO` | Log-Level: `DEBUG`, `INFO`, `WARN`, `ERROR` |
|
|
|
|
Anwendungs-Logs erscheinen im Web-UI und zusätzlich auf stdout (`docker logs stream-recorder`). Einträge älter als `LOG_RETENTION_DAYS` Tage werden automatisch gelöscht.
|
|
|
|
## Umgebungsvariablen
|
|
|
|
| Variable | Standard | Beschreibung |
|
|
|----------|----------|-------------|
|
|
| `TZ` | — | Zeitzone (z.B. `Europe/Berlin`) |
|
|
| `PUID` | `1000` | UID, unter der die Anwendung läuft |
|
|
| `PGID` | `1000` | GID, unter der die Anwendung läuft |
|
|
| `RECORDING_ROOTS` | `/app/data/recordings:/recordings` | Erlaubte Basisverzeichnisse für `download_path` (durch `:` getrennt) |
|
|
| `LOG_RETENTION_DAYS` | `90` | Aufbewahrung der Log-Einträge in Tagen |
|
|
| `ENABLE_API_DOCS` | — | `1` aktiviert die Swagger-UI unter `/docs` |
|
|
|
|
Der Container startet als root, passt UID/GID des internen Users `app` an `PUID`/`PGID` an, setzt den Besitzer von `data/` und den vorhandenen Verzeichnissen aus `RECORDING_ROOTS` (nur abweichende Dateien) und startet die Anwendung anschließend ohne Root-Rechte.
|
|
|
|
Eigener Aufnahmepfad, z.B. auf einem separaten Laufwerk:
|
|
|
|
```yaml
|
|
volumes:
|
|
- ./data:/app/data
|
|
- /mnt/storage/recordings:/recordings
|
|
```
|
|
|
|
Danach in den Einstellungen `download_path` auf `/recordings` setzen. Andere Pfade müssen zusätzlich in `RECORDING_ROOTS` eingetragen werden.
|
|
|
|
## Beispiel
|
|
|
|
```yaml
|
|
recording:
|
|
download_path: /app/data/recordings
|
|
max_retries: 5
|
|
retry_delay: 5
|
|
|
|
server:
|
|
host: "0.0.0.0"
|
|
port: 8484
|
|
|
|
auth:
|
|
enabled: true
|
|
username: admin
|
|
password: mein-passwort # wird beim Start in password_hash umgewandelt
|
|
|
|
schedule:
|
|
default_pre_buffer: 5
|
|
default_post_buffer: 5
|
|
|
|
ntfy:
|
|
url: https://ntfy.sh/stream-recorder
|
|
token: ""
|
|
events: start,stop,error,upload
|
|
|
|
plik:
|
|
url: https://plik.example.com
|
|
api_key: ""
|
|
ttl: 30d
|
|
|
|
logging:
|
|
level: INFO
|
|
```
|