Files
stream-recorder/docs/konfiguration.md
T

5.1 KiB

Konfiguration

config.yml

Einstellungen

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