erster docker release

This commit is contained in:
Patrick Asmus
2026-09-15 18:10:57 +02:00
parent 794156a088
commit 9fa589789e
21 changed files with 3182 additions and 71 deletions
+51 -66
View File
@@ -7,7 +7,7 @@
<h1 align="center">stream-recorder</h1>
<h4 align="center">
Generischer Stream-Recorder für RTMP, HLS, HTTP-Audio und weitere Formate
Generischer Stream-Recorder für RTMP, HLS, HTTP-Audio und weitere Formate — mit Web-UI und Docker
</h4>
<h6 align="center">
@@ -23,88 +23,73 @@
## Funktionen
- **Web-Interface** — Jobs planen, Aufnahmen steuern und verlängern im Browser
- **Docker-basiert** — Ein Container, läuft auf ARM und x86/x64
- **Mehrere Stream-Typen** — RTMP, RTMPS, HLS (m3u8), MP3, AAC, OGG, FLAC und HTTP-Streams
- **Job-basiert** — Ein Stream = eine Job-Datei, inklusive Zeitplanung
- **Segment-Splitting** — Lange Aufnahmen automatisch in Teile zerlegen (z.B. stündlich)
- **Plik-Upload** — Aufnahmen und Segmente automatisch auf Plik hochladen
- **Zeitplanung** — Aufnahmezeiten direkt in der Job-Datei konfigurieren (kein Cron nötig)
- **Aufnahmen verlängern** — Laufende Aufnahmen spontan verlängern oder auf unbegrenzt setzen
- **Zeitplanung** — Automatische Aufnahmezeiten direkt im Web-UI konfigurieren
- **Segment-Splitting** — Lange Aufnahmen automatisch in Teile zerlegen
- **Auto-Reconnect** — Automatische Wiederverbindung bei Verbindungsabbrüchen
- **Live-Status** — Laufende Aufnahmen mit Laufzeit, Dateigröße und Segment-Anzahl anzeigen
- **NTFY-Benachrichtigungen** — Push-Nachrichten bei Start, Stop, Fehler und Upload
- **Schnellaufnahme** — Interaktiver Modus für spontane Aufnahmen
## Voraussetzungen
- **Linux** (getestet unter Ubuntu/Debian)
- **Bash** 4.0+
- **ffmpeg** (`sudo apt install ffmpeg`)
- **curl** (optional, für NTFY und Plik)
- **Schnellaufnahme** — URL eingeben, sofort aufnehmen
- **NTFY-Benachrichtigungen** — Push-Nachrichten bei Start, Stop, Fehler und Upload (pro Job schaltbar)
- **Plik-Upload** — Aufnahmen automatisch hochladen, optional danach löschen (pro Job schaltbar)
- **Metadata-Monitor** — Automatische Show-Erkennung via Stream-Metadaten (Plugin)
- **REST-API** — Alle Funktionen auch per API steuerbar
## Schnellstart
```bash
# Klonen und einrichten
git clone https://git.techniverse.net/scriptos/stream-recorder.git /opt/stream-recorder
cd /opt/stream-recorder
cp config/stream-recorder.conf.dist config/stream-recorder.conf
nano config/stream-recorder.conf
# Repository klonen
git clone https://git.techniverse.net/scriptos/stream-recorder.git
cd stream-recorder
# Scheduler installieren (optional)
sudo install/install.sh
# Ersten Job erstellen
./stream-recorder.sh create
# Oder direkt loslegen
./stream-recorder.sh quick
# Container starten
docker compose up -d
```
## Befehle
Das Web-UI ist unter `http://localhost:8484` erreichbar. Die Konfiguration wird beim ersten Start automatisch in `data/config.yml` erstellt.
## Docker Compose
```yaml
services:
stream-recorder:
image: stream-recorder:latest
container_name: stream-recorder
restart: unless-stopped
ports:
- "8484:8484"
volumes:
- ./data:/app/data
environment:
TZ: Europe/Berlin
```
## Daten
Alle persistenten Daten liegen in einem einzigen Volume (`./data`):
| Pfad | Beschreibung |
|------|-------------|
| `data/config.yml` | Konfiguration (wird beim ersten Start automatisch erstellt) |
| `data/stream-recorder.db` | SQLite-Datenbank |
| `data/recordings/` | Aufnahmen (pro Job ein Unterordner) |
## Multi-Arch Build
```bash
./stream-recorder.sh record [job] # Aufnahme starten (ohne Angabe: Auswahl)
./stream-recorder.sh stop [job] # Aufnahme stoppen (ohne Angabe: Auswahl)
./stream-recorder.sh status # Laufende Aufnahmen anzeigen
./stream-recorder.sh list # Alle Jobs anzeigen
./stream-recorder.sh create # Neuen Job erstellen
./stream-recorder.sh quick # Schnellaufnahme
./stream-recorder.sh logs # Logs live verfolgen
docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t stream-recorder:latest .
```
## Dokumentation
| Thema | Beschreibung |
|-------|-------------|
| [Installation](docs/installation.md) | Installation, Updates, Deinstallation |
| [Konfiguration](docs/konfiguration.md) | Alle Konfigurationsparameter |
| [Job-Dateien](docs/jobs.md) | Jobs erstellen und verwalten |
| [Zeitplanung](docs/zeitplanung.md) | Automatische Aufnahmezeiten |
| [Segment-Splitting](docs/segment-splitting.md) | Aufnahmen in Teile zerlegen |
| [Plik-Upload](docs/plik-upload.md) | Automatischer Upload auf Plik |
| [Benachrichtigungen](docs/benachrichtigungen.md) | NTFY Push-Nachrichten |
| [Befehle](docs/befehle.md) | Alle Befehle im Detail |
| [Beispiele](docs/beispiele.md) | Praxisbeispiele und Workflows |
## Verzeichnisstruktur
```
stream-recorder/
├── stream-recorder.sh # Hauptscript
├── config/
│ └── stream-recorder.conf.dist # Konfigurations-Vorlage
├── jobs/ # Job-Definitionen
│ └── templates/ # Vorlagen
│ ├── example-rtmp.job.dist
│ ├── example-hls.job.dist
│ └── example-mp3.job.dist
├── docs/ # Dokumentation
├── install/
│ ├── install.sh # Scheduler installieren
│ └── uninstall.sh # Scheduler deinstallieren
├── README.md
└── LICENSE
```
| [Jobs](docs/jobs.md) | Jobs erstellen, Zeitplanung, Schnellaufnahme |
| [Aufnahmen](docs/aufnahmen.md) | Verlängern, Stoppen, Reconnect, Segment-Splitting |
| [Plugins](docs/plugins.md) | NTFY, Plik-Upload, Metadata-Monitor |
| [Konfiguration](docs/konfiguration.md) | config.yml, alle Parameter |
| [API](docs/api.md) | REST-API Endpunkte |
<br><br>
<p align="center">