A Dockerized LiveKit server bundled with FFmpeg compiled for NVIDIA NVENC/NVDEC, suitable for live streaming workloads that benefit from hardware-accelerated transcoding.
NVIDIA Driver (>= 535 recommended)
nvidia-smi # should print your GPU info
NVIDIA Container Toolkit
distribution=$(. /etc/os-release; echo $ID$VERSION_ID)
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
Verify
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
docker compose build
docker compose up -d
docker compose logs -f
# GPU visible?
docker compose exec livekit nvidia-smi
# NVENC encoders available?
docker compose exec livekit ffmpeg -hide_banner -encoders | grep nvenc
# Quick transcode test
docker compose exec livekit ffmpeg -f lavfi -i testsrc=duration=5:size=1280x720:rate=30 \
-c:v h264_nvenc -f null -
compute_75 (Turing — RTX 20-series, T4). Adjust --nvccflags in the FFmpeg build stage for your GPU:
compute_86compute_89compute_90network_mode: host is recommended for WebRTC. If you must use bridge networking, expose the full UDP range (50000-60000) which can be slow on Docker Desktop.keys section in livekit.yaml. Generate with:
docker compose exec livekit livekit-server generate-keys
rtc.external_ip in livekit.yaml to your server's public IP, or rely on use_external_ip: true if the server can detect it via STUN.Default dev credentials (CHANGE FOR PRODUCTION):
ws://YOUR_HOST:7880devkeysecretsecretsecretsecretsecretsecretGenerate a token:
docker compose exec livekit livekit-server create-token \
--api-key devkey --api-secret secretsecretsecretsecretsecretsecret \
--join --room test-room --identity test-user
Content type
Image
Digest
sha256:4522341d5…
Size
1.5 GB
Last updated
4 months ago
docker pull thaigps/livekit-gpu