# Prosody fails after upgrading Ubuntu 24.04 to 26.04

> Prosody runs on whatever /usr/bin/lua points to. On a Jitsi server that is Lua 5.2, and Ubuntu 26.04 no longer ships the Lua 5.2 libraries Prosody needs, starting with LuaFileSystem. Installing lua5.4 is not enough, because lua5.2 keeps /usr/bin/lua with a higher priority. Point the lua-interpreter alternative at Lua 5.4, re-enable the Prosody and Jitsi repositories with the 26.04 Prosody suite, upgrade and restart. You do not need luarocks or a compiler.

Source: https://jitsi.help/troubleshooting/prosody-fails-after-ubuntu-26-04-upgrade/
Updated: October 6, 2026
Publisher: Jitsi Help (https://jitsi.help/)

## Symptoms

You upgraded a Jitsi server installed from the Debian packages from Ubuntu 24.04 to 26.04. Meetings no longer connect, and Prosody fails to start:

```text
prosody[1157]: A problem occurred while reading the config file /etc/prosody/prosody.cfg.lua
prosody[1157]: Error: /usr/share/lua/5.2/prosody/core/configmanager.lua:346: Error expanding wildcard pattern in Include "conf.d/*.cfg.lua" - LuaFileSystem not available
systemd[1]: prosody.service: Main process exited, code=exited, status=1/FAILURE
```

The `5.2` in the path is the clue. Depending on which command you run, the same problem can also show up as:

```text
lua: /usr/share/lua/5.2/prosody/util/startup.lua:343: module 'lfs' not found:
```

```text
lua: /usr/bin/prosody:49: module 'prosody.loader' not found:
```

```text
Prosody is no longer compatible with Lua 5.1
```

The upgrade also commented out the Jitsi and Prosody apt repositories, so `apt update` no longer offers Jitsi or Prosody updates.

## Cause

The `prosody` and `prosodyctl` commands start with `#!/usr/bin/env lua`. They run on whichever Lua `/usr/bin/lua` points to, and Debian picks that by priority:

| Package | `/usr/bin/lua` priority |
|---|---|
| `lua5.2` | 120 |
| `lua5.1` (installed with `luarocks`) | 110 |
| `lua5.4` | 20 |

Jitsi's install guide told you to install `lua5.2`, so on Ubuntu 24.04 your Prosody ran on Lua 5.2. Ubuntu 26.04 still has `lua5.2` itself, but the libraries Prosody needs (`lua-filesystem`, `lua-sec`, `lua-socket`, `lua-expat`) are now built only for Lua 5.1, 5.3 and 5.4. The first one Prosody asks for is LuaFileSystem, so that is the error you see.

Two more things keep the server stuck:

- Installing `lua5.4` does not help on its own. With priority 20 it never wins over `lua5.2`.
- Removing `lua5.2` is not enough either. Prosody recommends `luarocks`, which brings `lua5.1` with priority 110, and Prosody 13 refuses to run on Lua 5.1.

Jitsi removed the `lua5.2` step from the handbook on 2026-10-05 and closed [issue #17924](https://github.com/jitsi/jitsi-meet/issues/17924) with [PR #17928](https://github.com/jitsi/jitsi-meet/pull/17928), which drops a Lua module that was missing for Lua 5.4. Neither change switches an existing server to Lua 5.4. You do that by hand.

## Fix

Take a snapshot or backup of the server first. All commands run on the Jitsi server.

### 1. Re-enable the Jitsi and Prosody repositories

`do-release-upgrade` disables third-party sources. Open both files:

```bash
ls /etc/apt/sources.list.d/
sudoedit /etc/apt/sources.list.d/jitsi-stable.list
sudoedit /etc/apt/sources.list.d/prosody-debian-packages.list
```

Use the names you see if they differ, and rename any file the upgrade gave a `.disabled` ending. In each file, remove the `#` in front of the `deb` line. In the Prosody file, also change the release name from `noble` to `resolute`. The two lines should end up like this:

```text
deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/
deb [signed-by=/usr/share/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian resolute main
```

Keep the `signed-by` path your file already has. The Jitsi line has no release name, so it needs no other change. A Jitsi maintainer confirmed in the issue that re-enabling it is safe.

### 2. Switch Prosody to Lua 5.4

```bash
sudo apt update
sudo apt install lua5.4
sudo update-alternatives --set lua-interpreter /usr/bin/lua5.4
```

The last command puts the alternative in manual mode, so later package installs cannot move `/usr/bin/lua` back to 5.1 or 5.2.

### 3. Upgrade the packages and restart

```bash
sudo apt full-upgrade
sudo dpkg --configure -a
sudo systemctl restart prosody jicofo jitsi-videobridge2
```

This replaces the 24.04 Prosody build (`13.0.7-1~noble2`) with the 26.04 one (`13.0.7-1~resolute2`) and finishes any Jitsi package the upgrade left half configured.

### 4. Optional: remove Lua 5.2

Nothing in a current Jitsi install needs it:

```bash
sudo apt purge lua5.2
```

### Already ran the luarocks steps?

If you followed the forum recipe, modules you built with `luarocks` sit in `/usr/local` and override the packaged ones. Check:

```bash
ls /usr/local/lib/lua/5.4 /usr/local/share/lua/5.4 2>/dev/null
```

If Prosody runs, you can leave them. If you see odd module errors later, remove them with `sudo luarocks remove <name>` and rely on the packages from step 3.

### Java

Ubuntu 26.04 still has OpenJDK 17, and it adds 21. Current Jicofo and videobridge packages accept either, so the upgrade needs no Java change. Debian 13 dropped OpenJDK 17; there you need Jitsi 2.0.10888 or newer, which runs on Java 21.

## Verify

```bash
readlink -f /usr/bin/lua
sudo prosodyctl about | grep -E 'Lua version|LuaFileSystem'
sudo prosodyctl check config
systemctl is-active prosody jicofo jitsi-videobridge2
```

The first command prints `/usr/bin/lua5.4`. `prosodyctl about` shows `Lua 5.4` and a LuaFileSystem version, and each service prints `active`. `check config` lists the loaded config files. On a stock Jitsi install it ends with `Problems found` because of the deprecated `cross_domain_bosh` option, which is harmless; it may also warn about DNS or certificates. What matters is that no Lua error appears. Then join a meeting at `https://meet.example.com` from three devices.

## If it still fails

- `module 'X' not found`: find which package gives Lua 5.4 that module with `apt-cache search lua- | grep -i X`, then install it.
- `Prosody is no longer compatible with Lua 5.1`: `/usr/bin/lua` moved to 5.1. Run the `update-alternatives --set` command from step 2 again.
- Prosody starts but users get "You have been disconnected": read [our disconnect fixes](/troubleshooting/jitsi-you-have-been-disconnected/) and `sudo journalctl -u prosody -u jicofo --since "10 min ago"`.
- `apt full-upgrade` wants to remove `jitsi-meet`: stop and check that both repositories from step 1 load without errors in `sudo apt update`.

## What we have checked

On 2026-10-06 we ran the steps in Ubuntu 26.04.1 containers:

- With the 24.04 Prosody build and `lua5.2` left over, Prosody failed with `module 'lfs' not found`. Installing `lua5.4` left `/usr/bin/lua` on 5.2.
- After `update-alternatives --set lua-interpreter /usr/bin/lua5.4`, `prosodyctl check config` passed on Lua 5.4. It still passed after upgrading to the 26.04 Prosody build and removing `lua5.2`.
- A fresh `apt install jitsi-meet` (2.0.11248) failed with `lua5.2` installed, and failed with no Lua step at all because `luarocks` pulled in Lua 5.1. With Lua 5.4 pinned first, it installed cleanly and Prosody started all its services.
- With Lua 5.4 and `jitsi-meet-tokens` installed, the JWT modules loaded without errors on 26.04. On 24.04 the same setup fails with `module 'inspect' not found`, so stay on Lua 5.2 there until a stable release includes PR #17928.

## What we have not confirmed yet

- We have not run a real `do-release-upgrade` on a production Jitsi server. A container cannot run one, so the repository step is based on the issue thread and Ubuntu's documentation.
- The reporter in #17924 was unsure which Prosody build was installed after several reinstalls.

## Sources

- [jitsi-meet issue #17924 Upgrade from Ubuntu 24.04 to 26.04 breaks jitsi installation](https://github.com/jitsi/jitsi-meet/issues/17924), 2026-10-03 to 2026-10-05, community report with maintainer answers (saghul, damencho)
- [jitsi-meet PR #17928 fix(prosody): replace lua-inspect with util.serialization](https://github.com/jitsi/jitsi-meet/pull/17928), merged 2026-10-05, source code
- [Jitsi handbook commit 6d38474 docs(quickstart): drop the lua5.2 install step](https://github.com/jitsi/handbook/commit/6d38474b6709c578e0a849a9267dfe94300d86bb), 2026-10-05, official doc change
- [Jitsi handbook, Self-Hosting Guide: Debian/Ubuntu server](https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-quickstart), checked 2026-10-06, official doc
- [Ubuntu 26.04 lua-filesystem file list](https://packages.ubuntu.com/resolute/amd64/lua-filesystem/filelist), checked 2026-10-06, package record
- [Prosody package repository](https://prosody.im/download/package_repository) and [Prosody dependencies](https://prosody.im/doc/depends), checked 2026-10-06, official docs
- [jitsi-meet issue #16798 Jitsi Meet does not install on Debian Trixie](https://github.com/jitsi/jitsi-meet/issues/16798), 2025-12-28 to 2026-03-30, community report with maintainer answers
- [Ubuntu Server: upgrade your release](https://documentation.ubuntu.com/server/how-to/software/upgrade-your-release/), checked 2026-10-06, official doc
- [update-alternatives manual](https://manpages.debian.org/trixie/dpkg/update-alternatives.1.en.html), official doc

## Need a hand?

If Prosody still will not start, [contact our engineers](/contact/?topic=troubleshooting) with the output of `sudo prosodyctl about` and `sudo journalctl -u prosody --since "10 min ago"`. Our [support plans](/services/jitsi-support/) cover OS upgrades of Jitsi servers.

## Frequently asked questions

### Why does installing lua5.4 not fix it?

Debian packages pick /usr/bin/lua by priority. lua5.2 registers with priority 120 and lua5.4 with 20, so while lua5.2 is installed /usr/bin/lua stays on 5.2. Set it by hand with sudo update-alternatives --set lua-interpreter /usr/bin/lua5.4.

### Should I remove the Include line from prosody.cfg.lua?

No. The Include line is valid and loads your Jitsi host config from conf.d. The error only means the Lua running Prosody cannot load LuaFileSystem.

### Do I need luarocks, gcc or the steps from the Jitsi forum?

Not on Ubuntu 26.04. Every Lua module Jitsi needs is packaged for Lua 5.4 there. Modules built with luarocks go to /usr/local and override the packaged ones, which makes later upgrades harder to debug.

### Does this affect the Docker images?

No. docker-jitsi-meet brings its own Prosody and Lua inside the container, so upgrading the host OS does not touch them.

### Is this fixed upstream?

Partly. Jitsi closed issue #17924 with PR #17928 on 2026-10-05 and removed the lua5.2 step from the handbook the same day. Servers that already have lua5.2 still need the alternative switched by hand.


---

Jitsi Help is an independent service. It is not affiliated with, endorsed by or sponsored by 8x8, Inc. or the Jitsi project. Jitsi and Jitsi Meet are trademarks of 8x8, Inc., used here only to describe the software we host and support.
