Dawn Stream deployment

Ship a browser-reachable stream with WSS signaling, working ICE (usually TURN), and secrets kept out of images and git.

Topologies

flowchart LR Viewer[BrowserViewer] Sig[SignalingServer] Streamer[DawnEngineStreamer] Turn[TURN] Viewer -->|WSS| Sig Streamer -->|WSS| Sig Viewer <-->|WebRTC_RTP| Streamer Viewer -.->|relay_when_needed| Turn Streamer -.->|relay_when_needed| Turn
TopologyUse
Standalone signaling + static frontend (CDN or separate host)Production
Signaling --serve-static / --serve-frontendDemos only
Embedded signaling in the engineLocal / Editor demos only
SFU (Gems/DawnStream/SFU, --enable-sfu)Optional one-to-many fan-out—not required for MVP

Public checklist

  1. Signaling on WSS with valid certificates (--tls-cert / --tls-key).
  2. Configure STUN + TURN; enterprise and symmetric NAT almost always need TURN.
  3. Inject streamer / viewer / admin tokens via env or a secret manager; keep viewer tickets short-lived; rotate regularly.
  4. Plan NVENC concurrency: consumer GeForce cards often allow ~3 encode sessions; use professional GPUs or Video.EncoderGpuId for multi-instance hosts.
  5. Open firewall paths (below). Prefer clamping WebRTC UDP with IcePortMin / IcePortMax when policy requires it.
  6. Host the player over HTTPS (autoplay and secure context). Do not bake long-lived secrets into setreg or container layers.

TURN example

Signaling advertises ICE servers to clients:

node src/main.ts --port 443 `
 --tls-cert fullchain.pem --tls-key privkey.pem `
 --stun stun:stun.l.google.com:19302 `
 --turn turn:turn.example.com:3478 `
 --turn-username user --turn-password secret

Engine / project setreg can also set Network.TurnServer + username/password (and STUN list). Keep TURN credentials in secrets, not in committed setreg. Viewer URL forceTurn helps validate relay-only paths.

Firewall ports

TrafficTypical portsNotes
SignalingTCP 443 (or custom)WSS
Player / staticTCP 443HTTPS
WebRTC mediaUDP rangeOptionally clamp with IcePortMin/Max
TURNUDP/TCP 3478 (+ relay range per TURN server)Vendor-specific

NVENC and multi-instance

  • One hardware encode session per streamer process is the common case for MVP (MaxViewers=1).
  • Scale out with more GPU hosts rather than oversubscribing a consumer card.
  • Bind a GPU with Video.EncoderGpuId when multiple adapters are present.
  • Keep ZeroCopyCapture=false unless you have measured reconnect memory behavior—see Building for real media.

Security hardening

  • Prefer env / secret manager over CLI token flags.
  • Separate streamer, viewer, and admin tokens; never reuse streamer secrets in player URLs beyond short TTL tickets.
  • Disable experimental remote console (Experimental.AllowConsoleCommands) unless triple-gated and allowlisted.
  • Restrict CORS; default same-origin is safer.
  • Monitor /healthz / /readyz and streamer ps_dumpStats / CSV in ops dashboards.

Next steps


Copyright © 2026 DawnEngine. All rights reserved.

DawnEngine is a commercial 3D engine distributed under the DawnEngine end-user license agreement. Engine binaries and source are proprietary and are not covered by the licenses below.

Documentation only: the prose and templates on this site are a derivative work of Open 3D Engine (O3DE) documentation by the O3DE Contributors, used under CC BY 4.0 (documentation content), Apache 2.0 (site code), and the MIT license (inline code samples).

The open-source 3D engine that DawnEngine is built on top of is Open 3D Engine . DawnEngine is not affiliated with, endorsed by, or sponsored by The Linux Foundation or the O3DE project. “O3DE” and “Open 3D Engine” are trademarks of The Linux Foundation.