Go live from your webcam; share a link so anyone can watch. No account, no install.
Broadcast Watch Download the files
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.
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:
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.
?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.)
Want full control? Host the open-source
moq-relay
(the same relay behind luke.moqcdn.net). Rough steps on a fresh Linux VM:
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.
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
sudo certbot certonly -d your.relay
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
CAP_NET_BIND_SERVICE):
sudo ./target/release/moq-relay relay.toml
?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.