<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elliot Cooper</title>
    <description>The latest articles on DEV Community by Elliot Cooper (@elliotcooper).</description>
    <link>https://dev.to/elliotcooper</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F372404%2F7b1ef4c3-32e7-40f4-8d2a-ba5f3c8993df.jpeg</url>
      <title>DEV Community: Elliot Cooper</title>
      <link>https://dev.to/elliotcooper</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elliotcooper"/>
    <language>en</language>
    <item>
      <title>How To Install Jitsi Meet on Ubuntu 18.04</title>
      <dc:creator>Elliot Cooper</dc:creator>
      <pubDate>Mon, 27 Apr 2020 15:03:27 +0000</pubDate>
      <link>https://dev.to/digitalocean/how-to-install-jitsi-meet-on-ubuntu-18-04-239b</link>
      <guid>https://dev.to/digitalocean/how-to-install-jitsi-meet-on-ubuntu-18-04-239b</guid>
      <description>&lt;p&gt;&lt;em&gt;The author selected the &lt;a href="https://www.brightfunds.org/funds/open-internet-free-speech"&gt;Open Internet/Free Speech Fund&lt;/a&gt; to receive a donation as part of the &lt;a href="https://do.co/w4do-cta"&gt;Write for DOnations&lt;/a&gt; program.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://jitsi.org/jitsi-meet/"&gt;Jitsi Meet&lt;/a&gt; is an open-source video-conferencing application based on &lt;a href="https://en.wikipedia.org/wiki/WebRTC"&gt;WebRTC&lt;/a&gt;. A Jitsi Meet server provides multi-person video conference rooms that you can access using nothing more than your browser and provides comparable functionality to a Zoom or Skype conference call. The benefit of a Jitsi conference is that all your data only passes through your server, and the end-to-end TLS encryption ensures that no one can snoop on the call. With Jitsi you can be sure that your private information stays that way.&lt;/p&gt;

&lt;p&gt;In this tutorial, you will install and configure a Jitsi Meet server on Ubuntu 18.04. The default configuration allows anyone to create a new conference room. This is not ideal for a server that is publicly available on the internet so you will also configure Jitsi Meet so that only registered users can create new conference rooms. After you have created the conference room, any users can join, as long as they have the unique address and the optional password.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you begin this guide you’ll need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  One Ubuntu 18.04 server set up by following the &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04"&gt;Initial Server Setup with Ubuntu 18.04&lt;/a&gt; tutorial, including a non-root sudo-enabled user. The size of the server you will need mostly depends on the available bandwidth and the number of participants you expect to be using the server. The following table will give you some idea of what is needed.&lt;/li&gt;
&lt;li&gt;  A domain name configured to point to your server. You can learn how to point domains to DigitalOcean Droplets by following the &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-set-up-a-host-name-with-digitalocean"&gt;How To Set Up a Host Name with DigitalOcean&lt;/a&gt; tutorial. Throughout this guide, the example domain name &lt;span class="highlight"&gt;&lt;code&gt;jitsi.your-domain&lt;/code&gt;&lt;/span&gt; is used.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you are choosing a server to run your Jitsi Meet instance you will need to consider the system resources needed to host conference rooms. The following benchmark information was collected from a single-core virtual machine using high-quality video settings:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dYWL3nK5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://p78.f0.n0.cdn.getcloudapp.com/items/lluD2N2y/Image%25202020-04-27%2520at%252010.54.51%2520AM.png%3Fv%3D1b6db82c2d3cb9916f81c4529c9605e7" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dYWL3nK5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://p78.f0.n0.cdn.getcloudapp.com/items/lluD2N2y/Image%25202020-04-27%2520at%252010.54.51%2520AM.png%3Fv%3D1b6db82c2d3cb9916f81c4529c9605e7" alt="https://p78.f0.n0.cdn.getcloudapp.com/items/lluD2N2y/Image%202020-04-27%20at%2010.54.51%20AM.png?v=1b6db82c2d3cb9916f81c4529c9605e7"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The jump in resource use between two and three participants is because Jitsi will route the call data directly between the clients when there are two of them. When more than two clients are present then call data is routed through the Jitsi Meet server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 — Setting the System Hostname
&lt;/h2&gt;

&lt;p&gt;In this step, you will change the system’s hostname to match the domain name that you intend to use for your Jitsi Meet instance and resolve that hostname to the localhost IP, &lt;code&gt;127.0.0.1&lt;/code&gt;. Jitsi Meet uses both of these settings when it installs and generates its configuration files.&lt;/p&gt;

&lt;p&gt;First, set the system’s hostname to the domain name that you will use for your Jitsi instance. The following command will set the current hostname and modify the &lt;code&gt;/etc/hostname&lt;/code&gt; that holds the system’s hostname between reboots:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo hostnamectl set-hostname jitsi.your-domain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The command that you ran breaks down as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;hostnamectl&lt;/code&gt; is a utility from the &lt;a href="https://www.digitalocean.com/community/tutorials/systemd-essentials-working-with-services-units-and-the-journal"&gt;systemd&lt;/a&gt; tool suite to manage the system hostname.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;set-hostname&lt;/code&gt; sets the system hostname.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check that this was successful by running the following:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;hostname
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This will return the hostname you set with the &lt;code&gt;hostnamectl&lt;/code&gt; command:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output
jitsi.your-domain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next, you will set a local mapping of the server’s hostname to the loopback IP address, &lt;code&gt;127.0.0.1&lt;/code&gt;. Do this by opening the &lt;code&gt;/etc/hosts&lt;/code&gt; file with a text editor:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/hosts
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Then, add the following line:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;127.0.0.1 jitsi.your-domain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Mapping your Jitsi Meet server’s domain name to &lt;code&gt;127.0.0.1&lt;/code&gt; allows your Jitsi Meet server to use several networked processes that accept local connections from each other on the &lt;code&gt;127.0.0.1&lt;/code&gt; IP address. These connections are authenticated and encrypted with a TLS certificate, which is registered to your domain name. Locally mapping the domain name to &lt;code&gt;127.0.0.1&lt;/code&gt; makes it possible to use the TLS certificate for these local network connections.&lt;/p&gt;

&lt;p&gt;Save and exit your file.&lt;/p&gt;

&lt;p&gt;Your server now has the hostname that Jitsi requires for installation. In the next step, you will open the firewall ports that are needed by Jitsi and the TLS certificate installer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 — Configuring the Firewall
&lt;/h2&gt;

&lt;p&gt;When you followed the &lt;a href="https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04"&gt;Initial Server Setup with Ubuntu 18.04&lt;/a&gt; guide you enabled the UFW firewall and opened the SSH port. The Jitsi server needs some ports opened so that it can communicate with the call clients. Also, the TLS installation process needs to have a port open so that it can authenticate the certificate request.&lt;/p&gt;

&lt;p&gt;The ports that you will open are the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;code&gt;80/tcp&lt;/code&gt; used in the TLS certificate request.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;443/tcp&lt;/code&gt; used for the conference room creation web page.&lt;/li&gt;
&lt;li&gt;  &lt;code&gt;4443/tcp,10000/udp&lt;/code&gt; used to transmit and receive the encrypted call traffic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Run the following &lt;code&gt;ufw&lt;/code&gt; commands to open these ports:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 4443/tcp
sudo ufw allow 10000/udp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Check that they were all added with the &lt;code&gt;ufw status&lt;/code&gt; command:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw status
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You will see the following output if these ports are open:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere
4443/tcp                   ALLOW       Anywhere
10000/udp                  ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443/tcp (v6)               ALLOW       Anywhere (v6)
4443/tcp (v6)              ALLOW       Anywhere (v6)
10000/udp (v6)             ALLOW       Anywhere (v6)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The server is now ready for the Jitsi installation, which you will complete in the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 — Installing Jitsi Meet
&lt;/h2&gt;

&lt;p&gt;In this step, you will add the Jitsi stable repository to your server and then install the Jitsi Meet package from that repository. This will ensure that you are always running the latest stable Jitsi Meet package.&lt;/p&gt;

&lt;p&gt;First, download the Jitsi GPG key with the &lt;code&gt;wget&lt;/code&gt; downloading utility:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wget https://download.jitsi.org/jitsi-key.gpg.key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The &lt;code&gt;apt&lt;/code&gt; package manager will use this GPG key to validate the packages that you will download from the Jitsi repository.&lt;/p&gt;

&lt;p&gt;Next, add the GPG key you downloaded to &lt;code&gt;apt&lt;/code&gt;’s keyring using the &lt;code&gt;apt-key&lt;/code&gt; utility:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt-key add jitsi-key.gpg.key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can now delete the GPG key file as it is no longer needed:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rm jitsi-key.gpg.key
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now, you will add the Jitsi repository to your server by creating a new source file that contains the Jitsi repository. Open and create the new file with your editor:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/apt/sources.list.d/jitsi-stable.list
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Add this line to the file for the Jitsi repository:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deb https://download.jitsi.org stable/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Save and exit your editor.&lt;/p&gt;

&lt;p&gt;Finally, perform a system update to collect the package list from the Jitsi repository and then install the &lt;code&gt;jitsi-meet&lt;/code&gt; package:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt update
sudo apt install jitsi-meet
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;During the installation of &lt;code&gt;jitsi-meet&lt;/code&gt; you will be prompted to enter the domain name (for example, &lt;code&gt;jitsi.your-domain&lt;/code&gt;) that you want to use for your Jitsi Meet instance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PYBhHNsH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step3a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PYBhHNsH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step3a.png" alt="Image showing the jitsi-meet installation hostname dialog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You move the cursor from the hostname field to highlight the &lt;strong&gt;&lt;/strong&gt; button with the &lt;code&gt;TAB&lt;/code&gt; key. Press &lt;code&gt;ENTER&lt;/code&gt; when &lt;strong&gt;&lt;/strong&gt; is highlighted to submit the hostname.&lt;/p&gt;

&lt;p&gt;You will then be shown a new dialog box that asks if you want Jitsi to create and use a &lt;a href="https://en.wikipedia.org/wiki/Self-signed_certificate"&gt;self-signed&lt;/a&gt; TLS certificate or use an existing one you already have:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--N3fZhiEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step3b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--N3fZhiEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step3b.png" alt="Image showing the jitsi-meet installation certificate dialog"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you do not have a TLS certificate for your Jitsi domain select the first, &lt;strong&gt;Generate a new self-signed certificate&lt;/strong&gt;, option.&lt;/p&gt;

&lt;p&gt;Your Jitsi Meet instance is now installed using a self-signed TLS certificate. This will cause browser warnings, so you will get a signed TLS certificate in the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Obtaining a Signed TLS Certificate
&lt;/h2&gt;

&lt;p&gt;Jitsi Meet uses TLS certificates to encrypt the call traffic so that no one can listen to your call as it travels over the internet. TLS certificates are the same certificates that are used by websites to enable HTTPS URLs.&lt;/p&gt;

&lt;p&gt;Jitsi Meet supplies a program to automatically download a TLS certificate for your domain name that uses the &lt;a href="https://certbot.eff.org/"&gt;Certbot&lt;/a&gt; utility. You will need to install this program before you run the certificate installation script.&lt;/p&gt;

&lt;p&gt;First, add the Certbot repository to your system to ensure that you have the latest version of Certbot. Run the following command to add the new repository and update your system:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:certbot/certbot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Next, install the &lt;code&gt;certbot&lt;/code&gt; package:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo apt install certbot
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Your server is now ready to run the TLS certificate installation program provided by Jitsi Meet:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;When you run the script you will be shown the following prompt for an email address:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Output
-------------------------------------------------------------------------
This script will:
- Need a working DNS record pointing to this machine(for domain jitsi.example.com)
- Download certbot-auto from https://dl.eff.org to /usr/local/sbin
- Install additional dependencies in order to request Let’s Encrypt certificate
- If running with jetty serving web content, will stop Jitsi Videobridge
- Configure and reload nginx or apache2, whichever is used
- Configure the coturn server to use Let's Encrypt certificate and add required deploy hooks
- Add command in weekly cron job to renew certificates regularly

You need to agree to the ACME server's Subscriber Agreement (https://letsencrypt.org/documents/LE-SA-v1.1.1-August-1-2016.pdf)
by providing an email address for important account notifications
Enter your email and press [ENTER]:
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This email address will be submitted to the certificate issuer &lt;a href="https://letsencrypt.org/"&gt;&lt;code&gt;https://letsencrypt.org&lt;/code&gt;&lt;/a&gt; and will be used to notify you about security and other matters related to the TLS certificate. You must enter an email address here to proceed with the installation. The installation will then complete without any further prompts.&lt;/p&gt;

&lt;p&gt;When it finishes, your Jitsi Meet instance will be configured to use a signed TLS certificate for your domain name. Certificate renewals will also happen automatically because the installer placed a renewal script at &lt;code&gt;/etc/cron.weekly/letsencrypt-renew&lt;/code&gt; that will run each week.&lt;/p&gt;

&lt;p&gt;The TLS installer used port &lt;code&gt;80&lt;/code&gt; to verify you had control of your domain name. Now that you have obtained the certificate your server no longer needs to have port &lt;code&gt;80&lt;/code&gt; open because port &lt;code&gt;80&lt;/code&gt; is used for regular, non-encrypted HTTP traffic. Jitsi Meet only serves its website via HTTPS on port &lt;code&gt;443&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Close this port in your firewall with the following &lt;code&gt;ufw&lt;/code&gt; command:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo ufw delete allow 80/tcp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Your Jitsi Meet server is now up and running and available for testing. Open a browser and point it to your domain name. You will be able to create a new conference room and invite others to join you.&lt;/p&gt;

&lt;p&gt;The default configuration for Jitsi Meet is that anyone visiting your Jitsi Meet server homepage can create a new conference room. This will use your server’s system resources to run the conference room and is not desirable for unauthorized users. In the next step, you will configure your Jitsi Meet instance to only allow registered users to create conference rooms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 — Locking Conference Creation
&lt;/h2&gt;

&lt;p&gt;In this step, you will configure your Jitsi Meet server to only allow registered users to create conference rooms. The files that you will edit were generated by the installer and are configured with your domain name.&lt;/p&gt;

&lt;p&gt;The variable &lt;code&gt;your_domain&lt;/code&gt; will be used in place of a domain name in the following examples.&lt;/p&gt;

&lt;p&gt;First, open &lt;code&gt;sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua&lt;/code&gt; with a text editor:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/prosody/conf.avail/your_domain.cfg.lua
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Edit this line:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
        authentication = "anonymous"
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To the following:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
        authentication = "internal_plain"
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This configuration tells Jitsi Meet to force username and password authentication before allowing conference room creation by a new visitor.&lt;/p&gt;

&lt;p&gt;Then, in the same file, add the following section to the end of the file:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
VirtualHost "guest.your_domain"
    authentication = "anonymous"
    c2s_require_encryption = false
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This configuration allows anonymous users to join conference rooms that were created by an authenticated user. However, the guest must have a unique address and an optional password for the room to enter it.&lt;/p&gt;

&lt;p&gt;Here, you added &lt;code&gt;guest.&lt;/code&gt; to the front of your domain name. For example, for &lt;code&gt;jitsi.your-domain&lt;/code&gt; you would put &lt;code&gt;guest.jitsi.your-domain&lt;/code&gt;. The &lt;code&gt;guest.&lt;/code&gt; hostname is only used internally by Jitsi Meet. You will never enter it into a browser or need to create a DNS record for it.&lt;/p&gt;

&lt;p&gt;Open another configuration file at &lt;code&gt;/etc/jitsi/meet/your_domain-config.js&lt;/code&gt; with a text editor:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/jitsi/meet/your_domain-config.js
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Edit this line:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
        // anonymousdomain: 'guest.example.com',
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;To the following:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...
        anonymousdomain: 'guest.your_domain',
...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Again, by using the &lt;code&gt;guest.&amp;lt;span class="highlight"&amp;gt;your_domain&amp;lt;/span&amp;gt;&lt;/code&gt; hostname that you used earlier this configuration tells Jitsi Meet what internal hostname to use for the un-authenticated guests.&lt;/p&gt;

&lt;p&gt;Next, open &lt;code&gt;/etc/jitsi/jicofo/sip-communicator.properties&lt;/code&gt;:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/jitsi/jicofo/sip-communicator.properties
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;And add the following line to complete the configuration changes:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;org.jitsi.jicofo.auth.URL=XMPP:your_domain
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This configuration points one of the Jitsi Meet processes to the local server that performs the user authentication that is now required.&lt;/p&gt;

&lt;p&gt;Your Jitsi Meet instance is now configured so that only registered users can create conference rooms. After a conference room is created, anyone can join it without needing to be a registered user. All they will need is the unique conference room address and an optional password set by the room’s creator.&lt;/p&gt;

&lt;p&gt;Now that Jitsi Meet is configured to require authenticated users for room creation you need to register these users and their passwords. You will use the &lt;a href="https://wiki.mattrude.com/Prosodyctl"&gt;&lt;code&gt;prosodyctl&lt;/code&gt;&lt;/a&gt; utility to do this.&lt;/p&gt;

&lt;p&gt;Run the following command to add a user to your server:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo prosodyctl register user your_domain password
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The user that you add here is &lt;strong&gt;not&lt;/strong&gt; a system user. They will only be able to create a conference room and are not able to log in to your server via SSH.&lt;/p&gt;

&lt;p&gt;Finally, restart the Jitsi Meet processes to load the new configuration:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl restart prosody.service
sudo systemctl restart jicofo.service
sudo systemctl restart jitsi-videobridge2.service
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The Jitsi Meet instance will now request a username and password with a dialog box when a conference room is created.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mOGv1Tmt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mOGv1Tmt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://assets.digitalocean.com/articles/jitsimeet1804/step5a.png" alt="Image showing the Jitsi username and password box"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Your Jitsi Meet server is now set up and securely configured.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this article, you deployed a Jitsi Meet server that you can use to host secure and private video conference rooms. You can extend your Jitsi Meet instance with instructions from the &lt;a href="https://github.com/jitsi/jitsi-meet/wiki"&gt;Jitsi Meet Wiki&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;&lt;a href="http://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jgdiKbjy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" alt="CC 4.0 License"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This work is licensed under a &lt;a href="http://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>video</category>
      <category>tutorial</category>
      <category>webrtc</category>
    </item>
  </channel>
</rss>
