Privacy Tools #Jitsi#video calls#self-hosted

Self-Hosted Jitsi Meet: Encrypted Video Calls on Your Own Server

Set up a self-hosted Jitsi Meet server for private, encrypted video conferencing that you control completely.

7 min read

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.

#conferencing #encryption #privacy #self-hosted #video calls #Jitsi