LiveKit: self-host
LiveKit on a VPS of your own — fixed monthly cost. Example with Vultr.
Already set up LiveKit Cloud? You can skip this page
If you went through LiveKit: Cloud — for the demo, or for regular use within its limits — you are done with voice. Skip this page.
Read on only if you actually want to run the service yourself, with no limits.
Any VPS with a public IP works. The examples use Vultr; the steps are the same anywhere else.
1. Provision the VPS
Create an account at Vultr.
Deploy New Server → Cloud Compute → High Frequency plan (from ~US$6/month: NVMe, dedicated CPU, 2TB of bandwidth included).
Pick the region closest to your community.
Operating system: Ubuntu 24.04.
2. Point a domain at it
LiveKit needs HTTPS/WSS — without a valid TLS certificate the browser blocks the WebRTC connection.
Create an A DNS record pointing a subdomain (e.g.
livekit.yourcommunity.com) at the VPS IP, and confirm it propagated:
dig +short livekit.yourcommunity.comIt should print the VPS IP. If it prints nothing, DNS has not propagated yet — wait and try again before moving on.
3. Install LiveKit
Connect to the VPS. The ssh command is the same on macOS and Windows — it
ships with both:
ssh root@YOUR-VPS-IPThe next command runs inside the VPS, which is Ubuntu — so it is the same regardless of the computer you connected from:
curl -sSL https://get.livekit.io | bashThe official installer sets up Docker Compose, Caddy (automatic TLS) and the
API key/secret. It asks for the domain from step 2 and, at the end, prints
LIVEKIT_API_KEY, LIVEKIT_API_SECRET and the URL (wss://YOUR-DOMAIN).
Save all three.
Reference: docs.livekit.io/home/self-hosting/vm.
4. Open the ports
The installer already opens what is needed on the VPS:
- 443/TCP — signalling and TLS
- UDP 50000-60000 — media (the audio/video itself)
If Vultr has an edge firewall enabled in the dashboard (separate from the VPS's own firewall), open the same ranges there too. That is the most common cause of "it connects but nobody hears anyone".
Variables from this step
| Variable | Value |
|---|---|
LIVEKIT_URL | wss://YOUR-DOMAIN |
LIVEKIT_API_KEY | Generated by the installer |
LIVEKIT_API_SECRET | Generated by the installer |
Optional: infrastructure metrics
With your own VPS, the admin panel can show CPU, RAM, disk and bandwidth in
real time. The steps are in infra/vps-metrics/README.md in the app's repo:
two scripts installed via cron on the VPS, plus
SERVER_METRICS_INGEST_SECRET, VPS_SSH_HOST, VPS_SSH_USER and
VPS_SSH_PRIVATE_KEY on the Next.js service. Without it, the "Infra" tab does
not appear.