Prerequisites
Make sure the server has the following inbound rules configured:
Rule Type | Protocol | Port |
---|---|---|
Custom UDP | UDP | 3478 |
Custom UDP | UDP | 10000 |
SSH | TCP | 22 |
HTTP | TCP | 80 |
HTTPS | TCP | 443 |
Custom TCP | TCP | 5349 |
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.