How to install Jitsi Meet on Ubuntu 26.04 or 24.04

Short answer

Set the server's hostname to your Jitsi domain, add the Prosody and Jitsi package repositories with their signing keys, set the Lua version Prosody runs on, open 80/tcp, 443/tcp, 10000/udp, 3478/udp and 5349/tcp, then run sudo apt install jitsi-meet and choose Let's Encrypt when asked. The package installer configures Nginx, Prosody, Jicofo, the videobridge and a TURN server.

The Debian packages are the original way to install Jitsi Meet. The installer asks a few questions and wires everything together on the host: Nginx, Prosody, Jicofo, the videobridge and a TURN server.

If you want easier upgrades and isolation, use the Docker guide instead. Both end with the same Jitsi Meet.

This is a fresh-install recipe, not an in-place OS upgrade. The package sequence was reviewed against the current official quickstart on 30 October 2026. Lua-specific guidance also refers to the earlier, dated Ubuntu container investigation linked below; no fresh Ubuntu installation or real call was run for this revision. Read the component walkthrough if the service names are unfamiliar. [S1][S2]

Before you start

  • Ubuntu 26.04 or 24.04 LTS. Check the actual CPU, RAM and network needs in server requirements; an installation recipe is not a participant-capacity guarantee. The current quickstart supports Ubuntu 24.04 or newer. [S1]
  • A domain like meet.example.com with an A record pointing at the server’s public IP.
  • A user with sudo.

1. Set the hostname

Why: keep the intended server identity consistent with the domain you will configure. Check: public DNS must point to the correct server or NAT entry point; a local hosts-file entry alone does not change public DNS. [S1]

Terminal
sudo hostnamectl set-hostname meet.example.com

Add the public name to /etc/hosts so the server resolves itself:

Text
127.0.0.1   localhost
203.0.113.10 meet.example.com

2. Install prerequisites

Why: the later steps need repository-signing, download, web-server and repository-management tools. Check: resolve errors in package updates before adding more components. [S1]

Terminal
sudo apt update
sudo apt install -y gnupg2 curl apt-transport-https nginx-full software-properties-common
sudo add-apt-repository universe

3. Add the Prosody repository

Why: install a compatible Prosody from the intended package source. Check: the next apt update must load it successfully; a downloaded key alone does not establish that the repository is configured correctly. [S1]

Terminal
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

4. Set the Lua version for Prosody

Why: installing a Lua package and selecting the interpreter used by Prosody are different actions. Check: compare the actual interpreter, installed Prosody/Jitsi versions and loaded modules. If an existing installation already works, investigate before switching its runtime. [S2]

In the dated Ubuntu 26.04/Jitsi 11248 investigation, leaving the interpreter unselected allowed a Lua 5.1 dependency path that Prosody 13 could not run, and package configuration failed. Verify the interpreter actually used by your installed Prosody rather than infer it from the presence of a Lua package. [S2]

On Ubuntu 26.04, use Lua 5.4 and pin it:

Terminal
sudo apt install -y lua5.4
sudo update-alternatives --set lua-interpreter /usr/bin/lua5.4

For the Ubuntu 24.04/Jitsi 11248 combination investigated there, the working recipe used Lua 5.2:

Terminal
sudo apt install -y lua5.2

The earlier Jitsi 11248 investigation encountered module 'inspect' not found with JWT modules and Lua 5.4 on Ubuntu 24.04; its working comparison used Lua 5.2. PR #17928 merged a correction on 5 October. A merged PR alone does not establish what your installed packages contain, so recheck that version boundary before changing this recipe’s Lua choice. For the different Ubuntu 26.04 module/interpreter path and the dated test evidence, follow Prosody after upgrading to Ubuntu 26.04. [S2]

5. Add the Jitsi repository

Why: this selects the Jitsi package source. Check: apt update should complete without signature or repository errors. Preserve the distinction between a configured source and an installed/running service. [S1]

Terminal
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

6. Open the firewall

Why: browser access, media and configured TURN fallback use different paths. Check: apply the requirements to both host and upstream/cloud controls. For remote administration, preserve access on your actual SSH port before enabling a firewall; 22/tcp below is the standard-port example, not a statement about your server. [S1]

Terminal
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

3478/udp and 5349/tcp are for the bundled TURN server, which helps users behind strict corporate firewalls. Open the same ports in your cloud provider’s firewall.

7. Install Jitsi Meet

Why: the package installer configures the related services. Check: resolve a failed package configuration before testing the meeting page. The official quickstart also specifies OpenJDK 17; verify the Java/runtime packages on your chosen installation. [S1]

Terminal
sudo apt install -y jitsi-meet

The installer asks for:

  1. The hostname: enter meet.example.com.
  2. The SSL certificate: choose Let’s Encrypt, and give an email address for expiry notices.

8. Test

Open your intended trusted HTTPS address and test one authorized room with three consenting participants, including the networks your users need. Confirm arrival and audio/video reception in both directions. When P2P is enabled and succeeds, a two-person call can avoid the bridge media path, so it is not sufficient evidence of a working bridge. [S3]

What passes What still needs checking
Package installation completes Services, trusted HTTPS and the actual meeting.
The website opens Joining, admission and remote media.
Two people can talk Bridge behavior with a third participant and other networks.
Three-person functional test works Capacity, recording, phone access and all other required workflows.

If the page works but the third participant triggers media failure, use bridge diagnostics. If the certificate is untrusted, follow the TLS owner before claiming a successful install.

Where things live

Component Config
Web app /etc/jitsi/meet/meet.example.com-config.js
Nginx site /etc/nginx/sites-available/meet.example.com.conf
Prosody /etc/prosody/conf.avail/meet.example.com.cfg.lua
Jicofo /etc/jitsi/jicofo/jicofo.conf
Videobridge /etc/jitsi/videobridge/jvb.conf

Logs are in /var/log/jitsi/ and through journalctl -u jicofo -u jitsi-videobridge2 -u prosody.

Next steps

  • Require a login to create rooms. On the package install, set the Prosody virtual host to authentication = "internal_hashed" and add a guest virtual host.
  • Add JWT authentication for app integrations.
  • Keep it patched with sudo apt update && sudo apt upgrade, and test after each Jitsi upgrade.

Sources and verification limits

Recheck repository, OS, Java/Lua and package-version requirements before a later deployment. No OS upgrade, firewall, package, certificate or live-meeting change was performed in this revision.

Written by the Jitsi Help engineering team

Jitsi infrastructure engineers who deploy and run Jitsi Meet servers in production. Last updated . How we write our guides

Stuck on something this page does not cover? Ask a question below. Jitsi Help engineers read every one.

Did this guide work for you?

Something on this page is outdated or wrong?

Frequently asked questions

Should I install Jitsi with Docker or with apt packages?

Docker is easier to upgrade, pin and move between servers, and keeps every component isolated. The Debian packages integrate with the host's Nginx and systemd and include a TURN server out of the box. Pick Docker unless you have a reason to manage services directly on the host.

Can I install Jitsi on a server that already runs Nginx or Apache?

Review the existing listeners, virtual hosts and certificate ownership first. The package installer can detect an existing web server. Two independent listeners cannot bind the same address and port, so a dedicated VM is simpler than assuming a second web server can be added unchanged.

How do I uninstall Jitsi Meet installed with apt?

Run sudo apt purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-turnserver jitsi-meet-web jicofo jitsi-videobridge2, then sudo apt autoremove. Remove the Nginx site file for your domain if it remains.

Discussion

    Stuck, or would rather not do this by hand?

    Deploy it in one click

    A private Jitsi server in your own AWS account with SSL, your domain and optional recording, transcription and JWT. Free 15 minute trial.

    Start free trial

    Talk to a Jitsi engineer

    Setup, fixes, branding, recording, scaling. Tell us what is happening and we reply with a plan and a quote.

    Get expert help

    Related

    Recently updated