How to Install Jitsi on AlmaLinux 9

How to Install Jitsi on AlmaLinux 9

Welcome to this tutorial on how to install Jitsi on AlmaLinux 9. Jitsi is an open-source, self-hosted video conferencing platform that provides high-quality video, audio, and chat capabilities. It offers an alternative to proprietary video conferencing systems, giving you full control over your data and customization options. This guide will walk you through installing and configuring Jitsi on AlmaLinux 9, ensuring a secure and efficient setup for your team’s communication needs.

Prerequisites to install Jitsi on AlmaLinux 9:

  • An AlmaLinux 9 VPS
  • At least 2 GB of RAM
  • SSH root access or a system user with sudo privileges

Step 1. Update System Packages

To start, log in to your AlmaLinux 9 VPS using SSH:

ssh root@IP_Address -p Port_number

Replace ‘IP_Address’ and ‘Port_number’ with your server’s actual IP address and SSH port number. If needed, replace ‘root’ with the username of your sudo account.

Once logged in, you must make sure that all AlmaLinux OS packages installed on the server are up to date. You can do this by running the following commands:

dnf update -y && dnf upgrade -y

Step 2. Install Dependencies:

Afterward, install essential dependencies on your server. Run the following command to install these dependencies:

dnf install git gcc redhat-rpm-config libxslt-devel bzip2-devel openldap-devel libjpeg-devel freetype-devel curl unzip openssl-devel wget yum-utils make libffi-devel zlib-devel tar 

Step 3. Install Docker:

We’ll install Docker from the AlmaLinux repository. To do this, run the following command to add the repository:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Next, refresh the metadata cache:

dnf makecache

Then, install docker using the following command:

dnf install docker-ce --nobest

Next, initiate and enable the Docker service with the following command. This command will start Docker and configure it to launch automatically during boot.

systemctl enable --now docker

Step 4. Install Docker Compose:

Next, you will also need to install Docker Compose in your system.

You can download the latest version of the Docker compose binary package to the /usr/local/bin directory with the following command:

curl -L https://github.com/docker/compose/releases/download/v2.29.0/docker-compose-`uname -s`-`uname -m`  -o /usr/local/bin/docker-compose

Next, change the permission of the downloaded binary with the following command:

chmod +x /usr/local/bin/docker-compose

Next, check the installed version of Docker Compose using the following command:

docker-compose --version

You should see the following output:

# docker-compose --version
Docker Compose version v2.29.0

Step 5. Install and Configure Jitsi

We’re setting up a Jitsi instance using a Docker container. First, download the Jitsi Meet for Docker with the following command:

wget -O jitsi.zip $(curl -s https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep 'zip' | cut -d\" -f4)

Next, extract the downloaded file using the following command:

unzip jitsi.zip

Rename the directory extracted to Jitsi with the following command:

mv jitsi-docker-jitsi-meet-5a5b8f9/ jitsi/

Before running Jitsi, we need to configure it to your instance. We recommend taking a backup of this default config ahead of making changes:

cd jitsi/
cp env.example .env

After you create a backup of the default configuration, you can access the default file and configure it for your instance.

nano .env

Add the following lines:

PUBLIC_URL=https://jitsi.yourdomain.com
DISABLE_HTTPS=1
ENABLE_LETSENCRYPT=0

Save and close the file.

Next, set strong passwords in the security section of the .env file by running the following bash script:

./gen-passwords.sh

Next, create the required directories for Jitsi meet with the following command:

mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}

Build the Jitsi meet Docker image with the following command:

docker compose up -d

You should see the following output:

#docker compose up -d
[+] Running 4/4
 ✔ Container jitsi-docker-jitsi-meet-5a5b8f9-prosody-1  Started                                                                                                                                                                                                         3.6s 
 ✔ Container jitsi-docker-jitsi-meet-5a5b8f9-jvb-1      Started                                                                                                                                                                                                         1.6s 
 ✔ Container jitsi-docker-jitsi-meet-5a5b8f9-jicofo-1   Started                                                                                                                                                                                                         1.5s 
 ✔ Container jitsi-docker-jitsi-meet-5a5b8f9-web-1      Started                                                                                                                                                                                                         2.3s 

This will download the Jitsi image from the Docker hub and start the containers. You can check all the running containers with the following command:

docker ps

It would be best if you got the following output:

CONTAINER ID   IMAGE                         COMMAND   CREATED      STATUS      PORTS                                                                            NAMES

3484e9f8060c   jitsi/web:stable-9584-1       "/init"   9 seconds ago   Up 7 seconds  0.0.0.0:8000->80/tcp, :::8000->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp   jitsi-docker-jitsi-meet-5a5b8f9-web-1

949dfeb9481f   jitsi/jvb:stable-9584-1       "/init"   7 seconds ago   Up 1 second   127.0.0.1:8080->8080/tcp, 0.0.0.0:10000->10000/udp, :::10000->10000/udp          jitsi-docker-jitsi-meet-5a5b8f9-jvb-1

b1566723d747   jitsi/jicofo:stable-9584-1    "/init"   7 seconds ago   Up 1 second   127.0.0.1:8888->8888/tcp                                                         jitsi-docker-jitsi-meet-5a5b8f9-jicofo-1 

858fa232c1d2   jitsi/prosody:stable-9584-1   "/init"   9 seconds ago   Up 7 seconds   5222/tcp, 5269/tcp, 5280/tcp, 5347/tcp                                           jitsi-docker-jitsi-meet-5a5b8f9-prosody-1

At this point, the Jitsi Meet container is started and running on port 8000.

Step 6. Configure Reverse Proxy

A web server is required if you want to use a domain name instead of your server’s IP address. In this tutorial, we’ll install and use Nginx. Execute the following command to install nginx:

dnf install -y nginx

Next, start and enable the Nginx service using the following command. This will start Nginx immediately and configure it to launch automatically at boot.

systemctl enable --now nginx

Next, create an Nginx server block:

nano /etc/nginx/conf.d/jitsi.conf

Add the following lines:

upstream backend {
   server 127.0.0.1:8000;
   keepalive 32;
}

server {
  server_name   jitsi.yourdomain.com;
  location /xmpp-websocket {      
       # Timeout if the real server is dead
       proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;

       # Proxy Connection Settings
       proxy_buffers 32 4k;
       proxy_connect_timeout 240;
       proxy_headers_hash_bucket_size 128;
       proxy_headers_hash_max_size 1024;
       proxy_http_version 1.1;
       proxy_read_timeout 240;  
       proxy_redirect  http://  ws://;
       proxy_send_timeout 240;

       # Proxy Cache and Cookie Settings
       proxy_cache_bypass $cookie_session;
       proxy_no_cache $cookie_session;

       # Proxy Header Settings
       proxy_set_header Early-Data $ssl_early_data;
       proxy_set_header Host $host;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header X-Forwarded-Host $host;
       proxy_set_header X-Forwarded-Proto https;
       proxy_set_header X-Forwarded-Ssl on;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_pass http://backend/xmpp-websocket;
       proxy_set_header Connection "Upgrade";

       tcp_nodelay             on;
   }  

   location / {
       client_max_body_size 50M;
       proxy_set_header X-Frame-Options SAMEORIGIN;
       proxy_buffers 256 16k;
       proxy_buffer_size 16k;
       proxy_read_timeout 600s;
       proxy_cache_revalidate on;
       proxy_cache_min_uses 2;
       proxy_cache_use_stale timeout;
       proxy_cache_lock on;
       proxy_http_version 1.1;
       proxy_pass http://backend;
   }

    listen 80;
}

Be sure to update “jitsi.yourdomain.com” with your domain name.

Save and close the file, then reload the nginx service to apply the changes:

Need a fast and easy fix?
✔ Unlimited Managed Support
✔ Supports Your Software
✔ 2 CPU Cores
✔ 2 GB RAM
✔ 50 GB PCIe4 NVMe Disk
✔ 1854 GeekBench Score
✔ Unmetered Data Transfer
NVME 2 VPS

Now just $43 .99
/mo

GET YOUR VPS
systemctl reload nginx

Step 7. Secure Jitsi with Let’s Encrypt

Your website currently runs over the HTTP protocol. Installing a Free Let’s Encrypt SSL certificate will make our website run securely over the HTTPS protocol. Before obtaining the certificate, we must install the Python certbot for Nginx.

dnf install -y certbot python3-certbot-nginx python3-certbot

Once the certbot is installed successfully, we can obtain an SSL certificate.

To run the certbot with the Nginx plugin specifying the name of your domain, execute the following command:

certbot --nginx -d jitsi.yourdomain.com

After executing this command, you’ll need to provide several details, including your email address, agreement to the terms and conditions, your preference for sharing your email address, and any redirect options.

Saving debug log to /var/log/letsencrypt/letsencrypt.log

Plugins selected: Authenticator nginx, Installer nginx

Enter email address (used for urgent renewal and security notices) (Enter 'c' to

cancel): admin@yourdomain.com

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Please read the Terms of Service at

https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must

agree in order to register with the ACME server at

https://acme-v02.api.letsencrypt.org/directory

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Would you be willing to share your email address with the Electronic Frontier

Foundation, a founding partner of the Let's Encrypt project and the non-profit

organization that develops Certbot? We'd like to send you email about our work

encrypting the web, EFF news, campaigns, and ways to support digital freedom.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

(Y)es/(N)o: N

Obtaining a new certificate

Performing the following challenges:

http-01 challenge for jitsi.yourdomain.com

Waiting for verification...

Cleaning up challenges

Deploying Certificate to VirtualHost /etc/nginx/conf.d/jitsi.conf

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

1: No redirect - Make no further changes to the webserver configuration.

2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for

new sites, or if you're confident your site works on HTTPS. You can undo this

change by editing your web server's configuration.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/jitsi.conf

You can now access Jitsi at http://jitsi.yourdomain.com using your domain name and start working on your project. The official documentation provides more information about Jitsi, its features, and its configuration.

Of course, you don’t have to Install Jitsi on AlmaLinux 9 if you use one of our AlmaLinux VPS Hosting services, in which case you can simply ask our expert Linux admins to install and configure Jitsi on AlmaLinux 9 for you. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post on how to Install Jitsi on AlmaLinux 9, please share it with your friends on social networks or simply leave a comment in the comments section. Thanks

Leave a Comment