Oracle Cloud
This section covers deploying Live Transcoder on Oracle Cloud Infrastructure (OCI).
Launch host instance
We provide Live Transcoder as a Docker container downloadable from DockerHub. Therefore you need to have a host instance to run the Docker container on.
Live Transcoder needs an Nvidia GPU to work, so you need to use an instance with Nvidia GPU. In Oracle Cloud, we recommend GPU2 instance shapes with Nvidia Tesla P100 GPUs as they provide a good price/performance ratio, specifically the VM.GPU2.1 shape. We do not support Ada or Hopper architectures yet.
Select the region
We recommend selecting the region closest to you for the lowest latency. However, GPU instance prices and availability vary between regions, so you may check other regions as well.
Select the right instance size
- We recommend you start with VM.GPU2.1 (12 OCPUs, single Nvidia Tesla P100) and change the instance shape if needed.
- Generally, you'll need two OCPUs per 1080p h264 4:2:0 8bit stream and sixteen OCPUs per 1080p h264 4:2:2 10bit stream, but this may vary with the resolution/quality/codec used.
- We strongly recommend you increase the instance size (vCPUs) if the overall CPU utilization exceeds 80%.
- Our support can help you choose the right instance size.
GPU instance limit
- Oracle Cloud limits how many GPU instances a user can run.
Check your current limits
- You can check your current limit for your region on the Limits page. You need to specify the AD (availability domain) in Scope to see the GPU limits. Search for
GPUs for GPU2 based VM and BM Instances(VM.GPU2.1, therefore GPU2). Your current quota is theService Limitcolumn.

- The quota value says the maximum number of instances of this shape you can run in total.
Quota increase request
- You can request the quota increase, but Oracle needs to apply your request.
- These limits are applied per region and AD (availability domain), so you must request the quota increase in all regions/AD you plan to run Live Transcoder.
- If you are unsure what value request, ask our support, they can help you choose the best value.
- When your quota is increased, you can launch the host instance.
Firewall rules
By default, all network ports except SSH are closed for incoming traffic by the Oracle Cloud firewall feature called "Network Security Groups" and must be enabled manually to receive traffic. Live Transcoder needs these ports opened:
- SSH (TCP port 22) - for SSH
- HTTP (TCP port 80) - needed for access to web UI and HLS output
- HTTPS (TCP port 443) - needed for secure access to web UI and HLS output
- MPEG-TS over RTP/UDP/SRT (UDP ports) - add custom ports for your MPEG-TS streams
- NDI (TCP&UDP) - needed for NDI to work, the easiest way is to open port range 5353-7999 for both TCP & UDP [NDI docs]
- RTMP input (TCP port 1935) - needed for RTMP server to listen on this port
Create a new security group
Network Security Groups belong to VCN (Virtual Cloud Network) level. You can create a new one there. You'll attach the security group to your instance later during the creation of the instance.

We recommend naming the security group live-transcoder-group. You can reuse it later (or modify it) for another Live Transcoder instance.
Create the compute instance
Head to the Instances page and create a new instance.
Images and shapes
Use the Oracle Linux 8 image. Select your preferred GPU shape.

Networking
In Advanced Options, enable the use of Network Security Groups and select the one you've previously created.
SSH keys
- a.k.a. SSH private key
- It's used to ssh to the instance terminal.
- Oracle cloud won't show you the key again.
- Download it and keep it safe.
Boot volume (storage)
Live Transcoder itself needs 100GiB of storage.
If you plan to use HLS outputs heavily, increase the value by additional calculated storage.

When using an instance with a smaller storage capacity, it is important to note that a significant portion of the free space is used for storing log messages in the journal. These log messages are crucial for diagnostics. Insufficient space for the journal can limit the ability to diagnose issues with the instance effectively.
To manage disk space efficiently, ensure you set the correct size for SystemKeepFree= and RuntimeKeepFree= in /etc/systemd/journald.conf.
Create it!
Prepare host OS
SSH to the host OS
You can find the instance's public IP address in the list of your instances.

Oracle Linux's default user is opc, use the following command to ssh to your instance (to the host OS). On Linux and macOS, you'll first need to limit the key file permissions using the chmod command.
chmod 400 path/to/your-private-key.pem
ssh -i path/to/your-private-key.pem opc@INSTANCE_IP
Disable firewalld
Oracle cloud instances are protected by the Network Security Groups (the cloud firewall feature), so you can stop and disable the in-OS firewall.
sudo systemctl disable firewalld --now
Update the OS
This takes several minutes.
sudo dnf update -y
Disable nouveau driver
nouveau, the open-source driver for Nvidia GPUs is usually pre-loaded. It must be disabled to install Nvidia's own driver.
sudo modprobe -r nouveau
Prevent loading of the nouveau kernel module at boot.
echo "blacklist nouveau" | sudo tee /etc/modprobe.d/blacklist.conf
Install Nvidia driver
Prerequisites
sudo dnf --enablerepo=ol8_developer_EPEL -y install dkms
sudo dnf -y config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo
Install the driver
sudo dnf module -y install nvidia-driver:515-dkms
sudo modprobe nvidia
Check Nvidia driver works
The following command should print a meaningful output.
nvidia-smi
Install Docker CE
Installation
Follow the Setting up Docker on CentOS 7/8 chapter from the official Nvidia docs (Centos 8 variant)
Use docker command without sudo
This allows running the docker command as a non-root user.
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
Install NVIDIA Container Toolkit
Follow the Setting up NVIDIA Container Toolkit chapter from the official Nvidia docs (Centos 8 variant). You need to use the following command for setting up the Nvidia Container toolkit repository instead of the official one (Oracle Linux 8 isn't supported by their command).
curl -s -L https://nvidia.github.io/libnvidia-container/centos8/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
docker-compose installation
We use the docker-compose tool for making it easier to launch our Docker container. Use the following command to install the docker-compose tool.
sudo curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Next, check that the docker-compose tool is successfully installed. The following command should return meaningful output.
docker-compose version
Disable mDNS on the host
The mDNS service mustn't be active in the host OS for NDI discovery to work. If present, this command removes it from the host OS:
sudo yum list installed avahi
sudo yum remove avahi
Increase max UDP kernel buffer size
To receive and send streams with overall stream bitrate of 21mbps+, Live Transcoder needs to increase the UDP kernel buffer size. However, the default maximum size is too low so it needs to be increased.
SYSCTL_CONF="/etc/sysctl.d/10-udp-buffer-size.conf"
sudo sh -c "echo '#kernel send a receive windows buffer sizes' > $SYSCTL_CONF"
sudo sh -c "echo 'net.core.rmem_max=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.wmem_max=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.rmem_default=262144000' >> $SYSCTL_CONF"
sudo sh -c "echo 'net.core.wmem_default=262144000' >> $SYSCTL_CONF"
Now load the updated config file.
sudo sysctl -p $SYSCTL_CONF
Increase txqueuelen for network interfaces
To stream out high-bitrate codecs (e.g., JPEG2000 or JPEG-XS), also txqueuelen parameter should be increased for the respective network interface(s). Below, we set the parameter for all available Ethernet network interfaces (by using KERNEL=="e*"):
sudo bash -c 'cat > /etc/udev/rules.d/80-txqueuelen.rules' << EOF
SUBSYSTEM=="net", ACTION=="add|change", KERNEL=="e*", ATTR{tx_queue_len}="10000"
EOF
To apply the changes immediately, run:
sudo udevadm control --reload-rules && sudo udevadm trigger