Self-Hosting Guide - Debian/Ubuntu server
Follow these steps for a quick Jitsi-Meet installation on a Debian-based GNU/Linux system. The following distributions are supported out-of-the-box:
- Debian 10 (Buster) or newer
- Ubuntu 22.04 (Jammy Jellyfish) or newer (Ubuntu 18.04 or 20.04 can be used, but Prosody must be updated to version 0.11+ before installation)
Many of the installation steps require root
or sudo
access. So it's recommended to have sudo
/root
access to your system.
Required packages and repository updates
You will need the following packages:
gnupg2
nginx-full
sudo
=> Only needed if you usesudo
curl
=> Orwget
to Add the Jitsi package repository
OpenJDK 11 must be used.
Make sure your system is up-to-date and required packages are installed:
Run as root
or with sudo
:
# Retrieve the latest package versions across all repositories
sudo apt update
# Ensure support for apt repositories served via HTTPS
sudo apt install apt-transport-https
On Ubuntu systems, Jitsi requires dependencies from Ubuntu's universe
package repository. To ensure this is enabled, run this command:
sudo apt-add-repository universe
Retrieve the latest package versions across all repositories:
sudo apt update
Install Jitsi Meet
Domain of your server and set up DNS
Decide what domain your server will use. For example, meet.example.org
.
Set a DNS A record for that domain, using:
- your server's public IP address, if it has its own public IP; or
- the public IP address of your router, if your server has a private (RFC1918) IP address (e.g. 192.168.1.2) and connects through your router via Network Address Translation (NAT).
If your computer/server or router has a dynamic IP address (the IP address changes constantly), you can use a dynamic dns-service instead. Example DuckDNS.
DNS Record Example:
Record Type | Hostname | Public IP | TTL (Seconds) |
---|---|---|---|
A | meet.example.org | Your Meeting Server Public IP (x.x.x.x ) | 1800 |
Set up the Fully Qualified Domain Name (FQDN) (optional)
If the machine used to host the Jitsi Meet instance has a FQDN (for example meet.example.org
) already set up in DNS, you can set it with the following command:
sudo hostnamectl set-hostname meet.example.org
Then add the same FQDN in the /etc/hosts
file:
127.0.0.1 localhost x.x.x.x meet.example.org
x.x.x.x
is your server's public IP address.
Finally on the same machine test that you can ping the FQDN with:
ping "$(hostname)"
If all worked as expected, you should see:
meet.example.org
Add the Prosody package repository
This will add the Prosody repository so that an up to date Prosody is installed, which is necessary for features including the lobby feature.
Ubuntu 18.04 and 20.04
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 -
sudo apt install lua5.2
Ubuntu 22.04
sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /etc/apt/keyrings/prosody-debian-packages.key
echo "deb [signed-by=/etc/apt/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list
sudo apt install lua5.2
Add the Jitsi package repository
This will add the jitsi repository to your package sources to make the Jitsi Meet packages available.
Ubuntu 18.04 and 20.04
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
Ubuntu 22.04
curl -sL 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
Update all package sources:
sudo apt update