My Live Platform

Go live from your webcam; share a link so anyone can watch. No account, no install.

To host it yourself: download the zip and upload broadcast.html and watch.html to any web server (over HTTPS). Open broadcast.html to go live, then use “Copy viewer link” to share.

Technical Information

Choosing a relay

Video flows through a MoQ relay. By default these pages use a free, public relay (Cloudflare’s). There are two ways to point them somewhere else — the broadcaster and viewers must use the same relay:

  1. Edit the file (permanent). Near the top of both broadcast.html and watch.html is one line:
    window.MLP_RELAY = "https://draft-14.cloudflare.mediaoverquic.com/";
    Change the URL to your relay in both files. That’s the only edit needed.
  2. Use a ?relay= link (no editing — great for testing). Add ?relay=<url> to the page URL:
    broadcast.html?relay=https://your.relay/
    When you press “Copy viewer link,” a non-default relay is automatically added to the viewer link so watchers connect to the same one. Priority is: ?relay=window.MLP_RELAY → the built-in default.

Any open, anonymous MoQ relay works with no other changes — these pages connect directly with no login or token. (A relay that requires a token won’t work with these simple files.)

Run your own relay (moq-relay)

Want full control? Host the open-source moq-relay (the same relay behind luke.moqcdn.net). Rough steps on a fresh Linux VM:

  1. A VM with a public IP and a domain (e.g. your.relay) pointing to it. Open port 443 for BOTH TCP and UDP — WebTransport is QUIC over UDP, and a normal “HTTPS” rule is TCP-only. This is the #1 gotcha.
  2. Install Rust + build it:
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    sudo apt install build-essential pkg-config libssl-dev
    git clone https://github.com/moq-dev/moq
    cd moq
    cargo build --release --bin moq-relay
    cargo build --release --bin moq-token-cli
  3. Get a TLS certificate (WebTransport requires a real, trusted cert):
    sudo certbot certonly -d your.relay
  4. Generate a key, then run it open/anonymous (no tokens) with public = "" in relay.toml:
    ./target/release/moq-token-cli generate --out ~/relay.jwk
    # relay.toml
    [server]
    listen = "[::]:443"
    [server.tls]
    cert = ["/etc/letsencrypt/live/your.relay/fullchain.pem"]
    key  = ["/etc/letsencrypt/live/your.relay/privkey.pem"]
    [auth]
    key = "/home/ubuntu/relay.jwk"
    public = ""          # anonymous publish + subscribe on all paths
  5. Run it (binding :443 needs root or CAP_NET_BIND_SERVICE):
    sudo ./target/release/moq-relay relay.toml
  6. Point the pages at it with ?relay=https://your.relay/ (or edit the window.MLP_RELAY line as above).

Quick check: the browser console should show connected via WebTransport and negotiated ALPN: moq-lite-04. If the player just reconnect-loops but curl https://your.relay works, UDP 443 is blocked — fix the firewall.