Sign inSign up

ddvtech/mistserver

By ddvtech

Updated about 2 months ago

MistServer: multi-standard media streaming server

Image
9

100K+

ddvtech/mistserver repository overview

What is MistServer

MistServer is an open source multimedia multi-standard streaming server. More information at: mistserver.org

For online documentation visit: docs.mistserver.org

For a more up to date guide on Docker and Docker Desktop visit our Docker installation guide

This repository is a from scratch repository containing only the MistServer binaries and their dependencies, allowing it to be a very small image.

Other available images

ImageDescription
mistserver - (You are here)A Docker image containing only MistServer binaries, nothing else.
mistserver_alpine_minimalA Docker image with MistServer running on a minimal Alpine image

Suggested use for running MistServer

docker run --detach --mount type=bind,source=/PATH/TO/CONFIG.JSON,destination=/config.json --mount type=bind,source=/FOLDER/WITH/VIDEOFILES,destination=/video --shm-size=4g --network=host ddvtech/mistserver

By default Docker does not allocate a lot of shared memory (64m by default) which MistServer relies on heavily. We recommend extending the shared memory of the docker as well. This can be done through: --shm-size=number

number must be greater than 0. Unit is optional and can be b (bytes), k (kilobytes), m(megabytes), or g (gigabytes). If you omit the unit, the system uses bytes. If you omit the size entirely, the system uses 64m. We recommend using 95% of RAM if your server is mostly dedicated to MistServer. If MistServer needs to share the RAM reserve at least a good portion of it. For a first run we recommend 4GB as it should be more than plenty for all first tests.

Windows & Mac specific

We recommend port publishing when using Docker images with Windows and Mac, --network=host is not available on these systems. MistServer's default ports are:

PortTypeDescription
4242TCPMistServer interface (recommendation to keep private)
8080TCPHTTP
1935TCPRTMP
5554TCPRTSP over TCP
4200TCPDTSC transport between MistServer instances
8889UDPHaivision SRT default port for MistServer
18203UDPDedicated WebRTC UDP port

Should you wish to change/add ports do so accordingly. For example 443 for HTTPS.

Limitations

The ephemeral range will be unavailable for use, which means protocols that rely on this such as RTSP over UDP will be unavailable. WebRTC would be affected however a dedicated UDP port (18203) is instead used.

Option explanation

--network=host This setting makes the Docker use the server network instead of creating a separate one for the docker image. Running on host network is recommended for two reasons: First of all, as a media server, MistServer sends and receives a lot of data. The extra layer of indirection caused by running on non-host network has a measurable performance impact on data transfer. Secondly, some protocols will use arbitrary ports from the ephemeral range, and forwarding port ranges to a docker image is not easy to do in a reliable way. Running on host network makes this port forwarding unnecessary and simplifies configuration as well.

--publish HOST_PORT:CONTAINER_PORT This is used as alternative for the --network=host option. This will open access for others to access MistServer running on the HOST. You can bind UDP ports by adding a /udp to the CONTAINER_PORT. For ease of use we recommend setting the same ports on both ends, but that is by no means necessary. Keep in mind that the HOST_PORT is what your users will connect to and the CONTAINER_PORT is where MistServer will be listening.

--mount type=bind,source=/PATH/TO/CONFIG.JSON,destination=/config.json This setting binds a MistServer configuration file from the server to the docker. This allows you to “keep” the configurations in between several docker images.

Note that the configuration file on the host needs to exist before the Docker image tries to connect to it, it cannot be created by running the Docker command. If this is the first time booting MistServer simply create it through touch /PATH/TO/CONFIG.JSON or make sure there is a file through any other means. The file itself can be empty when you start.

--mount type=bind,source=/FOLDER/WITH/VIDEOFILES,destination=/video This setting binds a folder on the host as /video within the Docker. Allowing you easy access by using /video as source to reach the files within. This only makes sense if you have a folder with video assets - for a system that only handles live streams you may not need to set this at all.

Usage

Connect to http://localhost:4242 in your browser to complete setup through the web interface (or change localhost to whichever address your container was assigned, if not using host networking)

Tag summary

Content type

Image

Digest

sha256:7ec0d47ca

Size

20.6 MB

Last updated

about 2 months ago

docker pull ddvtech/mistserver