Sign inSign up
librtmp2-server-panel logo

openrtmp/librtmp2-server-panel

By openrtmp

•Updated 2 days ago

Web UI for librtmp2-server: streams, live stats, publish/play URLs and cluster status.

Image
Integration & delivery
1

222

openrtmp/librtmp2-server-panel repository overview

⁠librtmp2-server-panel

Web UI for librtmp2-server⁠: stream management, live stats, publish/play URLs and cluster status.

Source, full documentation and issue tracker: github.com/OpenRTMP/librtmp2-server-panel⁠

Alpha software. Test before relying on it in production.

The panel is a thin REST client — it needs a running librtmp2-server and that server's API token. Nothing works without them.

⁠Quick start (existing server)

docker run -d \
  --name librtmp2-server-panel \
  -p 8000:8000 \
  -e LRTMP2_API_URL=http://<server-host>:8080 \
  -e LRTMP2_STATS_URL=http://<server-host>:8080 \
  -e LRTMP2_DOMAIN=<public-host-or-ip> \
  -e LRTMP2_API_TOKEN=<server-token> \
  -e PASSWORD=<panel-password-12-chars-or-more> \
  -e SECRET_KEY=<random-32-plus-char-secret> \
  openrtmp/librtmp2-server-panel:latest

Open http://localhost:8000 and log in with USERNAME (default admin) and PASSWORD.

LRTMP2_STATS_URL is the server URL the browser can reach; it is used for copied stats links. Leave it unset if it equals LRTMP2_API_URL from the browser's point of view.

⁠Full stack (server + panel + Redis)

Copy the quickstart compose file and its .env template, then start both containers with prebuilt images:

curl -LO https://raw.githubusercontent.com/OpenRTMP/librtmp2-server-panel/main/compose.quickstart.yml
curl -LO https://raw.githubusercontent.com/OpenRTMP/librtmp2-server-panel/main/.env.example
mv .env.example .env      # fill in API token, PASSWORD and SECRET_KEY
docker compose -f compose.quickstart.yml up -d

To use Docker Hub instead of GHCR, replace the two image: lines with openrtmp/librtmp2-server:latest and openrtmp/librtmp2-server-panel:latest.

⁠Supported tags and architectures

  • latest, beta, alpha — moving channels
  • 0.1.15, v0.1.15 — pinned releases (both spellings are published)
  • linux/amd64, linux/arm64, linux/riscv64

Mirrors: ghcr.io/openrtmp/librtmp2-server-panel and quay.io/openrtmp/librtmp2-server-panel.

⁠Ports

PortProtocolPurpose
8000HTTPPanel UI (Gunicorn, gthread, 4 threads)

⁠Configuration

VariableRequiredPurpose
LRTMP2_API_URLyesServer REST API, reachable from the panel container
LRTMP2_API_TOKENyesServer API token (must match the server)
LRTMP2_STATS_URLnoServer URL used in copied stats links (browser-reachable)
LRTMP2_DOMAINnoPublic host/IP used in generated RTMP/RTMPS URLs (default localhost)
LRTMP2_RTMP_PORT / LRTMP2_RTMPS_PORTnoPorts used in generated URLs (1935 / 1936)
LRTMP2_APPnoDefault RTMP application name (default live)
USERNAME / PASSWORDyes*Panel login (password ≥ 12 characters)
SECRET_KEYyesSession signing key, ≥ 32 characters
REQUIRE_LOGINnoTrue by default; False requires ALLOW_INSECURE_NO_LOGIN=1
RATELIMIT_STORAGE_URInoRate-limit store; redis://… for multi-worker, memory:// for single process
PANEL_PUBLIC_URLnoPublic panel URL; drives SESSION_COOKIE_SECURE auto-detection
SESSION_COOKIE_SECUREnoForce secure cookies; set for HTTPS deployments
PANEL_ALLOW_INSECURE_HTTPno1 permits plain-HTTP serving (default in the quickstart)
TRUSTED_PROXY_COUNT / TRUSTED_PROXY_IPSnoEnable and scope X-Forwarded-* handling

* Required while REQUIRE_LOGIN is enabled (the default).

The container validates configuration at startup and exits with a clear error when a required value is missing or too short.

Full variable reference: .env.example⁠ · README⁠

⁠Reverse proxy notes

For HTTPS behind nginx/Caddy/Traefik:

  1. Set PANEL_PUBLIC_URL=https://panel.example.com (or SESSION_COOKIE_SECURE=true).
  2. Set PANEL_ALLOW_INSECURE_HTTP=0.
  3. Set TRUSTED_PROXY_COUNT=1 and TRUSTED_PROXY_IPS to the proxy network.
  4. Do not strip the Host header.

⁠Health and safety

  • Built-in healthcheck: GET http://localhost:8000/login
  • Runs as the unprivileged user openrtmp
  • Session cookies signed with SECRET_KEY; rate limiting via Redis in the compose stack

⁠License

MIT — see LICENSE⁠.

Tag summary

Content type

Image

Digest

sha256:60740b1b6…

Size

25.4 MB

Last updated

2 days ago

docker pull openrtmp/librtmp2-server-panel