Jitsi Meet is an open-source video conferencing platform: browser-based meetings without accounts, screen sharing, chat, recordings (with Jibri) and mobile apps. Self-hosting gives you private meetings on your own infrastructure, with no time limits and no per-user licensing.

How Jitsi works

  • Jitsi Meet: the web app.
  • Prosody: the XMPP server for signalling and authentication.
  • Jicofo: the conference focus, which manages participants.
  • Jitsi Videobridge (JVB): an SFU (selective forwarding unit) that forwards each participant’s video streams to the others. It doesn’t mix them, so CPU stays moderate, while bandwidth is the main cost.

Sizing

Usage VPS
Small meetings (≤ 10 people), occasional use 4 vCPU, 8 GB RAM
Several concurrent meetings / 20–50 people 8 vCPU, 16 GB RAM, plus good bandwidth
Larger Multiple videobridges (scaling out)

Bandwidth: each participant sends about 1–2.5 Mbit/s up, and receives several streams. The server forwards streams to everyone, so outbound traffic grows quickly. A 10-person meeting can use tens of Mbit/s on the server. Check your plan’s port speed and monthly transfer, and choose a location close to participants. See latency vs bandwidth and choosing a VPS location.

1. Prerequisites

  • Ubuntu LTS (Debian also works), on a fresh server.
  • A domain: meet.example.com → the server IP.
  • Hostname set: sudo hostnamectl set-hostname meet.example.com, and /etc/hosts contains the public IP or 127.0.0.1 mapped to meet.example.com.

2. Firewall

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp      # media (JVB)
sudo ufw allow 3478/udp       # STUN/TURN (if using coturn on the same server)
sudo ufw allow 5349/tcp       # TURN over TLS (fallback)

UDP 10000 is essential. Without it, media falls back or fails. See UFW.

3. Install from the Jitsi repository

curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jitsi-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
# Prosody repository (needed on some releases) – follow Jitsi's quick install guide
sudo apt update
sudo apt install jitsi-meet

During installation, enter the hostname (meet.example.com), and choose Let’s Encrypt for the certificate (it asks for an email). The installer configures Nginx, Prosody, Jicofo and JVB. See adding repositories.

Open https://meet.example.com, and start a meeting.

By default, anyone can create meetings on your server. Restrict room creation to authenticated users, while guests can still join with a link:

  1. In /etc/prosody/conf.avail/meet.example.com.cfg.lua, set authentication = "internal_hashed" on the main VirtualHost, and add a guest VirtualHost:
VirtualHost "guest.meet.example.com"
    authentication = "anonymous"
    c2s_require_encryption = false
  1. In /etc/jitsi/meet/meet.example.com-config.js, set anonymousdomain: 'guest.meet.example.com'.
  2. In /etc/jitsi/jicofo/jicofo.conf, enable authentication (type XMPP, login-url set to meet.example.com).
  3. Create users:
sudo prosodyctl register alice meet.example.com 'strong-password'
sudo systemctl restart prosody jicofo jitsi-videobridge2

Recent Jitsi versions document this as “secure domain”. Follow the guide for your release, since config formats change. JWT or LDAP authentication are options for integration.

5. NAT and public IP

If the server is behind NAT (not typical for a VPS, which has the public IP on its interface), set the public and private addresses in /etc/jitsi/videobridge/sip-communicator.properties or jvb.conf. On a VPS with a public IP, the defaults usually work. See NAT explained.

TURN for difficult networks

Participants behind strict corporate firewalls may not reach UDP 10000. A TURN server (coturn) on TCP/TLS 443 or 5349 relays their media. The Jitsi installer can set up coturn, or you can run it separately. See coturn TURN server.

Branding, settings and recording

  • Customise interface_config.js and config.js: default language, lobby, start muted, resolution limits (lower resolutions save bandwidth).
  • Recording and streaming need Jibri, a separate, resource-hungry component (a headless Chrome per recording). Run it on its own server.

Maintenance

  • Keep packages updated (apt upgrade). Jitsi components are released together. See patch management.
  • Monitor bandwidth and CPU during busy meetings. See vnStat.
  • Certificates renew automatically with the Let’s Encrypt setup.

Quick reference

Item Value
Web 443/tcp (Nginx)
Media 10000/udp
TURN 3478/udp, 5349/tcp (or 443)
Add user prosodyctl register USER DOMAIN PASS
Restart all systemctl restart prosody jicofo jitsi-videobridge2
Configs /etc/jitsi/, /etc/prosody/conf.avail/

Related: Matrix Synapse and Mattermost.

  • Self-Hosting
  • Video
  • Communication