This is the generic Docker reference for Strom. For a guided, opinionated deployment
(Docker run, GPU, ICE servers, authentication, verification) see
OPEN_LIVE_SETUP.md — it is the recommended starting point and ships a
working docker-compose.yml example.
Pre-built multi-architecture images (amd64/arm64) are published on Docker Hub:
docker pull eyevinntechnology/strom:latest # base image
docker pull eyevinntechnology/strom-full:latest # + CEF/Chromium for HTML renderingPin a specific version with a tag, e.g. eyevinntechnology/strom:0.6.0.
docker run -d \
--name strom \
--restart unless-stopped \
-p 8080:8080 \
-v "$(pwd)/data:/data" \
eyevinntechnology/strom:latestOpen http://localhost:8080. The /data volume persists flows, blocks, and other
configuration across restarts.
For GPU acceleration add --gpus all and -e NVIDIA_DRIVER_CAPABILITIES=all — see
DOCKER_GPU_SETUP.md. For WHEP/WHIP, AES67, NDI, or SRT, prefer
--network host so these protocols don't have to fight Docker NAT.
Strom is configured via environment variables (see DEVELOPMENT.md for the full list and the CLI equivalents):
| Variable | Purpose |
|---|---|
STROM_PORT |
HTTP server port (default 8080) |
STROM_DATA_DIR |
Data directory (default /data in the image) |
STROM_DATABASE_URL |
PostgreSQL connection string (optional) — see POSTGRESQL.md |
STROM_ADMIN_USER / STROM_ADMIN_PASSWORD_HASH / STROM_API_KEY |
Authentication — see AUTHENTICATION.md |
STROM_SERVER_ICE_SERVERS |
STUN/TURN servers for WebRTC |
STROM_TLS_CERT / STROM_TLS_KEY |
Built-in TLS (PEM) |
RUST_LOG |
Logging level (default info) |
Volumes: mount ./data:/data for persistent storage. The /data volume is the only state
Strom keeps by default.
No docker-compose.yml is committed to the repository — compose files are deployment-specific
and gitignored. Use the worked example in OPEN_LIVE_SETUP.md §5 as a
starting point and adapt it (GPU, auth, TLS, network mode, DeckLink mounts) to your host.
The image bundles the standalone MCP server binary at /app/strom-mcp-server (stdio
transport). The backend also serves MCP over HTTP at /api/mcp directly, so for most setups
you do not need to run the separate binary — point your MCP client at
http://<host>:8080/api/mcp. See MCP.md.
To run the stdio MCP server against a running backend (e.g. for Claude Desktop), it's usually simplest to run it on the host, pointing at the container's HTTP port:
STROM_API_URL=http://localhost:8080 ./target/release/strom-mcp-server{
"mcpServers": {
"strom": {
"command": "/path/to/strom-mcp-server",
"env": { "STROM_API_URL": "http://localhost:8080" }
}
}
}The Dockerfile uses a multi-stage build on Ubuntu 25.10 (Questing), which
provides GStreamer 1.26 with the nvcodec fix:
- Frontend builder — builds the WASM frontend (platform-independent output).
- Backend builder — builds the backend and the MCP server, optionally cross-compiling for ARM64 via Zig (targets an older glibc for broad compatibility — see CROSS_COMPILE_ARM64.md).
- Runtime — minimal Ubuntu with the GStreamer runtime plugins and the GL/EGL libraries required for CUDA-GL interop.
docker build -t strom:local .
docker run -p 8080:8080 -v "$(pwd)/data:/data" strom:localCI builds and publishes the multi-arch images on release; building locally is only needed for development or custom images.
Terminate TLS and route to the backend with nginx, Caddy, or Traefik:
server {
listen 443 ssl;
server_name strom.example.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
# WebSocket upgrade for /api/ws
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}Alternatively, terminate TLS in Strom itself with STROM_TLS_CERT / STROM_TLS_KEY.
restart: unless-stopped
logging:
driver: json-file
options:
max-size: "50m"
max-file: "5"The entire state lives under /data:
docker cp strom:/data ./backup/# Health endpoint (no auth required)
curl http://localhost:8080/health
# Confirm GStreamer is present in the container
docker exec strom gst-inspect-1.0 --versionFor GPU issues see DOCKER_GPU_SETUP.md; for segfaults see DEBUGGING_SEGFAULTS_WSL2.md.
- OPEN_LIVE_SETUP.md — guided deployment with a compose example
- DOCKER_GPU_SETUP.md — NVIDIA GPU acceleration
- AUTHENTICATION.md · POSTGRESQL.md · MCP.md