weblinked
ghcr.io/stoatworks-labs/weblinked-docker:edge
https://ghcr.io/stoatworks-labs/weblinked-docker
host
sh
false
https://github.com/stoatworks-labs/weblinked-docker/issues
https://github.com/stoatworks-labs/weblinked-docker
Renders a web page offscreen at a broadcast raster and exact frame rate and sends it out as NDI. Point it at a Grafana dashboard, a scoreboard, a lower third or a countdown clock and it becomes a video source your vision mixer, decoder or recorder can take.
Chromium renders on the CPU through SwiftShader, so no GPU passthrough is needed. Measured at 50.1 ticks/sec at 1080p50 with zero dropped frames.
IMPORTANT — the NDI runtime is not included and you must supply it. libndi is loaded at run time and its licence does not permit redistribution under MIT, so it cannot be shipped in the image. Download the NDI SDK for Linux from ndi.video, take libndi.so.6 out of lib/x86_64-linux-gnu/, put it in the "NDI runtime" path below, and restart the container. Without it everything still runs and the NDI output simply reports itself unavailable.
This container uses host networking because NDI discovery is mDNS, which Docker's bridge network does not forward. In bridge mode the source is never seen by any receiver and nothing reports an error.
SDI output is not available in a container: DeckLink and AJA need a card and a kernel driver on the host. Syphon and Spout are macOS and Windows only.
The control page is at the WebUI link and is the whole interface — it also accepts HTTP and OSC from Companion or a show-control system.
SECURITY: intended to run purely inside a private network or Tailscale tailnet. The control API has no authentication until you set an API token, and POST /api/script runs arbitrary JavaScript in the rendered page — so an open port here is remote code execution in a browser on your network, not just a feed a stranger can retune. Its security has not been independently reviewed by a human. Host networking puts the control port on every interface this server has, so set the bind address to your tailnet address, set an API token, and never expose it to the public internet.
MediaApp:Video Tools:
http://[IP]:7654/
https://raw.githubusercontent.com/stoatworks-labs/stoatworks-unraid/main/templates/weblinked-docker.xml
https://raw.githubusercontent.com/stoatworks-labs/stoatworks-unraid/main/icon.png
The NDI runtime is not bundled — see the note about libndi above. Everything else works without it.
https://example.com
1080p50
WebLinked
/mnt/user/appdata/weblinked/ndi
/mnt/user/appdata/weblinked/cache
/cache
7654
7655
0.0.0.0
false
false