Host a Jitsi Meet Server

This tutorial will demonstrate how to install Jitsi Meet (and its required components) on a Debian 10 server. Watch the video version here.

Prerequisites: You will need a server running Debian 10 (visit digitalocean.nots.co or linode.nots.co if you don't have one.) You will also need a domain name (visit hover.nots.co if you don't have one.) Point the domain name to the IP address of your server (a subdomain will work fine.)

Example parameters: In this example, our fully-qualified domain name (FQDN) is "jitsi.example.com". All passwords will be set to "P@ssw0rd".


Step 1: Log into your server as root (or use sudo) and make sure your server is entirely up-to-date:

apt update
apt full-upgrade

Step 2: Ensure that your hostname and FQDN are set (if not, set them by placing the hostname in /etc/hostname and the FQDN in /etc/hosts):

cat /etc/hostname
dnsdomainname -f
cat /etc/hosts

Step 3: Install the prerequisite packages:

apt install gnupg apt-transport-https

Step 4: Add the Jitsi repository to your package manager and refresh your package lists:

echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
apt update

Step 5: Install the Jitsi Meet package:

apt install jitsi-meet

Enter your FQDN when prompted, and select the option to generate a self-signed certificate during installation.

Step 6: Generate a publicly-usable SSL/TLS certificate using Let's Encrypt:

/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

The server should now be publicly usable.

Step 7 (Optional): If your server is behind a router performing NAT, forward ports TCP/443 and UDP/10000 to the server's internal IP address. Open the videobridge configuration file:

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

Add these two lines of configuration with the appropriate IP addresses:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address>
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=<Public.IP.Address>

Step 8: To require authentication to create or join a room, open the Prosody configuration file:

nano /etc/prosody/conf.avail/jitsi.example.com.cfg.lua

Change the "authentication" option from "anonymous" to "internal_plain":

authentication = "internal_plain"

Step 9: Open the Jifoco configuration file:

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

Add this option to the bottom of the file:

org.jitsi.jicofo.auth.URL=XMPP:jitsi.example.com

Step 10: To create a user in Prosody, run this command:

prosodyctl register yourusernamehere jitsi.example.com P@ssw0rd

Step 11: Restart the Prosody and Jitsi services to apply changes:

systemctl restart prosody
systemctl restart jicofo
systemctl restart jitsi-videobridge2

Step 12: To not require authentication for joining a room while still requiring authentication for creating new rooms, open the Prosody configuration file:

nano /etc/prosody/conf.avail/jitsi.example.com.cfg.lua

Add a new VirtualHost section to the bottom of the file:

VirtualHost "guest.jitsi.example.com"
authentication = "anonymous"
c2s_require_encryption = false

Step 13: Open the Jitsi Meet configuration file:

nano /etc/jitsi/meet/jitsi.example.com-config.js

Uncomment and set the "anonymousdomain" option:

anonymousdomain: 'guest.jitsi.example.com',

Step 14: Restart the Prosody and Jitsi services to apply changes (again):

systemctl restart prosody
systemctl restart jicofo
systemctl restart jitsi-videobridge2

There are no pages beneath this page

Expand: Discussion Discussion (0 posts)