5.1 KiB
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:
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:
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
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
