Sign inSign up

stormstreaming/storm-streaming-server

By stormstreaming

•Updated 7 months ago

Storm Streaming Server Public Repository (Web-Anatomy s.c.)

Image
0

823

stormstreaming/storm-streaming-server repository overview

⁠Storm Streaming Server

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.

⁠Key Features

  • Ultra-low latency streaming via WebSockets / MSE and WebCodecs
  • RTMP & Enhanced RTMP ingest (H.264, H.265, AV1)
  • HLS, LL-HLS, MPEG-DASH adaptive playback
  • Live transcoding with FFmpeg (CPU & GPU: NVENC, QSV, AMF)
  • Built-in Control Panel with real-time stats and stream management
  • Clustering — add/remove nodes without downtime
  • REST API — full programmatic control
  • Multi-arch — linux/amd64 and linux/arm64

⁠Quick Start

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: host by 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.


⁠Environment Variables

⁠Required
VariableDefaultDescription
STORM_LICENSE_KEYDEVELOPERLicense key. DEVELOPER limits to 5 streams / 10 viewers. Get a full key at stormstreaming.com⁠.
STORM_ADMIN_USERNAMEadminControl Panel login username.
STORM_ADMIN_PASSWORDadminControl Panel login password. Change in production.
STORM_API_KEYchange-me-api-keyREST API authentication key. Change in production.
⁠Optional
VariableDefaultDescription
STORM_SERVER_NAMEStormServerServer display name (useful with multiple instances).
STORM_GROUP_NAMEDefaultServer group name for cluster identification.
STORM_HOST_NAMElocalhostHostname used by other cluster nodes.
STORM_RTMP_HOST*Host/IP for RTMP socket. Use * for all interfaces.
STORM_RTMP_PORT1935RTMP ingest port.
STORM_HTTP_HOST*Host/IP for HTTP/WebSocket socket.
STORM_HTTP_PORT8080HTTP, WebSocket and Control Panel port.
JAVA_XMX_VALUE4gMaximum JVM heap memory (e.g. 16g, 128g).
JAVA_XMS_VALUE2gInitial JVM heap memory (e.g. 8g, 64g).
⁠Memory Guidelines
Use CaseJAVA_XMS_VALUEJAVA_XMX_VALUE
Development / testing2g4g
~250 concurrent viewers (720p)8g16g
~2800 concurrent viewers (720p)64g128g

⁠Volumes

PathDescription
/srv/storm/configServer configuration files (preferences.xml, log4j2.xml). Generated from env vars on first run if not present.
/srv/storm/logsServer log files.
/etc/ssl/privateJKS certificate files for SSL. Mount your own certs here if using SSL mode.

⁠Default Ports

PortProtocolPurpose
1935RTMPStream ingest from OBS, FFmpeg, encoders, etc.
8080HTTP, WebSocketsControl Panel, REST API, HLS, stream playback.

⁠Custom VHosts & Ports

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 the ports section of your compose file and rebuild the container.

Note: Changes made directly to preferences.xml require a container restart to take effect. Changes made via the Control Panel are applied immediately and do not require a restart.


⁠Hardware Requirements

⁠Minimal (250 concurrent viewers / 720p)
  • CPU: 8-core, 1.8+ GHz
  • RAM: 8 GiB
  • Network: 1 Gbps
  • CPU: 16-core, 2.2+ GHz
  • RAM: 64 GiB
  • Network: 10 Gbps

⁠Resources

Tag summary

Content type

Image

Digest

sha256:eebabd16f…

Size

304.1 MB

Last updated

7 months ago

docker pull stormstreaming/storm-streaming-server