The Livepeer Gateway was previously called the Livepeer Broadcaster. Some CLI
flags and log output still reference the Broadcaster name.
Prerequisites
Docker Engine 20.10 or later is required. If Docker is not installed or needs updating, follow the official Docker Engine installation guide for your platform.Gateway nodes do not require NVIDIA GPU drivers as a baseline prerequisite.
NVIDIA drivers apply to orchestrator or other GPU compute workloads.
Pull the Livepeer Docker Image
Fetch the latest from Docker Hub:Configure the Gateway
Create a working directory and adocker-compose.yml file. Choose the configuration that matches your deployment target:
- On-Chain (Production)
- Development (Off-Chain)
On-chain mode connects the gateway to the Livepeer network on Arbitrum. An
Ethereum wallet and Arbitrum One RPC endpoint are required before starting.
See [On-Chain Setup Requirements](/v2/gateways/run-a-gateway/requirements/on-chain setup/on-chain)
for prerequisites.Replace
docker-compose.yml
<YOUR_ARB_RPC_URL> with your Arbitrum One RPC endpoint (e.g.
from Alchemy or Infura).After creating this file, complete the Create Livepeer Gateway ETH Account
step below before starting the gateway.Create Livepeer Gateway ETH Account
This section applies to the On-Chain configuration only. Skip this step
if using development (off-chain) mode.
Start the Gateway
Start the gateway container in the background:On-chain mode only: The gateway must be funded with ETH before
orchestrators will accept transcoding jobs. If streams produce no output,
check that your gateway account has sufficient ETH. See
[Fund your gateway](/v2/gateways/run-a-gateway/requirements/on-chain setup/fund-gateway).
Stream Live Video
The gateway accepts RTMP ingest on port1935. Transcoded HLS output is
available on port 8935 at /stream/<manifest-id>.m3u8.
- FFmpeg
- OBS Studio
Push a file or live source to the gateway using FFmpeg:Replace
input.mp4 with a local file or a live source URL. The path
segment after /live/ (stream in the example above) becomes the manifest
ID used to retrieve the HLS output.The transcoded HLS output will be available at:Stream Authentication
By default, the gateway accepts any incoming RTMP stream. To restrict access, use the-authWebhookUrl flag to point the gateway at an authentication
endpoint you control.
When an incoming stream arrives, the gateway sends a POST request to the
webhook URL with the stream URL as a JSON payload:
200 to allow the stream, or any other status
code to reject it.
Add the flag to your docker-compose.yml command block:
stream in rtmp://localhost/live/stream)
is included in the webhook payload URL. Your webhook implementation can use this
value to authenticate incoming callers - for example, by checking it against a
list of valid stream keys.
For full webhook response options including custom manifestID, streamKey
override, and per-stream transcoding profiles, see the
RTMP Webhook Authentication reference.
Next Step: Configure the Gateway
View all available configuration options for the gateway