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.
Table of Contents
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:
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