Jitsi on a Full VM

Jitsi on a Full VM

Table of Contents


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

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


  • 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 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
      • 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
    • 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.

1 Like