Jitsi Meet is an open-source video conferencing platform that rivals Zoom and Teams in functionality. Self-hosting Jitsi gives you end-to-end encrypted video calls with no third-party access to your meetings — no surveillance capitalism, no metadata collection, no sharing with advertisers. This guide covers setting up Jitsi Meet on a VPS.
Why Self-Host Jitsi?
- No accounts required for guests — share a link, click, join
- End-to-end encryption available (Jitsi uses DTLS-SRTP; E2E via Insertable Streams is optional)
- No meeting time limits, no participant caps (limited only by server resources)
- Full data sovereignty — no third party can access your calls
- Custom branding and configuration
Server Requirements
For small teams (up to 10 participants):
- 4 vCPU, 4GB RAM, 20GB storage
- Ubuntu 22.04 LTS or Debian 12
- A domain name pointing to the server (required for HTTPS)
For larger meetings (20-50 participants):
- 8 vCPU, 8GB RAM — each video stream adds significant CPU load
Installation
Step 1: Prerequisites
# Update system
sudo apt update && sudo apt upgrade -y
# Install required packages
sudo apt install -y apt-transport-https gnupg2 nginx-full
# Set hostname
sudo hostnamectl set-hostname meet.yourdomain.com
echo "YOUR_SERVER_IP meet.yourdomain.com" | sudo tee -a /etc/hosts
Step 2: Add Jitsi Repository
curl 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
sudo apt update
Step 3: Install Jitsi Meet
sudo apt install -y jitsi-meet
During installation, you’ll be prompted for:
- Hostname: Enter your domain (e.g.,
meet.yourdomain.com) - SSL certificate: Choose Let’s Encrypt (automatic HTTPS)
- Enter your email for certificate renewal notifications
The installer configures Nginx, Prosody (XMPP), Jitsi Videobridge, and Jicofo automatically.
Step 4: Firewall Configuration
sudo ufw allow 80/tcp # HTTP (redirected to HTTPS)
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 10000/udp # JVB media traffic
sudo ufw allow 4443/tcp # JVB fallback TCP
sudo ufw enable
Step 5: Verify Installation
Navigate to https://meet.yourdomain.com — you should see the Jitsi Meet interface.
Configuration
Require Authentication for Room Creation
By default, anyone can create a meeting room. Restrict creation to registered users while allowing guests to join:
Edit /etc/prosody/conf.avail/meet.yourdomain.com.cfg.lua:
VirtualHost "meet.yourdomain.com"
authentication = "internal_hashed" -- Change from "anonymous"
VirtualHost "guest.meet.yourdomain.com"
authentication = "anonymous"
c2s_require_encryption = false
Edit /etc/jitsi/meet/meet.yourdomain.com-config.js:
hosts: {
domain: 'meet.yourdomain.com',
anonymousdomain: 'guest.meet.yourdomain.com',
...
}
Add a user:
sudo prosodyctl register username meet.yourdomain.com password
Restart services:
sudo systemctl restart prosody jicofo jitsi-videobridge2 nginx
Enable End-to-End Encryption
In /etc/jitsi/meet/meet.yourdomain.com-config.js, enable E2E encryption (experimental):
e2eping: {
enabled: true
},
Users must manually enable E2E via the Security Options menu in a call (everyone in the call must enable it).
Custom Lobby (Waiting Room)
lobby: {
enabled: true
},
With lobby enabled, moderators must approve participants before they can join.
Updating Jitsi Meet
sudo apt update && sudo apt upgrade -y jitsi-meet
sudo systemctl restart prosody jicofo jitsi-videobridge2 nginx
Monitoring
Check service status:
sudo systemctl status prosody jicofo jitsi-videobridge2 nginx
# Check videobridge logs
sudo journalctl -u jitsi-videobridge2 -f
# Check active conferences
curl localhost:8080/debug | python3 -m json.tool
Resource Scaling
For larger deployments, add multiple Jitsi Videobridge (JVB) instances on separate servers — Jitsi supports horizontal scaling through its Octo cascade bridging feature.
A single modern server (8 vCPU, 8GB RAM) comfortably handles 50+ participant meetings with video. For 100+ simultaneous participants, use multiple JVB nodes behind an Octo configuration.
Alternatives for Smaller Setups
If managing a full server is too complex:
- Hosted Jitsi: meet.jit.si is free with no account required (no E2E by default)
- Element/Matrix: Matrix protocol with Element client supports encrypted video via Element Call
- Signal: Encrypted calls for small groups (mobile-first)
Self-hosted Jitsi Meet is a production-ready video conferencing solution that costs about $5-10/month in VPS fees and provides complete control over your communications infrastructure.