Deployment guide

Restreamer

Videos

Overview: Restreamer Live Streaming Server on Ubuntu 24.04 on Azure: overview (watch on YouTube)

Launch and log in: Restreamer Live Streaming Server on Ubuntu 24.04 on Azure: launch and log in (watch on YouTube)

Deep Dive: Restreamer Live Streaming Server on Ubuntu 24.04 on Azure: deep dive (watch on YouTube)

Overview

datarhei Restreamer is an open source, self-hosted live streaming server. You ingest a live feed over RTMP or SRT (for example from OBS Studio or a hardware encoder), then restream and publish it to YouTube Live, Twitch, Facebook, Vimeo and other RTMP, SRT or HLS destinations, all from a web interface with no ongoing license cost.

This SecureAnyCloud image installs Docker CE from the official Docker repository and runs the single official datarhei/restreamer container, which bundles the datarhei Core, FFmpeg and the web UI. The container is bound to the loopback address 127.0.0.1:8080 behind an nginx reverse proxy on port 80. Restreamer's own login gates the web UI and the datarhei Core API, and a unique admin password is generated on the first boot of every VM. Restreamer's configuration, database and recordings live on a dedicated Azure data disk.

What you get:

  • datarhei Restreamer running as a container managed by Docker, pinned to datarhei/restreamer:2.12.0
  • Docker CE preinstalled from the official Docker apt repository
  • The Restreamer web UI and datarhei Core API on :80, fronted by nginx
  • A unique admin password generated on first boot and recorded in a root-only file
  • RTMP (1935), RTMPS (1936) and SRT (6000/udp) ingest ports published for external encoders
  • A dedicated Azure data disk at /var/lib/restreamer holding the configuration, database and recordings
  • docker.service and nginx.service as systemd units, enabled and active
  • An unauthenticated /healthz endpoint for Azure Load Balancer health probes
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key pair, and a VNet with a subnet in the target region. Standard_B2s (2 vCPU / 4 GiB RAM) is a reasonable starting size for passthrough restreaming. If you plan to transcode your live feed with FFmpeg on the server, choose a larger CPU-optimized size.

Configure the network security group (NSG) to allow inbound 22/tcp from your management network and 80/tcp for the web UI. Also allow the ingest ports your encoder uses: 1935/tcp for RTMP, 1936/tcp for RTMPS and 6000/udp for SRT.

Restreamer serves plain HTTP on port 80. For production, terminate TLS in front of it with your own domain and consider adding 443/tcp (see Maintenance).

Step 1 - Deploy from the Azure Marketplace

Sign in to the Azure Portal, choose Create a resource, search the Marketplace for Restreamer by SecureAnyCloud, and select Create.

On the Basics tab, pick your subscription, resource group, region and size. Under Administrator account, choose SSH public key and paste your key. Under Inbound port rules, allow SSH (22) and HTTP (80). You add the ingest ports (1935, 1936, 6000/udp) after deployment.

Review the dedicated data disk on the Disks tab, then select Review + create and Create.

Step 2 - Deploy from the Azure CLI

# Accept the Marketplace terms once per subscription (required before the first CLI deploy)
az vm image terms accept --urn sac1647283583153:restreamer-ubuntu-24-04:default:latest
az vm create \
  --resource-group <your-rg> \
  --name restreamer \
  --image sac1647283583153:restreamer-ubuntu-24-04:default:latest \
  --size Standard_B2s \
  --admin-username azureuser \
  --ssh-key-values ~/.ssh/id_ed25519.pub \
  --vnet-name <your-vnet> --subnet <your-subnet> \
  --public-ip-sku Standard
az vm open-port --resource-group <your-rg> --name restreamer --port 80 --priority 1010
az vm open-port --resource-group <your-rg> --name restreamer --port 1935 --priority 1020
az vm open-port --resource-group <your-rg> --name restreamer --port 6000 --priority 1030

Step 3 - Connect to your VM

ssh azureuser@<vm-public-ip>

Step 4 - Confirm the services are running

systemctl is-active docker.service nginx.service
sudo docker ps --filter name=restreamer --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'

Both systemd units report active, and Docker shows the restreamer container as Up. Docker manages the container, which is bound to the loopback address 127.0.0.1:8080. nginx fronts it on port 80.

The RTMP, RTMPS and SRT ingest ports are published on all interfaces for your encoder.

Step 5 - Retrieve your login credentials

Restreamer generates a unique admin password on the first boot of your VM and writes it to a root-only file. Read it with:

sudo cat /root/restreamer-credentials.txt

This file contains RESTREAMER_URL, RESTREAMER_USERNAME (which is admin) and RESTREAMER_PASSWORD. This password is the login for both the web UI and the datarhei Core API. Store it somewhere safe.

Step 6 - Confirm the health endpoint

Call the unauthenticated health endpoint that nginx serves for load balancers and probes:

curl -s http://localhost/healthz

The endpoint returns ok. It never requires authentication, so you can use it for an Azure Load Balancer health probe.

Step 7 - Confirm the login password is enforced

The admin password is set on first boot, so the upstream default credential (admin / datarhei) is rejected. Nobody can reach your streams with a known password. The datarhei Core login API returns 401 for the default:

curl -s -o /dev/null -w '%{http_code}\n' -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"datarhei"}' http://127.0.0.1/api/login

The command prints 401. Only the per-VM password from Step 5 authenticates and returns a JWT access_token:

curl -s -H 'Content-Type: application/json' \
  -d '{"username":"admin","password":"<RESTREAMER_PASSWORD>"}' http://127.0.0.1/api/login

The response body contains an access_token, confirming the per-VM admin login works end to end.

Step 8 - Sign in to the web UI

Browse to http://<vm-public-ip>/. On the login screen, enter admin and the password from Step 5, then select LOGIN. The login authenticates against the datarhei Core API with the same per-VM credentials.

Step 9 - Complete the welcome and video setup

On first sign-in, Restreamer shows a short welcome screen. Select NEXT: VIDEO SETUP to begin configuring your live source.

The Video setup wizard asks where your live feed comes from. The options are a Network source (such as a network camera or an RTSP or HLS URL), the built-in RTMP server (for example OBS streaming into Restreamer), the built-in SRT server, or a Hardware device. Pick the option that matches your encoder.

Step 10 - Enable the RTMP ingest server for OBS

Choose RTMP server and enable it to receive a stream from OBS Studio or any RTMP encoder. Restreamer shows the RTMP settings: the listen port (1935), the RTMPS port (1936), the publishing App path and an optional Token stream key.

In OBS, set the server to rtmp://<vm-public-ip>:1935<app> and the stream key to your token, then start streaming. For SRT encoders, use srt://<vm-public-ip>:6000 with the streamid shown in the UI.

Once a source is live, add publication services in the Restreamer UI to restream it to YouTube Live, Twitch, Facebook, Vimeo, a generic RTMP or SRT target, or an HLS output for embedding on your own website.

Step 11 - Confirm your data lives on the dedicated disk

Restreamer's configuration, database and recordings are stored under /var/lib/restreamer on the dedicated Azure data disk. The data survives OS changes, and you can resize the disk independently. Confirm the mount:

findmnt /var/lib/restreamer

The mount is a separate Azure data disk that is captured into the image and re-provisioned on every VM.

Maintenance

  • Admin password. The Restreamer admin login is generated on first boot and stored in /var/lib/restreamer/config. You can change it in the Restreamer UI under Settings, then Authorization, or by recreating the container with a new CORE_API_AUTH_PASSWORD value against a fresh config.
  • Publication services. Add and manage restreaming targets (YouTube, Twitch, Facebook, Vimeo, generic RTMP or SRT, HLS) inside the Restreamer UI. Their configuration is stored in the VM's own database on the data disk.
  • Recordings and data. Restreamer's database and any recordings live under /var/lib/restreamer on the dedicated Azure data disk. Back up this path to preserve your configuration and content.
  • Upgrades. Restreamer runs as the restreamer container from the pinned datarhei/restreamer:2.12.0. To move to a newer release, run sudo docker pull datarhei/restreamer:<new-tag>, then recreate the container with the same port and volume bindings (-p 127.0.0.1:8080:8080 -p 1935:1935 -p 1936:1936 -p 6000:6000/udp -v /var/lib/restreamer/config:/core/config -v /var/lib/restreamer/data:/core/data).
  • TLS. Restreamer serves plain HTTP on port 80. For production, front it with TLS (for example certbot with your own domain).
  • Security patches. Unattended upgrades stay enabled, so the OS keeps receiving security updates automatically.
  • License. Restreamer is Apache 2.0 licensed. This image ships the open source Restreamer. The SecureAnyCloud charge covers packaging, security patching, image maintenance and support.

Support

SecureAnyCloud images come with 24/7 support. For questions about this Restreamer image or help with your deployment, contact sales@secureanycloud.com.

Deploy on Azure

Launch Restreamer on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure