Jitsi Meet Setup Guide

Prerequisites

Make sure the server has the following inbound rules configured:

Rule TypeProtocolPort
Custom UDPUDP3478
Custom UDPUDP10000
SSHTCP22
HTTPTCP80
HTTPSTCP443
Custom TCPTCP5349

Jitsi Installation Steps

Update and Upgrade Packages

apt update
apt upgrade

Install Required Packages

apt install curl gnupg2 nginx-full apt-transport-https openjdk-17-jre-headless
apt install stun-server stun-client

Add Prosody Repository

echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Add Jitsi Repository

curl https://download.jitsi.org/jitsi-key.gpg.key | sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null

Update Repositories and Install Jitsi Meet

apt update
apt install jitsi-meet

Configure Jitsi Meet

Configure NAT Settings

Edit the sip-communicator.properties file:

nano /etc/jitsi/videobridge/sip-communicator.properties

Add or modify the following lines:

#org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-si-turnrelay.jitsi.net:443  # Comment this line
org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<PRIVATE IP>
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<PUBLIC IP>

Configure Prosody

Edit the Prosody configuration file:

nano /etc/prosody/conf.avail/<DOMAIN NAME>.cfg.lua

Add or modify the following lines:

VirtualHost "<DOMAIN NAME>"
    authentication = "internal_hashed"  -- Replace "jitsi-anonymous" with "internal_hashed"

VirtualHost "guest.<DOMAIN NAME>"
    authentication = "anonymous"
    c2s_require_encryption = true

Configure Jitsi Meet

Edit the Jitsi Meet configuration file:

nano /etc/jitsi/meet/<DOMAIN NAME>-config.js

Add or modify the following lines:

var config = {
    hosts: {
        domain: '<DOMAIN NAME>',
        anonymousdomain: 'guest.<DOMAIN NAME>',
        authdomain: '<DOMAIN NAME>',
    },
    startAudioOnly: true,
}

Configure Jicofo

Edit the Jicofo configuration file:

nano /etc/jitsi/jicofo/jicofo.conf

Add or modify the following lines:

jicofo {
  authentication: {
    enabled: true
    type: XMPP
    login-url: <DOMAIN NAME>
  }
}

Create User for Authentication

prosodyctl register <username> <DOMAIN NAME> <password>

Restart Services

systemctl restart prosody && systemctl restart jicofo && systemctl restart jitsi-videobridge2

Customizing Jitsi

Customize Interface Configuration

nano /usr/share/jitsi-meet/interface_config.js

Customize Images

cd /usr/share/jitsi-meet/images/

Customize Language File

nano /usr/share/jitsi-meet/lang/main.json

Customize JavaScript Bundle

cd /usr/share/jitsi-meet/libs/
sed -i 's/"headerTitle":"Jitsi Meet"/"headerTitle":"<CUSTOMIZED HEADER TITLE>"/g' app.bundle.min.js
sed -i 's/"Secure and high quality meetings"/"CUSTOMIZED DESCRIPTION"/g' app.bundle.min.js

Customize Title

nano /usr/share/jitsi-meet/title.html

Conclusion

This guide provides a step-by-step process to install, configure, and customize Jitsi Meet on a server. Ensure that the private and public IP addresses are correctly set, and that the domain name is consistently used across all configuration files. For further customization, refer to the official Jitsi documentation.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top