docs(deploy): document the GUI surface (Restreamer UI + Wild Dragon WebRTC admin)
Some checks failed
ci / race tests (push) Blocked by required conditions
ci / WebRTC smoke (5-viewer fanout) (push) Blocked by required conditions
ci / WebRTC latency p95 gate (push) Blocked by required conditions
ci / vet + build (push) Has been cancelled

This commit is contained in:
Zac Gaetano 2026-05-03 16:33:48 -04:00
parent 2d2bd0e5c6
commit 86a5a50dec

View file

@ -55,7 +55,45 @@ docker compose logs -f
You should see Core come up logging all configured listeners, including
a line from the WebRTC component confirming the subsystem is enabled.
## Smoke-test via API
The first build takes ~5 minutes — it compiles Core from source AND
builds the React UI bundle. Subsequent rebuilds are faster (Docker
layer cache).
## GUI surfaces
Once the stack is up, three browser-reachable UIs ship out of the box:
| URL | What it is |
| --- | --- |
| `http://<host>:8080/` | The full Restreamer UI (rebranded "Wild Dragon"). Manage processes, configure ingests, set up RTMP/SRT/HLS outputs, view logs. The standard Datarhei admin experience. |
| `http://<host>:8080/wilddragon-webrtc.html` | Wild Dragon WebRTC admin. Sign in, pick a process, click "Enable WebRTC". The page restarts the process so the new RTP output legs go live, then surfaces the WHEP URL with a one-click jump to the smoke player. **The fastest path from "I want WebRTC on this stream" to "the smoke player is rendering it."** |
| `http://<host>:8080/whep-player.html` | Standalone WHEP subscriber (the smoke player). ICE / codec / bitrate diagnostics, JWT input, shareable URLs. Use to verify WebRTC actually works after enabling it. |
| `http://<host>:8080/api/swagger/index.html` | Swagger API docs. Same auth. Hit the WHEP endpoints directly when scripting. |
The Restreamer UI doesn't (yet) have a WebRTC checkbox in its process editor —
that's why the standalone admin page exists. A proper UI fork that adds
WebRTC controls inline is tracked in issue #15.
## End-to-end smoke test
```
1. Open http://<host>:8080/ (Restreamer UI). Sign in with admin / <API_AUTH_PASSWORD>.
2. Create a new "Source" with type RTMP. Note the RTMP push URL it shows.
3. Push your test source to that URL (OBS, ffmpeg, etc.). Confirm it
shows "running" in the UI.
4. Open http://<host>:8080/wilddragon-webrtc.html. Sign in with the same creds.
5. Click "Enable WebRTC" on the process you just created.
6. Click the "open ↗" link next to the WHEP URL to load the smoke player.
7. Click "Subscribe" in the smoke player. Within ~1s you should see your
RTMP source rendering as WebRTC.
```
If step 7 hangs, the most common cause is `PUBLIC_IP` in `.env` not
matching what the browser can actually reach (host firewall, wrong
LAN IP, etc.). Check the WHEP smoke player's log panel — it'll
surface the ICE state transitions.
## Smoke-test via API directly
```
# Issue a JWT against the admin creds from .env:
@ -100,3 +138,7 @@ docker compose down
This matches how the upstream datarhei/core image ships.
- Put Caddy or nginx in front for TLS. The media itself is
DTLS-SRTP-encrypted regardless.
- The Wild Dragon WebRTC admin page (`/wilddragon-webrtc.html`) talks to
the same JWT-protected API. The token is held in `localStorage` and
cleared when you click "Sign out". If you've configured Core's API
to require auth — which you should — this page is gated by it.