Storm docs logo
Search the docs.../
Explore Storm Products

Docker-based Installation - Storm Streaming Server

Docker is the simplest way to start working with Storm Streaming Server. Please make sure that both Docker and Docker Compose components are installed on your target OS.

If you have no prior experience with Docker, check our Docker Software Installation guide.

Let's check if all Docker components are in place:

Check Docker version
Code iconbash
docker version

(for Windows please use PowerShell/Command Prompt)

Check Docker Compose version
Code iconbash
docker-compose version

(for Windows please use PowerShell/Command Prompt)

Basic Docker Configuration

Let's create a simplified docker configuration file called storm-docker-compose.yml:

storm-docker-compose.yml
Code iconyaml
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: "admin"
      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 the container is running, open the Control Panel in your browser:

http://YOUR_SERVER_IP:8080/cpanel

Networking

This image uses network_mode: host by default. This means the container shares the network stack directly with the host machine, which has an important practical benefit — any VHost you create via the Control Panel is immediately accessible without restarting the container or modifying Docker configuration. This is the recommended mode for production deployments on Linux.

Docker Desktop on Windows / macOS

network_mode: host is not supported on Docker Desktop for Windows and macOS. On these systems, use bridge networking and declare ports explicitly:

Code iconyaml
    ports:
      - "1935:1935"
      - "8080:8080"

Keep in mind that in bridge mode, any new VHost you create in the Control Panel will require a corresponding entry in the ports section and a container restart to become accessible from outside.

Environmental variables

VariableDescription
STORM_LICENSE_KEYFor testing purposes, you can keep "DEVELOPER", however server will be limited to 5 concurrent streams and 10 viewer connections. For a paid or non-commercial license, use your license key found on "My Products" page.
STORM_ADMIN_USERNAMEAdmin username for accessing the Control Panel.
STORM_ADMIN_PASSWORDAdmin password for accessing the Control Panel. Change in production.
STORM_API_KEYREST API authentication key. Change in production.

Additional & Optional Environmental variables

VariableDefaultDescription
STORM_SERVER_NAMEStormServerThe name of your server — helps identify it when managing multiple instances.
STORM_GROUP_NAMEDefaultThe server group name — useful for identifying grouped or clustered instances.
STORM_HOST_NAMElocalhostHostname used by other cluster nodes to reach this instance.
STORM_RTMP_HOST*Host/IP for the RTMP VHost. Use * to listen on all available network interfaces.
STORM_RTMP_PORT1935Port for the RTMP VHost. In bridge mode this port must be explicitly exposed.
STORM_HTTP_HOST*Host/IP for the HTTP/WebSocket VHost. Use * to listen on all available network interfaces.
STORM_HTTP_PORT8080Port for the HTTP, WebSocket and Control Panel VHost. In bridge mode this port must be exposed.

Volumes

Volumes are shared (linked) directories between a Docker host/machine (left side) and a Docker container (right side). The right side after a colon should NOT BE MODIFIED.

VolumeDescription
DOCKER_HOST_PATH_FOR_CONFIGS:/srv/storm/configStorm configuration files (preferences.xml, log4j2.xml). If not mounted, default config is generated from env vars on first run.
DOCKER_HOST_PATH_FOR_LOGS:/srv/storm/logsStorm log files.
DOCKER_HOST_PATH_FOR_SSL:/etc/ssl/privateJKS certificate files required when running Storm in SSL mode.

For Windows-based operating systems paths should look as in this example:

Windows path example
Code iconyaml
- /c/Users/USERNAME/Documents/Storm/config:/srv/storm/config

Custom VHosts & Ports

By default, Storm starts with 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

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.

Creating Container

Let's create the container from our YML file now:

Create and start container
Code iconbash
docker-compose -f storm-docker-compose.yml up

To run the container in the background (detached mode):

Run in background
Code iconbash
docker-compose -f storm-docker-compose.yml up -d

Destroying Container

If we want to stop the container and destroy it, simply use:

Stop and remove container
Code iconbash
docker-compose -f storm-docker-compose.yml down

Java Memory Allocation

In order to increase memory available to the Java application within Docker, use these optional environmental variables:

VariableDescription
JAVA_XMS_VALUEMinimum heap memory available for the Java (Storm) application. Sample values: 2g – development, 8g – 250 viewers, 64g – 2800 viewers.
JAVA_XMX_VALUEMaximum heap memory available for the Java (Storm) application. Sample values: 4g – development, 16g – 250 viewers, 128g – 2800 viewers.

Memory Guidelines

Use CaseJAVA_XMS_VALUEJAVA_XMX_VALUE
Development / testing2g4g
~250 concurrent viewers (720p)8g16g
~2800 concurrent viewers (720p)64g128g
Blog
Support
About us
Patents
Term of use
Privacy policy
Contact
©2026 Storm Streaming Media. All Rights Reserved.