> Source: https://meetrix.io/blogs/install-jitsi-meet-ubuntu/
> Markdown copy of that page. Cite the URL above, not this file.

Development

# How to Install Jitsi Meet on Ubuntu 22.04, 24.04 and 26.04

[By Hiruna Kumara](https://meetrix.io/blogs/authors/hiruna-kumara/) • September 15, 2026 • 7 min read

We used to keep a separate Jitsi Meet install guide for every Ubuntu release: 16.04, 20.04, 22.04, plus one for Debian 11. They were 90% identical, and the 10% that differed is exactly what went stale. This single guide replaces all of them and covers the three Ubuntu releases worth installing on today, with the differences called out where they matter.

The short version: the install commands are the same on 22.04, 24.04 and 26.04, as long as you use the current repository key format from the [Jitsi handbook](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart/). The old guides break mainly because of how they added those keys.

## Jitsi installation on Ubuntu 22.04 vs 24.04 vs 26.04

|  | Ubuntu 22.04 (jammy) | Ubuntu 24.04 (noble) | Ubuntu 26.04 (resolute) |
| --- | --- | --- | --- |
| Named in the Jitsi handbook | Yes, the minimum supported Ubuntu | Covered by "22.04 or newer" | Covered by "22.04 or newer", not named yet |
| Old `apt-key add` Prosody line | Works, prints a deprecation warning | Works, prints a deprecation warning | **Fails**, apt-key was removed in 25.04 |
| Prosody repository | `jammy` | `noble` | `resolute` |
| `lua5.2` and OpenJDK 17 | In the archive | In the archive | In the archive |

The Prosody codename is filled in automatically by `lsb_release -sc` in the commands below, so you never type it. If you are choosing a release for a new server today, 24.04 is the safe pick: fully covered by the handbook and, per [Ubuntu's release cycle](https://ubuntu.com/about/release-cycle), supported until 2029. 26.04 has everything Jitsi needs published, but put it through a test install before production.

## Jitsi setup checklist before you start

-   **A fresh Ubuntu server.** Jitsi installs nginx, Prosody, Jicofo and the videobridge, and it does not like sharing ports with an existing web server.
-   **A DNS name** such as `meet.example.com` with an A record pointing at the server's public IP. Browsers only allow camera access on HTTPS, and Let's Encrypt needs that name.
-   **Sizing.** A small test runs on almost anything; real meetings are limited by the videobridge's CPU and bandwidth. [What it costs to self-host Jitsi Meet](https://meetrix.io/blogs/jitsi-meet-self-hosting-cost/) has instance sizes by team size.

## Jitsi Meet install, step by step

### Step 1: Set the hostname

```bash
sudo hostnamectl set-hostname meet.example.com
hostname
```

Then add the name to `/etc/hosts` with the server's public IP, so the server resolves itself without depending on external DNS:

```bash
127.0.0.1 localhost
203.0.113.10 meet.example.com
```

### Step 2: Open the firewall

```bash
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
```

On AWS, GCP or Azure, open the same ports in the cloud security group too. It is a separate firewall and the most common reason a finished install cannot be reached. [What each Jitsi port is for](https://meetrix.io/blogs/jitsi-meet-ports/) explains which ones you can leave closed.

### Step 3: Enable universe and HTTPS repositories

```bash
sudo apt update
sudo apt install -y apt-transport-https curl gnupg
sudo add-apt-repository -y universe
sudo apt update
```

### Step 4: Add the Prosody repository

This is the step that differs from older guides. The key goes into its own keyring file and the repository line points at it with `signed-by`, which works on every release including 26.04 (Prosody documents the same layout on its [package repository page](https://prosody.im/download/package_repository)):

```bash
sudo curl -sL https://prosody.im/files/prosody-debian-packages.key -o /usr/share/keyrings/prosody-debian-packages.key
echo "deb [signed-by=/usr/share/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list
sudo apt install -y lua5.2
```

### Step 5: Add the Jitsi repository

```bash
curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo 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/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
sudo apt update
```

### Step 6: Install Jitsi Meet

```bash
sudo apt install -y jitsi-meet
```

The installer asks two questions. First the hostname: enter `meet.example.com`, exactly as in step 1. Then the certificate. Pick **[Let's Encrypt](https://letsencrypt.org/)** if DNS already points at the server and port 80 is open; the installer requests and installs the certificate for you and asks for an email address for renewal notices.

If you chose a self-signed certificate to get going, switch to Let's Encrypt later with the bundled script:

```bash
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
```

Open `https://meet.example.com`, start a room, and join from two devices. Then join from a third. That third participant is the real test, explained next.

## Jitsi Videobridge on cloud servers behind NAT

With two participants, Jitsi connects them directly and the videobridge is idle. The third participant moves the call onto the bridge. On AWS and most clouds the server only sees its private IP, so if three-way calls connect with no audio or video, tell the bridge its public address in `/etc/jitsi/videobridge/jvb.conf`:

```hocon
ice4j {
  harvest {
    mapping {
      static-mappings = [
        {
          local-address = "10.0.1.25"
          public-address = "203.0.113.10"
        }
      ]
    }
  }
}
```

```bash
sudo systemctl restart jitsi-videobridge2
```

If the bridge still misbehaves, [Jitsi Meet common errors](https://meetrix.io/blogs/jitsi-meet-common-errors/) walks through the logs for each failure.

## Fixing a server set up from an old guide

Older guides, including the ones this page replaces, added the Prosody repository with `sudo tee -a /etc/apt/sources.list` and the key with `apt-key`. On a server that went through that, check for two things before upgrading Ubuntu:

```bash
grep -n prosody /etc/apt/sources.list
apt-key list 2>/dev/null | grep -i prosody
```

-   If `sources.list` contains a Prosody line, remove it and use the `signed-by` file from step 4. Running the old command twice appended duplicate lines, which apt warns about on every update.
-   If the key is in the legacy apt-key keyring, an upgrade to 26.04 leaves the repository unverifiable. Re-add it the new way before you run `do-release-upgrade`.
-   Old guides also opened **4443/tcp**. Nothing listens there on current versions, so close it.

Debian 11 and 12

The same commands work on Debian 11 and newer, which the handbook supports. Skip `add-apt-repository universe`, which is Ubuntu-only, and on minimal Debian images install `curl` and `gnupg` first. Debian 11's long-term support ended in August 2026, so choose Debian 12 or 13 for anything new.

## Jitsi configuration after install

A fresh install lets anyone who finds the URL create meetings. Lock that down first: [Jitsi Meet security best practices](https://meetrix.io/blogs/jitsi-meet-security-best-practices/) covers room creation, lobby and ports, and [Jitsi authentication methods](https://meetrix.io/blogs/jitsi-auth-methods/) compares JWT, LDAP and SSO. If your users already have directory accounts, [Jitsi LDAP authentication](https://meetrix.io/blogs/jitsi-meet-ldap-authentication/) is the quickest of those to set up. After that, the usual additions are a [TURN server for users behind strict firewalls](https://meetrix.io/blogs/setting-up-a-turn-server-for-jitsi-meet/) and [Jibri for server-side recording](https://meetrix.io/blogs/setup-jibri-jitsi-meet-recording-ubuntu/).

## Frequently Asked Questions

Can I install Jitsi Meet on Ubuntu 26.04?

Everything the install needs is published for 26.04: the Prosody repository has a resolute distribution, and lua5.2 and OpenJDK 17 are in the archive. The Jitsi handbook says 22.04 or newer without naming 26.04 yet, so test on a VM before production.

How do I install Jitsi Meet on Ubuntu 22.04?

Set the hostname, open ports 80, 443 and UDP 10000, add the Prosody and Jitsi repositories with signed-by keyrings, then run sudo apt install jitsi-meet and pick Let's Encrypt. The same steps work unchanged on 24.04 and 26.04.

Why does the Prosody apt-key command fail on my server?

apt-key was removed in Ubuntu 25.04, so the apt-key add line from older Jitsi guides fails on 26.04. Download the key into /usr/share/keyrings and reference it with signed-by, as in step 4. That form works on 22.04 and 24.04 too.

Which ports does Jitsi Meet need?

80 and 443 TCP for the web app and certificates, 10000 UDP for the videobridge, and 22 TCP for SSH. 3478 UDP and 5349 TCP are for a TURN server. Port 4443 from older guides is no longer used.

Can I use Docker for the Jitsi installation instead?

Yes. The official docker-jitsi-meet project runs the same components as containers and is often easier to upgrade. Use the package install when you want the handbook's standard file layout, which most Jitsi tutorials and fixes assume.

Do I need a domain name to install Jitsi Meet?

In practice, yes. Browsers only allow camera and microphone access on HTTPS pages, and a free Let's Encrypt certificate needs a hostname that points at the server. An IP address with a self-signed certificate works for a quick test, but every participant gets a security warning.

Are the steps the same on Debian?

Almost. The Jitsi handbook supports Debian 11 and newer with the same Prosody and Jitsi repository commands. Skip the add-apt-repository universe step, which only exists on Ubuntu, and install curl and gnupg first on minimal Debian images.

Why does a call work with two people but fail with three?

Two participants connect peer to peer, so the videobridge is not used. The third person moves the call onto the bridge, and if UDP 10000 is blocked or the server is behind NAT without a static mapping in jvb.conf, media never arrives.

## Skip the Install: Jitsi Meet on AWS in Minutes

A pre-configured Jitsi Meet server with the NAT mapping, certificates and recording already set up for AWS.

[Get Jitsi Meet on AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-b4us3agprvuim)

Meetrix Store

Jitsi Meet

Self-hosted video calls for 50 to 500 users

[Deploy it](https://meetrix.io/store/jitsi-meet/)

Meetrix Store New

Deploy what this guide covers, pre-configured.

-    [Jitsi Meet Self-hosted video calls for 50 to 500 users](https://meetrix.io/store/jitsi-meet/)
-    [Coturn TURN/STUN for WebRTC, no per-minute relay fees](https://meetrix.io/store/coturn/)
-    [Mattermost Team chat, a self-hosted Slack alternative](https://meetrix.io/store/mattermost/)
-    [RustDesk Remote desktop AMI, a TeamViewer alternative](https://meetrix.io/store/rustdesk/)
-    [OpenVPN Encrypted remote access, no per-user fees](https://meetrix.io/store/openvpn/)
-    [Plane Issues, cycles and roadmaps, a Jira alternative](https://meetrix.io/store/plane/)

[Browse all products](https://meetrix.io/store/)
