Panel for OpenRTMP-Server
10K+
A Docker wrapper for the web-based control panel for librtmp2-server. The application source is not stored in this repository. It is cloned from OpenRTMP/librtmp2-server-panel during the Docker build.
git clone https://github.com/AlexanderWagnerDev/rtmppanel-docker.git
cd rtmppanel-docker
docker-compose.yml and configure your environment variables:environment:
REQUIRE_LOGIN: "True" # Enable/disable authentication
USERNAME: "admin" # Admin username
PASSWORD: "supersecret" # Admin password
SECRET_KEY: "generate-a-stable-random-secret" # Stable Flask/encryption secret
LRTMP2_API_URL: "http://librtmp2-server:8080" # librtmp2-server API URL
LRTMP2_API_TOKEN: "your_api_token" # librtmp2-server API token
LRTMP2_DOMAIN: "streaming.example.com" # Public RTMP host/IP
Generate a strong SECRET_KEY with:
python3 -c 'import secrets; print(secrets.token_hex(32))'
docker compose up -d --build
http://localhost:8000For manual deployment:
docker run -d \
--name rtmppanel \
-e REQUIRE_LOGIN=True \
-e USERNAME=admin \
-e PASSWORD=supersecret \
-e SECRET_KEY=generate-a-stable-random-secret \
-e LRTMP2_API_URL=http://librtmp2-server:8080 \
-e LRTMP2_API_TOKEN=your_api_token \
-e LRTMP2_DOMAIN=localhost \
-e LANG=en \
-e TZ=Europe/Vienna \
-e LRTMP2_RTMP_PORT=1935 \
-e LRTMP2_APP=live \
-e PANEL_DB_PATH=/data/panel.db \
-v rtmppanel-data:/data \
-p 8000:8000/tcp \
alexanderwagnerdev/rtmppanel:latest
| Variable | Description | Default | Required |
|---|---|---|---|
LRTMP2_API_URL | librtmp2-server API endpoint | - | Yes |
LRTMP2_API_TOKEN | librtmp2-server API token | - | Yes |
LRTMP2_DOMAIN | Domain or IP for public RTMP URLs | localhost | Yes |
LRTMP2_RTMP_PORT | RTMP listener port | 1935 | No |
LRTMP2_APP | Default RTMP app name | live | No |
REQUIRE_LOGIN | Enable authentication (True/False) | False | No |
USERNAME | Admin username | admin | If login enabled |
PASSWORD | Admin password | - | If login enabled |
SECRET_KEY | Stable Flask session/encryption secret for stored stream keys | - | Yes |
PANEL_DB_PATH | SQLite database path for stored stream keys | /data/panel.db | No |
SESSION_COOKIE_SECURE | Use secure cookies when served over HTTPS | False | No |
LANG | Interface language | en | No |
TZ | Timezone | UTC | No |
Important: Keep SECRET_KEY stable. The panel uses it to encrypt locally stored stream keys, so changing it can make already stored keys unreadable.
Minimal setup with authentication:
environment:
REQUIRE_LOGIN: "True"
USERNAME: "admin"
PASSWORD: "supersecret"
SECRET_KEY: "generate-a-stable-random-secret"
LRTMP2_API_URL: "http://librtmp2-server:8080"
LRTMP2_API_TOKEN: "mytoken123"
LRTMP2_DOMAIN: "streaming.example.com"
LRTMP2_API_URL is correct and reachable from the containerLRTMP2_API_TOKEN matches the token from librtmp2-serverREQUIRE_LOGIN is set to TrueUSERNAME, PASSWORD, and SECRET_KEYSECRET_KEY is used after every container restart/data volume mounted so PANEL_DB_PATH=/data/panel.db persistsdocker compose logs -f rtmppanel
This Docker wrapper is licensed under the MIT License - see the LICENSE file for details.
For questions, issues, or feature requests:
[Deutsche Version]
Ein Docker-Wrapper für das webbasierte Control Panel von librtmp2-server. Der App-Sourcecode liegt nicht in diesem Repository. Er wird beim Docker-Build aus OpenRTMP/librtmp2-server-panel geklont.
git clone https://github.com/AlexanderWagnerDev/rtmppanel-docker.git
cd rtmppanel-docker
docker-compose.yml bearbeiten und Umgebungsvariablen konfigurieren:environment:
REQUIRE_LOGIN: "True" # Authentifizierung aktivieren/deaktivieren
USERNAME: "admin" # Admin-Benutzername
PASSWORD: "supersecret" # Admin-Passwort
SECRET_KEY: "generate-a-stable-random-secret" # Stabiles Flask/Verschlüsselungs-Secret
LRTMP2_API_URL: "http://librtmp2-server:8080" # librtmp2-server API-URL
LRTMP2_API_TOKEN: "your_api_token" # librtmp2-server API-Token
LRTMP2_DOMAIN: "streaming.example.com" # Öffentliche RTMP Domain/IP
Starkes SECRET_KEY erzeugen:
python3 -c 'import secrets; print(secrets.token_hex(32))'
docker compose up -d --build
http://localhost:8000 aufrufenFür manuelles Deployment:
docker run -d \
--name rtmppanel \
-e REQUIRE_LOGIN=True \
-e USERNAME=admin \
-e PASSWORD=supersecret \
-e SECRET_KEY=generate-a-stable-random-secret \
-e LRTMP2_API_URL=http://librtmp2-server:8080 \
-e LRTMP2_API_TOKEN=your_api_token \
-e LRTMP2_DOMAIN=localhost \
-e LANG=de \
-e TZ=Europe/Vienna \
-e LRTMP2_RTMP_PORT=1935 \
-e LRTMP2_APP=live \
-e PANEL_DB_PATH=/data/panel.db \
-v rtmppanel-data:/data \
-p 8000:8000/tcp \
alexanderwagnerdev/rtmppanel:latest
| Variable | Beschreibung | Standard | Erforderlich |
|---|---|---|---|
LRTMP2_API_URL | librtmp2-server API-Endpunkt | - | Ja |
LRTMP2_API_TOKEN | librtmp2-server API-Token | - | Ja |
LRTMP2_DOMAIN | Domain oder IP für öffentliche RTMP-URLs | localhost | Ja |
LRTMP2_RTMP_PORT | RTMP Listener-Port | 1935 | Nein |
LRTMP2_APP | Standard-RTMP-App-Name | live | Nein |
REQUIRE_LOGIN | Authentifizierung aktivieren (True/False) | False | Nein |
USERNAME | Admin-Benutzername | admin | Bei Login |
PASSWORD | Admin-Passwort | - | Bei Login |
SECRET_KEY | Stabiles Flask Session-/Verschlüsselungs-Secret für gespeicherte Stream-Keys | - | Ja |
PANEL_DB_PATH | SQLite-Datenbankpfad für gespeicherte Stream-Keys | /data/panel.db | Nein |
SESSION_COOKIE_SECURE | Sichere Cookies verwenden, wenn HTTPS genutzt wird | False | Nein |
LANG | Sprache der Oberfläche | en | Nein |
TZ | Zeitzone | UTC | Nein |
Wichtig: SECRET_KEY muss stabil bleiben. Das Panel verschlüsselt lokal gespeicherte Stream-Keys damit. Wenn du es änderst, können bereits gespeicherte Keys unlesbar werden.
Minimale Einrichtung mit Authentifizierung:
environment:
REQUIRE_LOGIN: "True"
USERNAME: "admin"
PASSWORD: "supersecret"
SECRET_KEY: "generate-a-stable-random-secret"
LRTMP2_API_URL: "http://librtmp2-server:8080"
LRTMP2_API_TOKEN: "mytoken123"
LRTMP2_DOMAIN: "streaming.example.com"
LRTMP2_API_URL korrekt ist und vom Container aus erreichbarLRTMP2_API_TOKEN mit dem Token von librtmp2-server übereinstimmtREQUIRE_LOGIN auf True gesetzt istUSERNAME, PASSWORD und SECRET_KEYSECRET_KEY verwendet wird/data Volume gemountet, damit PANEL_DB_PATH=/data/panel.db bestehen bleibtdocker compose logs -f rtmppanel
Dieser Docker-Wrapper ist unter der MIT-Lizenz lizenziert - siehe die LICENSE Datei für Details.
Für Fragen, Probleme oder Feature-Requests:
Content type
Image
Digest
sha256:c3b4bfb35…
Size
29.2 MB
Last updated
about 1 month ago
docker pull alexanderwagnerdev/rtmppanel