Getting Started with Docker
Last updated
Last updated
To get started with OvenMediaEngine Enterprise using a Docker image, follow the installation steps.
OvenMediaEngine Enterprise is installed in the following path within the Docker container.
OvenMediaEngine
/opt/ovenmediaengine/bin
Web Console (OvenStudio)
/opt/ovenmediaengine/ovenstudio
Record Delivery
/opt/ovenmediaengine/delivery
Logs
/var/log/ovenmediaengine
Before installing the OvenMediaEngine Enterprise Docker image, you must first login to the container registry. A valid License Key is required for the login, and this step only needs to be performed once during the initial installation.
VALID_LICENSE_KEY="Your.License.Key"
docker login packages.buildkite.com/ovenmediaengine/docker -u buildkite -p $VALID_LICENSE_KEY
To install the latest version, run:
docker pull packages.buildkite.com/ovenmediaengine/docker/ovenmediaengine-enterprise
docker tag packages.buildkite.com/ovenmediaengine/docker/ovenmediaengine-enterprise ovenmediaengine-enterprise
After the installation is complete, you can run OvenMediaEngine Enterprise using the following command:
docker run -d --name=ovenmediaengine \
-e OME_LICENSE_KEY=<Your.License.Key> \
-e OME_HOST_IP=<Your.HOST.IP.Address> \
-p 1935:1935 -p 8080:8080 -p 9999:9999/udp -p 9000:9000 -p 3333:3333 -p 3478:3478 -p 10000-10009:10000-10009/udp \
ovenmediaengine-enterprise
When running OvenMediaEngine Enterprise, you need to set the following two environment variables:
OME_LICENSE_KEY
: If an invalid License Key is entered, the container will not run.
OME_HOST_IP
: Setting the IP of the host server ensures smooth streaming and Web Console usage.
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2269946c053e ovenmediaengine-enterprise "/opt/ovenmediaengin…" 5 minutes ago Up 5 minutes 0.0.0.0:1935->1935/tcp, [::]:1935->1935/tcp, 80/tcp, 0.0.0.0:3333->3333/tcp, [::]:3333->3333/tcp, 3334/tcp, 0.0.0.0:3478->3478/tcp, [::]:3478->3478/tcp, 5000/tcp, 0.0.0.0:8080->8080/tcp, [::]:8080->8080/tcp, 4000-4005/udp, 8090/tcp, 0.0.0.0:9000->9000/tcp, [::]:9000->9000/tcp, 10010/udp, 0.0.0.0:9999-10009->9999-10009/udp, [::]:9999-10009->9999-10009/udp ovenmediaengine
docker stop ovenmediaengine
docker rm ovenmediaengine
Any changes to the configurations within a running container or log data being recorded will be deleted when the container is stopped and removed. You can use Bind mounts to persistently save the configurations and data inside the container.
export OME_DOCKER_HOME=/opt/ovenmediaengine
sudo mkdir -p $OME_DOCKER_HOME/conf
sudo mkdir -p $OME_DOCKER_HOME/logs
sudo mkdir -p $OME_DOCKER_HOME/ovenstudio/data
sudo mkdir -p $OME_DOCKER_HOME/delivery/conf
# Set permissions for the created directory if necessary.
sudo chgrp -R docker $OME_DOCKER_HOME
sudo chmod -R 775 $OME_DOCKER_HOME
# If you want to use OME_DOCKER_HOME permanently, add the following line to the ~/.profile file for bash, for other shells, you can do it accordingly.
echo -e 'export OME_DOCKER_HOME=/opt/ovenmediaengine' >> ~/.profile
source ~/.profile
After running the Docker container, copy the default configurations of OvenMediaEngine Enterprise using the following command:
# OvenMediaEngine files
docker cp ovenmediaengine:/opt/ovenmediaengine/bin/origin_conf $OME_DOCKER_HOME/
# Web Console(OvenStudio) files
docker cp ovenmediaengine:/opt/ovenmediaengine/ovenstudio/system.env $OME_DOCKER_HOME/ovenstudio/
docker cp ovenmediaengine:/opt/ovenmediaengine/ovenstudio/data $OME_DOCKER_HOME/ovenstudio/
# Delivery files
docker cp ovenmediaengine:/opt/ovenmediaengine/delivery/delivery.db $OME_DOCKER_HOME/delivery/
docker cp ovenmediaengine:/opt/ovenmediaengine/delivery/conf $OME_DOCKER_HOME/delivery/
docker run -d --name=ovenmediaengine \
-e OME_LICENSE_KEY=<Your.License.Key> \
-e OME_HOST_IP=<Your.HOST.IP.Address> \
-v $OME_DOCKER_HOME/origin_conf:/opt/ovenmediaengine/bin/origin_conf \
-v $OME_DOCKER_HOME/logs:/var/log/ovenmediaengine \
-v $OME_DOCKER_HOME/ovenstudio/system.env:/opt/ovenmediaengine/ovenstudio/system.env \
-v $OME_DOCKER_HOME/ovenstudio/data:/opt/ovenmediaengine/ovenstudio/data \
-v $OME_DOCKER_HOME/delivery/delivery.db:/opt/ovenmediaengine/delivery/delivery.db \
-v $OME_DOCKER_HOME/delivery/conf:/opt/ovenmediaengine/delivery/conf \
-p 1935:1935 -p 8080:8080 -p 9999:9999/udp -p 9000:9000 -p 3333:3333 -p 3478:3478 -p 10000-10009:10000-10009/udp \
ovenmediaengine-enterprise
You can utilize Docker Compose to easily define and efficiently deploy containers. For detailed instructions on how to use Docker Compose, refer to this link.
docker-compose.yaml
fileservices:
ovenmediaengine:
image: ovenmediaengine-enterprise
container_name: ovenmediaengine
restart: unless-stopped
environment:
- OME_LICENSE_KEY=<Your.License.Key>
- OME_HOST_IP=<Your.HOST.IP.Address>
ports:
- 1935:1935
- 8080:8080
- 9999:9999/udp
- 9000:9000
- 3333:3333
- 3478:3478
- 10000-10009:10000-10009/udp
After the installation is complete, you can run OvenMediaEngine Enterprise using the following command:
docker compose up -d
[+] Running 2/2
✔ Network root_default Created 0.1s
✔ Container ovenmediaengine Started 0.8s
When running OvenMediaEngine Enterprise, you need to set the following two environment variables:
OME_LICENSE_KEY
: If an invalid License Key is entered, the container will not run.
OME_HOST_IP
: Setting the IP of the host server ensures smooth streaming and Web Console usage.
docker compose down
[+] Running 2/2
✔ Container ovenmediaengine Removed 1.4s
✔ Network root_default Removed 0.2s
Any changes to the configurations within a running container or log data being recorded will be deleted when the container is stopped and removed. You can use Bind mounts to persistently save the configurations and data inside the container.
export OME_DOCKER_HOME=/opt/ovenmediaengine
sudo mkdir -p $OME_DOCKER_HOME/conf
sudo mkdir -p $OME_DOCKER_HOME/logs
sudo mkdir -p $OME_DOCKER_HOME/ovenstudio/data
sudo mkdir -p $OME_DOCKER_HOME/delivery/conf
# Set permissions for the created directory if necessary.
sudo chgrp -R docker $OME_DOCKER_HOME
sudo chmod -R 775 $OME_DOCKER_HOME
# If you want to use OME_DOCKER_HOME permanently, add the following line to the ~/.profile file for bash, for other shells, you can do it accordingly.
echo -e 'export OME_DOCKER_HOME=/opt/ovenmediaengine' >> ~/.profile
source ~/.profile
After running the Docker container, copy the default configurations of OvenMediaEngine Enterprise using the following command:
# OvenMediaEngine files
docker cp ovenmediaengine:/opt/ovenmediaengine/bin/origin_conf $OME_DOCKER_HOME/
# Web Console(OvenStudio) files
docker cp ovenmediaengine:/opt/ovenmediaengine/ovenstudio/system.env $OME_DOCKER_HOME/ovenstudio/
docker cp ovenmediaengine:/opt/ovenmediaengine/ovenstudio/data $OME_DOCKER_HOME/ovenstudio/
# Delivery files
docker cp ovenmediaengine:/opt/ovenmediaengine/delivery/delivery.db $OME_DOCKER_HOME/delivery/
docker cp ovenmediaengine:/opt/ovenmediaengine/delivery/conf $OME_DOCKER_HOME/delivery/
services:
ovenmediaengine:
image: ovenmediaengine-enterprise
container_name: ovenmediaengine
restart: unless-stopped
environment:
- OME_LICENSE_KEY=<Your.License.Key>
- OME_HOST_IP=<Your.HOST.IP.Address>
ports:
- 1935:1935
- 8080:8080
- 9999:9999/udp
- 9000:9000
- 3333:3333
- 3478:3478
- 10000-10009:10000-10009/udp
volumes:
- $OME_DOCKER_HOME/origin_conf:/opt/ovenmediaengine/bin/origin_conf
- $OME_DOCKER_HOME/logs:/var/log/ovenmediaengine
- $OME_DOCKER_HOME/ovenstudio/system.env:/opt/ovenmediaengine/ovenstudio/system.env
- $OME_DOCKER_HOME/ovenstudio/data:/opt/ovenmediaengine/ovenstudio/data
- $OME_DOCKER_HOME/delivery/delivery.db:/opt/ovenmediaengine/delivery/delivery.db
- $OME_DOCKER_HOME/delivery/conf:/opt/ovenmediaengine/delivery/conf
docker compose up -d
[+] Running 2/2
✔ Network root_default Created 0.1s
✔ Container ovenmediaengine Started 0.8s
The default configuration uses the following ports, so you need to open it in your firewall settings:
1935/TCP
RTMP Input
9999/UDP
SRT Input
4000/UDP
MPEG-2 TS Input
9000/TCP
Origin Server (OVT)
3333/TCP
3334/TLS
Low Latency HLS (LLHLS) Streaming
* Streaming over non-TLS is not allowed with modern browsers.
3333/TCP
3334/TLS
WebRTC Signaling (both ingest and streaming)
3478/TCP
WebRTC TCP relay (TURN Server, both ingest and streaming)
10000 - 10009/UDP
8080/TCP
Running Web Console
WebRTC Ice candidate (both ingest and streaming)
20080/TCP
20081/TLS
Thumbnail Extraction