Jitsi on a Full VM
Table of Contents
- Introduction
- Deploy a Full VM
- Set a DNS Record
- Set a Firewall
- Prerequisites
- Install Jitsi
- Secure the Domain
- Create a New Meeting
- Questions and Feedback
Introduction
In this ThreeFold guide, we explore how to set Jitsi on a full VM using the ThreeFold Playground.
This guide is heavily based on the Jitsi Self-Hosting Guide. We present the steps here to show the ThreeFold community that it is very easy to set up Jitsi using a full VM on the ThreeFold Grid.
Deploy a Full VM
We start by deploying a full VM on the ThreeFold Playground.
- Go to the Threefold Playground
- Deploy a full VM (Ubuntu 20.04) with an IPv4 address and at least the minimum specs
- IPv4 Address
- Minimum vcores: 2vcore
- Minimum MB of RAM: 4096GB
- Minimum storage: 50GB
- Connect to the VM via SSH
-
ssh root@<IPv4_Address>
-
Set a DNS Record
- Go to your domain name registrar (e.g. Namecheap)
- In the section Advanced DNS, add a DNS A Record to your domain and link it to the IP address of the VM you deployed on:
- Type: A Record
- Host: @
- Value: <IPv4_Address>
- TTL: Automatic
- It might take up to 30 minutes to set the DNS properly.
- To check if the A record has been registered, you can use a common DNS checker:
-
https://dnschecker.org/#A/jitsi-meet.example.com
-
- In the section Advanced DNS, add a DNS A Record to your domain and link it to the IP address of the VM you deployed on:
Note: Throughout the guide, we use jitsi-meet.example.com
as a domain name example. Make sure to replace this with your own domain name.
Set a Firewall
- Add the permissions
-
ufw allow 80/tcp ufw allow 443/tcp ufw allow 10000/udp ufw allow 22/tcp ufw allow 3478/udp ufw allow 5349/tcp
-
- Enable the firewall
-
ufw enable
-
- Verify the fire wall status
-
ufw status verbose
-
Prerequisites
- Update the system
-
apt update
-
- Install the prerequisites
-
apt install gnupg2 -y apt install nginx -y apt install apt-transport-https
-
- Set the hostname
-
hostnamectl set-hostname jitsi-meet.example.com
-
- Add the domain name and IPv4 in /etc/hosts under the line 127.0.0.1 localhost
-
sed -i '2 i <IPv4_Address> jitsi-meet.example.com' /etc/hosts
-
- Verify that the hostname is properly set
-
ping "$(hostname)"
-
- Add the Prosody package repository
-
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | tee -a /etc/apt/sources.list wget https://prosody.im/files/prosody-debian-packages.key -O- | apt-key add - apt install lua5.2
-
- Add the Jitsi package 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
-
Install Jitsi
- Install Jitsi-meet
-
apt install jitsi-meet -y
- During the setup, you will need to:
- Set the domain name
- Decide the HTTPS method
- In this guide, we use Let’s Encrypt
- Set an email
-
Secure the Domain
We secure the domain by requesting a username and password to create a new meeting.
- Open the following .lua file:
-
nano /etc/prosody/conf.avail/jitsi-meet.example.com.cfg.lua
- Replace jitsi-anonymous by internal_hashed in the block VirtualHost, after authentication =
- Note: You can use the following command line to do this quickly:
-
sed -i 's/jitsi-anonymous/internal_hashed/g' /etc/prosody/conf.avail/<domain_name>.cfg.lua
-
- Note: You can use the following command line to do this quickly:
- Add the following block above the first VirtualHost block in the .lua file:
-
VirtualHost "guest.jitsi-meet.example.com" authentication = "anonymous" c2s_require_encryption = false
-
-
- Open the following file
-
nano /etc/jitsi/meet/jitsi-meet.example.com-config.js
- Uncomment the line anonymousdomain: ‘guest.jitsi-meet.example.com’, by removing the two back slashes
-
- Open the following file
-
nano /etc/jitsi/jicofo/jicofo.conf
- Add the following block under jicofo {
-
authentication: { enabled: true type: XMPP login-url: jitsi-meet.example.com }
-
-
- Set a username and password with Prosody
-
prosodyctl register <username> jitsi-meet.example.com <password>
- Note: You might receive an error concerning lua-unbound, but this won’t affect the outcome of the command.
-
- Reset the services
-
systemctl restart prosody systemctl restart jicofo systemctl restart jitsi-videobridge2
-
For more information and configurations, read the Jitsi documentation.
Create a New Meeting
We create a new Jitsi meeting.
- Go to your domain URL (e.g.
jitsi-meet.example.com
) - Create a Jitsi meeting by clicking Start meeting
Questions and Feedback
If you have any questions, you can ask the ThreeFold community for help on the ThreeFold Forum or on the ThreeFold Grid Tester Community on Telegram.