Installing Streamwell

For ease of deployment, Streamwell works with Docker. This lets you deploy or update a server on any hardware or virtual machine, in seconds. Docker can be installed on your platform of choice for free at www.docker.com.

Once Docker is installed and running, hit the command prompt or terminal and pull the latest available docker image or a particular version:

docker pull beamwell/streamwell:latest

OR

docker pull beamwell/streamwell:1.3.4

Then run it!

Linux:

docker run -d --name Streamwell --restart always -e SYSTEM_KEY="yourSecretKey" -e <ENVIRONMENT_VARIABLE="value", repeat with additional -e flags as needed> --network host -v ~/ssl:/etc/letsencrypt -v ~/rec:/rec -v ~/log:/log -v ~/files:/files beamwell/streamwell:latest

Windows and macOS:

docker run -d --name Streamwell --restart always -e SYSTEM_KEY="yourSecretKey" -e <ENVIRONMENT_VARIABLE="value", repeat with additional -e flags as needed> -p 80:80 -p 443:443 -p 1935:1935 -p 1936:1936 -p 3333:3333 -p 3334:3334 -p 8000:8000 -p 8081:8081 -p 9999:9999/udp -p 10010:10010 -p 10010:10010/udp -v ~/ssl:/etc/letsencrypt -v ~/rec:/rec -v ~/log:/log -v ~/files:/files beamwell/streamwell:latest

Testing (Minimum required commands, but nothing persists outside of the container):

docker run -d --name Streamwell --restart always --network host beamwell/streamwell:latest

What do these commands mean?

docker pull = downloads the application image and version specified (e.g. mycompany/myapp:version).

docker run -d --name Streamwell = runs a detached container (so we can close the terminal) and calls it Streamwell

--restart always = If the container crashes or is rebooted due to a power failure / system restart, it will automatically restart itself

-----

-e = Environment Variables. Here are the available options:

Pass a ‘SYSTEM_KEY’ and we’ll use that as the encryption key inside the application, to secure your links and stream keys. If you don’t pass a key in, one will be created for you and printed a single time in the startup logs (use docker container logs Streamwell to view those logs).

OPTIONAL: Pass a 'STREAMWELL_DOMAIN_NAME' and 'STREAMWELL_DOMAIN_EMAIL', and Streamwell will automatically configure HTTPS for your server, assuming it is reachable over the internet at that domain name. You might choose to omit these on the first run and configure them later in the web interface.

OPTIONAL: Pass a 'STREAMWELL_LICENSE_KEY' and 'STREAMWELL_LICENSE_NAME', and the server will automatically be licensed at startup rather than having to go into the web admin. Note this should only be used for licenses with expiry dates as permanent licensing requires a 'Server ID', which is generated when the container runs.

OPTIONAL: Pass environment variables to customize which ports are used for the various protocols: HTTP_PORT, HTTPS_PORT, WS_PORT, WSS_PORT, RTMP_PORT, RTMPS_PORT, HLS_PORT, API_PORT, SRT_PORT, DATA_PORT. The web server runs within the container on the standard ports 80 / 443, but you can pass HTTP(S)_PORT variables and map different ports to serve the web client interface if required, e.g. -p 8080:80 -p 8443:443 -e HTTP_PORT=8080 -e HTTPS_PORT=8443

OPTIONAL: Pass environment variable 'UPLOAD_MB_LIMIT' to customize the maximum file upload size in megabytes (e.g. UPLOAD_MB_LIMIT=512). The default is 256. The maximum is 1024.

-----

-p = Connect this port from the outside world to the container. On Linux hosts, you don’t need to do this. Instead you can use the argument --network host in your command. Or connect the ports manually if you prefer.

-v = Connect this folder from the computer running Docker to the container

The -v flag is particularly useful since that lets you house things like file uploads, recordings, logs, certificates and more on the host server rather than in the running container. So when you need to update the application it is as simple as replacing the running container with one run from an updated image. While not absolutely required, you should create these directories on your server for data persistence outside of the Docker container:

-v /your/path/to/SSL:/etc/letsencrypt

-v /your/path/to/LOGS:/log

-v /your/path/to/RECORDINGS:/rec

-v /your/path/to/FILES:/files

BEST PRACTICE: Once you figure out the run command for your system, tuck it away somewhere so you can easily re-deploy whenever you Update Streamwell

Last updated