Cart

    Sorry, we could not find any results for your search querry.

    Hosting Jitsi on a VPS with Ubuntu or Debian

    In these special times, there is less opportunity to see friends, family and colleagues in person. Maybe that's why you're looking for an online alternative that allows you to have a video call with an unlimited number of people from your computer, laptop, or mobile.

    Jitsi is a free collection of open-source projects that makes this possible. With Jitsi you can easily set up a secure video conference server on a VPS.

    Using Jitsi, you can set up a video conference not only for private, but also for business purposes. To facilitate this, Jitsi comes with familiar business features such as sharing your desktop or presentations with other participants. Jitsi also distinguishes itself from competitors thanks to:

    • Low latency
    • High Quality
    • Privacy guarantee
    • Easy to install and use

    In this guide, we show you how to set up a Jitsi server on a VPS with Ubuntu or Debian.


    Installing Jitsi

     

    Step 1

    Connect to your VPS via the VPS console or SSH.


     

    Step 2

    Add the package repository key and sources.list.d file (i.e. with the download location) for Jitsi to your VPS using the commands:

    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 | apt-key add -

    By adding the package repository, your VPS knows where it can download Jitsi from.


     

    Step 3

    When you add a new package repository, it will only be available after updating your package list. Updating your package list is done with the command:

    apt -y update

     

    Step 4

    During installation, Jitsi checks whether there is an Apache or Nginx web server on your VPS (in that order). If so, Jitsi will set up a virtual host within your webserver to host Jitsi Meet. If both are not present, Jitsi uses Nginx.

    Depending on what is present on your VPS, start the installation of Jitsi with:

    Nginx present on port 443:

    apt -y install --no-install-recommends jitsi-meet

    All other cases:

    apt -y install apt-transport-https
    apt -y install jitsi-meet

    Jitsi consists of several components that are automatically installed using the commands above. Some of these components are mentioned later in this article, namely:

    • Jitsi Meet: Jitsi Meet is an open-source WebRTC JavaScript application that uses the Jitsi Video bridge to deliver video conferences.
    • Jitsi VideoBridge: Jitsi Video bridge is an XMPP server component designed to handle thousands of video streams simultaneously on a single server.
    • Jicofo: Jitsi COnference FOcus is a server-side focus component that Jitsi Meet uses in conferences to manage media sessions between participants and Jitsi VideoBridge.
    • Prosody: Jitsi uses Jabber for chat messages. Prosody is the server software that Jitsi uses for Jabber.

    Step 5

    The installation wizard starts automatically and first asks for the hostname of your VPS. For the correct steps of this article to work correctly, your hostname must be a subdomain that is linked to your VPS via DNS.

    jitsi hostname


     

    Step 6

    Then you get the option to install a self-signed or own SSL certificate. Both options are fine and you are free to choose. An advantage of Let's Encrypt compared to a paid certificate is that it is free and automatically renewed. Do you choose a certificate from Let's Encrypt here? Then proceed to Step 7. Do you use your own certificate? Then proceed to step 8.

    jitsi configure ssl

    Step 7 - Let's Encrypt

    Jitsi comes with a script with which you can very easily install a Let's Encrypt certificate. You only need to execute the following command:

    /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
    • When prompted, provide a valid email address. Any important security notifications will be sent to this address.
    • Let's Encrypt checks whether your hostname (from step 5) is linked to your VPS via DNS. How to connect a domain to a VPS is explained in this tutorial.

    That's it! Your Jitsi server is now available and ready for use immediately. We provide more information about setting up meetings in the next section.


     

    Step 8 - Own certificate

    Jitsi automatically starts the Jitsi-meet-web-config where you can indicate where your SSL certificate is located on your server.

    Adjust the location to where the .key file is located, for example as in the screenshot below.

    jitsi web config ssl

    Then specify the location of the associated .crt file.

    jitsi web config crt

    That's it! Your Jitsi server is now available and immediately ready for use. We provide more information about setting up meetings in the next section.


    Using jitsi

     

    You can use Jitsi through a browser (Chrome and Firefox), desktop application, or mobile app. In our view, the browser version and mobile apps work the simplest.

     

    Browser

    To use Jitsi in your browser, navigate in your browser to the hostname you set in step 5 of the installation, for example, server.example.com, jitsi.example.com or meet.example.com.

    Click on the gear icon at the top right and then adjust the Camera, Microphone and Audio output to the devices you want to use.

    jitsi browser config devices

    Give your meeting a name and click 'Start' to start your meeting.

    jitsi new meeting


     

    Mobile

    Install and launch the Jitsi mobile app for Android or iOS.

    We recommend that you first set up your user account and possibly the server you want to connect to. Click on the menu icon at the top left.

    jitsi mobile home

    Next, click on 'Settings'.

    jitsi mobile menu

    Enter your name, email address, and optionally the hostname of your Jitsi server as set in step 5 of the Jitsi installation.

    jitsi mobile settings

    You can now directly use the app by entering the address of your Jitsi meeting on the home screen. Suppose your hostname is meet.example.com and you started a meeting called 'test' from your browser, then you would enter https://meet.example.com/test in the app under 'Enter room name' only 'test' if you have already entered https://meet.example.com in the settings as 'Server URL').


    Password protection - optional

     

    After the installation of Jitsi, everyone who knows your hostname from step 5 of the installation process, can use your Jitsi server.

    For privacy and security reasons, it is recommended that you secure your Jitsi server so that only authorized users with a password can create a Jitsi 'room' and not any grateful user. To achieve this, make the following changes to your Jitsi configuration:

    In the steps below, replace meet.example.com (indicated in bold) with the hostname you set in step 5 of the Jitsi installation.

    Step 1

    Open /etc/jitsi/meet/meet.example.nl-config.js, for example with:

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

     

    Step 2

    At the beginning of the file, you will see a section called 'hosts:'. Remove the slashes from the domain, anonymousdomain, authdomain and focusUserJid here so that your file looks like the example below:

        hosts: {
            // XMPP domain.
            domain: 'meet.example.com',
    
            // When using authentication, domain for guest users.
            anonymousdomain: 'guest.meet.example.com',
    
            // Domain for authenticated users. Defaults to .
            authdomain: 'meet.example.com',
    
            // Jirecon recording component domain.
            // jirecon: 'jirecon.meet.example.com',
    
            // Call control component (Jigasi).
            // call_control: 'callcontrol.meet.example.com',
    
            // Focus component domain. Defaults to focus..
            // focus: 'focus.meet.example.com',
    
            // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
            muc: 'conference.meet.example.com'
        },
    
        // BOSH URL. FIXME: use XEP-0156 to discover it.
        bosh: '//meet.example.com/http-bind',
    
        // Websocket URL
        // websocket: 'wss://meet.example.com/xmpp-websocket',
    
        // The name of client node advertised in XEP-0115 'c' stanza
        clientNode: 'http://jitsi.org/jitsimeet',
    
        // The real JID of focus participant - can be overridden here
        focusUserJid: 'focus@auth.meet.example.com',

    Save your changes and close the file (ctrl + x > y > enter).


     

    Step 3

    Next, open the prosody configuration:

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

     

    Step 4

    At the top of the file under VirtualHost "meet.example.com", adjust the value of authentication to internal_plain:

    VirtualHost "meet.example.com"
            -- enabled = false -- Remove this line to enable this host
            authentication = "internal_plain"

    Then scroll to the end of the file and add a guest virtual host:

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

    Save your changes and close the file (ctrl + x > y > enter).


     

    Step 5

    Finally, add a line to the sip-communicator properties with the code below to add XMPP (Extensible Messaging and Presence Protocol) authentication; Jitsi uses XMPP to authenticate your users.

    echo "org.jitsi.jicofo.auth.URL=XMPP:meet.example.com" >> /etc/jitsi/jicofo/sip-communicator.properties

     

    Step 6

    Restart Nginx and the different Jitsi components to process your changes:

    systemctl restart jicofo
    systemctl restart jitsi-videobridge2
    systemctl restart prosody
    systemctl restart nginx

    You can now create authorized users with the command below. Unfortunately, it is not possible to let users register themselves.

    sudo prosodyctl register user meet.example.com userpassword

    Replace user and userpassword with the new user's name and password, respectively.

    After creating a user, process the changes with:

    systemctl restart jicofo
    systemctl restart jitsi-videobridge2
    systemctl restart prosody

    Resolving problems

     

    Jitsi works very easily after installation, especially from your browser or mobile app. If you do run into issues, you will find below an overview of common problems and the corresponding solutions:

    • I see an Nginx page: Does your browser have a gray lock with a red cross in front of your web address (e.g. meet.example.com)? Then Nginx cannot use your SSL certificate. Check that your SSL certificate has indeed been decrypted and that it is in the correct location, as you indicated in step 8.
       
    • I cannot select a microphone and/or webcam in my browser: Usually, this is caused by the fact that your webcam and/or your microphone is not properly supported in your browser. In that case, use a different browser, or check for updates of your browser and install them.
       
    • Performance issues for multiple users: Systemd comes with fixed limits for the maximum number of processes and open files. With larger numbers of Jitsi users, your Jitsi server may run into these limits. To fix this, open the file /etc/systemd/system.conf and edit the following variables to look like below:
      DefaultLimitNOFILE=65000
      DefaultLimitNPROC=65000
      DefaultTasksMax=65000
      Finally, restart systemd and jitsi video with:
      systemctl daemon-reload
      service restart jitsi-videobridge2
    • In other cases, you can test at https://test.webrtc.org if your camera and microphone are working properly. You can find log files of your server at the following locations on your VPS:
      • /var/log/jitsi/jvb.log
      • /var/log/jitsi/jicofo.log
      • /var/log/prosody/prosody.log

     

    This brings us to the end of this guide for installing a Jitsi server.

    Should you have any questions regarding this article, please do not hesitate to contact our support department. You can reach them via the button 'Contact us' at the bottom of this page.

    Do you want to discuss this article with other users? Please leave a message under 'Comments'.

    Need help?

    Receive personal support from our supporters

    Contact us