How to set up your own Jitsi meet server with Debian/Ubuntu server with simple configurations

Tharindu Sandaruwan
4 min readJun 13, 2021

Following distributions are supported.

Debian 9 (stretch) or newer

Ubuntu 18.04 (Bionic Beaver) or newer

Most of the command need root or sudo access.

From my personal experience, I suggest using the minimum configuration of a server like this.

2 CPU,4 GB Ram Virtual machine

with this configuration, you can easily run all commands and the Jitsi server without stuck. Not compulsory to use these features you can use even 1GB ram and 1CPU machine but when I used that when issuing commands it is getting slow.

First, make sure your system is up to date and all required packages are installed

Then make sure your system is up to date and all required packages are installed.

# Retrieve the latest package versions across all repositories 
apt update

Then ensure apt repositories served via HTTPS to do that use the following code.

apt install apt-transport-https

On the ubuntu system, jitsi needs packages from Ubuntu universe package repository to make sure this is enabled used following command.

sudo apt-add-repository universe  # Retrieve the latest package versions across all repositories 
sudo apt update

Your server should have set up DNS.

Set up the Fully Qualified Domain Name (FQDN) (optional)

If your server virtual machine already have setup FQDN is already setup in DNS you can used following command to set it.

sudo hostnamectl set-hostname yourdomain.com

Then add the same to the /etc/hosts file.

127.0.0.1 localhost 
x.x.x.x yourdomain.com

Make sure to replace x.x.x.x with your server public Ip and yourdomain.com with your server domain name.

Now we are all set to go.

Add the Jitsi package repository

Following commands will add the Jitsi repository to your package source and make it available to use.

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo 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/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null  # update all package sources 
sudo apt update

Setup and configure your firewall

Following ports are needed to be open in the firewall. If your cloud provider has a place to set up inbound and outbound rules in your dashboard you should open these ports there as well.

  • 80 TCP — for SSL certificate verification/renewal with Let’s Encrypt
  • 443 TCP — for general access to Jitsi Meet
  • 10000 UDP — for general network video/audio communications
  • 22 TCP — if you access your server using SSH (change the port accordingly if it’s not 22)
  • 3478 UDP — for querying the stun server (coturn, optional, needs config.js change to enable it)
  • 5349 TCP — for fallback network video/audio communications over TCP (when UDP is blocked for example), served by coturn

To open these ports from your virtual machine use the following commands

sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 22/tcp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw allow 5222/tcp
sudo ufw enable

After settings these we can check the status of those with the following command.

sudo ufw status verbose

Install Jitsi meet

# jitsi-meet installation 
sudo apt install jitsi-meet

This command will check whether Nginx or Apache is present (first check Nginix if not check for apache) and configure a virtual host within the server to access Jitsi meet.

If your server already has Ngnix running on port 443 in the same machine it will skip this virtual host configuration as it will conflict with port 443.

When running the above command you will be asked to enter your domain name. If you have a domain setup for your virtual machine you can enter it alternatively you can put your server public Ip. If you put your IP address here you are not able to access the Jitsi server via your domain and vise versa.

As well as when you are running the above command it will ask for SSL generation to keep that option to generate new.

After successfully runs the above command you will have a Jitsi server with basic configurations which can be accessed via yourdomain.com or via IP address as your configuration and can have conference calls as much as you need.

Generate Let’s Encrypt certificate(optional but recommended to do)

In order to have encrypted communications, you need a TLS certificate to be installed on your server.

The best way to do this is to use a certificate signed by a Certificate Authority in order to overcome issues with self-signed certificates. The easiest way according to my personal experience as well as official documentation is to use Let’s Encrypt.

To do that simply use the following command in your shell.

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

Now you are all set to have a conference with encrypted communications.

Conclusion

Hope you got an idea about how to configure your own Jitsi server. If you found this is important please follow me in order to read more stories related to Jitsi in the future like authenticating users using tokens as well as recording and streaming with Jitsi using Jibri instance. Thank you very much for reading.

--

--

Tharindu Sandaruwan

Block-chain Enthusiast,React and React-native Developer,Angular developer