Storm Streaming Server Public Repository (Web-Anatomy s.c.)
823
Storm Streaming Server is a high-performance, multi-threaded server application designed for ingesting, processing, and redistributing real-time audio-video streams with ultra-low latency. Built on Java, it supports RTMP ingest, HLS/MPEG-DASH/WebSocket playback, live transcoding, clustering, and a built-in web Control Panel.
services:
storm:
image: stormstreaming/storm-streaming-server:latest
container_name: storm
network_mode: "host"
restart: unless-stopped
environment:
STORM_LICENSE_KEY: "DEVELOPER"
STORM_SERVER_NAME: "MyServer"
STORM_ADMIN_USERNAME: "admin"
STORM_ADMIN_PASSWORD: "change-me"
STORM_API_KEY: "change-me-api-key"
JAVA_XMX_VALUE: "4g"
JAVA_XMS_VALUE: "2g"
volumes:
- /srv/storm/config:/srv/storm/config
- /srv/storm/logs:/srv/storm/logs
Once running, open the Control Panel at:
http://YOUR_SERVER_IP:8080/cpanel
Note: This image uses
network_mode: hostby default. This is intentional — it allows dynamic VHost creation via the Control Panel without restarting the container. Docker Desktop users on Windows/macOS will need to use bridge mode with manually declared ports instead.
| Variable | Default | Description |
|---|---|---|
STORM_LICENSE_KEY | DEVELOPER | License key. DEVELOPER limits to 5 streams / 10 viewers. Get a full key at stormstreaming.com. |
STORM_ADMIN_USERNAME | admin | Control Panel login username. |
STORM_ADMIN_PASSWORD | admin | Control Panel login password. Change in production. |
STORM_API_KEY | change-me-api-key | REST API authentication key. Change in production. |
| Variable | Default | Description |
|---|---|---|
STORM_SERVER_NAME | StormServer | Server display name (useful with multiple instances). |
STORM_GROUP_NAME | Default | Server group name for cluster identification. |
STORM_HOST_NAME | localhost | Hostname used by other cluster nodes. |
STORM_RTMP_HOST | * | Host/IP for RTMP socket. Use * for all interfaces. |
STORM_RTMP_PORT | 1935 | RTMP ingest port. |
STORM_HTTP_HOST | * | Host/IP for HTTP/WebSocket socket. |
STORM_HTTP_PORT | 8080 | HTTP, WebSocket and Control Panel port. |
JAVA_XMX_VALUE | 4g | Maximum JVM heap memory (e.g. 16g, 128g). |
JAVA_XMS_VALUE | 2g | Initial JVM heap memory (e.g. 8g, 64g). |
| Use Case | JAVA_XMS_VALUE | JAVA_XMX_VALUE |
|---|---|---|
| Development / testing | 2g | 4g |
| ~250 concurrent viewers (720p) | 8g | 16g |
| ~2800 concurrent viewers (720p) | 64g | 128g |
| Path | Description |
|---|---|
/srv/storm/config | Server configuration files (preferences.xml, log4j2.xml). Generated from env vars on first run if not present. |
/srv/storm/logs | Server log files. |
/etc/ssl/private | JKS certificate files for SSL. Mount your own certs here if using SSL mode. |
| Port | Protocol | Purpose |
|---|---|---|
1935 | RTMP | Stream ingest from OBS, FFmpeg, encoders, etc. |
8080 | HTTP, WebSockets | Control Panel, REST API, HLS, stream playback. |
By default, Storm exposes two VHosts — RTMP on port 1935 and HTTP/WebSockets on
port 8080. Additional VHosts can be configured in two ways:
Via the Control Panel — navigate to Server → VHosts and add a new VHost directly from the web interface. Changes take effect immediately without restarting the container.
Via preferences.xml — if you mount /srv/storm/config as a volume, you can
edit the VHostSettings section of preferences.xml directly.
Important: This image uses
network_mode: host, so any new port configured in Storm is immediately accessible on the host — no additional Docker configuration required. If you switch to bridge networking, you must explicitly add each port to theportssection of your compose file and rebuild the container.
Note: Changes made directly to
preferences.xmlrequire a container restart to take effect. Changes made via the Control Panel are applied immediately and do not require a restart.
Content type
Image
Digest
sha256:eebabd16f…
Size
304.1 MB
Last updated
7 months ago
docker pull stormstreaming/storm-streaming-server