Jitsi recording not working: Jibri errors and fixes

Short answer

Most Jibri failures have one of four causes: Chrome cannot load the meeting page (untrusted certificate or unreachable URL), the snd-aloop kernel module is missing (always on AWS's linux-aws kernel), the recorder's XMPP domain or passwords do not match the Jitsi server, or every Jibri is already busy. Check docker compose logs jibri for the exact message and match it below.

Start with the logs. Jibri is chatty and usually says exactly what went wrong:

Terminal
docker compose -f docker-compose.yml -f jibri.yml logs --tail 200 jibri

Then match what you see.

“Timed out waiting for call page to load”

Jibri opens the meeting in headless Chrome. This error means the page never finished loading.

Cause A: an untrusted certificate. On a server reached by IP, the stack serves a self-signed certificate. A human can click through the warning; Jibri cannot. We saw every recording fail this way on IP-only test servers. Fix it with a real domain and certificate, or for IP-only servers set this in .env and recreate Jibri:

Config
IGNORE_CERTIFICATE_ERRORS=1

Cause B: the recorder cannot reach the public URL. A dedicated recorder must resolve and reach PUBLIC_URL on 443. Test from the recorder: curl -I https://meet.example.com.

Recording starts, then stops, or has no audio

Jibri captures audio from the ALSA loopback device.

Terminal
lsmod | grep snd_aloop || echo "snd-aloop not loaded"
sudo modprobe -n snd-aloop && echo available || echo missing

On AWS, Ubuntu’s linux-aws kernel does not include snd-aloop at all. Install linux-generic, make it the GRUB default and reboot once. Steps are in Jitsi on AWS.

With several Jibri instances, give the module enough devices and substreams:

Terminal
echo "options snd-aloop enable=1,1,1 index=0,1,2 pcm_substreams=8" | sudo tee /etc/modprobe.d/jibri-aloop.conf

The Record button does nothing, or “Recording unavailable”

If the control is missing only in a mobile app or SDK, start with the mobile recording checklist. It distinguishes client flags and version-specific permission handling from a Jibri failure. That checklist is source-reviewed, without a completed mobile recording test.

No idle Jibri. One Jibri records one meeting. If another meeting is recording, the next request has nobody to take it. Scale up the number of Jibri instances.

The recorder cannot log in. In the Jibri logs, look for authentication errors. These values must be identical on the Jitsi server and every recorder:

  • XMPP_RECORDER_DOMAIN
  • JIBRI_RECORDER_PASSWORD
  • JIBRI_XMPP_PASSWORD

We pin XMPP_RECORDER_DOMAIN explicitly on both sides. Relying on each side’s default is how a mismatch sneaks in after an upgrade.

A dedicated recorder cannot reach Prosody. It needs 5222/tcp on the Jitsi server. Allow it only from the recorder (on AWS, from the recorder’s security group) and confirm the Prosody container publishes the port. A recorder that retries “Error connecting” forever is almost always this.

Recordings never reach S3

If you upload with a finalize script and a timer:

  • The finalize script must be executable and at the path in JIBRI_FINALIZE_RECORDING_SCRIPT_PATH.
  • The host must have credentials: on AWS an instance profile with s3:PutObject on the bucket.
  • Check the uploader’s own logs with journalctl -u recording-upload.

The server struggles while recording

Each recording keeps about two CPU cores busy with Chrome and ffmpeg. On a small shared server, meetings get choppy during recording. Move Jibri to its own server (a c5.large per concurrent recording is a good start on AWS).

Want it working today?

Send us your Jibri logs and we will fix it, or see our recording setup service. On our one-click platform, recording is a tested $39 add-on that handles all of the above.

Written by the Jitsi Help engineering team

Jitsi infrastructure engineers who deploy and run Jitsi Meet servers in production. The steps on this page are tested on Jitsi Meet stable-11031. 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 fix it?

Something on this page is outdated or wrong?

Collect debug info

These commands gather what an engineer needs to diagnose a Jitsi server. Copy them, run them, and keep the output.

Terminal
# Run on the server, from your docker-jitsi-meet folder

# 1. Every service should be "running" (or "healthy")
docker compose ps

# 2. Which images and release tags are running
docker compose images

# 3. Recent logs from the core services
docker compose logs --tail=200 web prosody jicofo jvb

# 4. The settings most fixes depend on
grep -E '^(PUBLIC_URL|JVB_ADVERTISE_IPS|ENABLE_LETSENCRYPT|ENABLE_AUTH|AUTH_TYPE)=' .env

# 5. Is anything listening for media on UDP 10000?
sudo ss -ulnp | grep 10000

Installed with the Debian packages instead of Docker? Read the service logs with:

Terminal
sudo journalctl -u prosody -u jicofo -u jitsi-videobridge2 --since "1 hour ago"

Remove passwords, secrets and tokens before you share any output.

Send the output to an engineer

Frequently asked questions

What does 'Timed out waiting for call page to load' mean?

Jibri's headless Chrome could not open the meeting page. The usual cause is a self-signed certificate on an IP-only server, which Chrome refuses. Use a real certificate, or set IGNORE_CERTIFICATE_ERRORS=1 for Jibri. Also check the recorder can reach the server's public URL.

Why is my Jitsi recording silent?

Jibri records audio from the ALSA loopback device created by the snd-aloop kernel module. If the module is missing, or has too few substreams for the number of Jibri instances, recordings fail or have no sound.

Why does the Record button do nothing?

Either no Jibri is registered and idle, or the recorder cannot log in to Prosody. Check that XMPP_RECORDER_DOMAIN, JIBRI_RECORDER_PASSWORD and JIBRI_XMPP_PASSWORD are identical on the Jitsi server and the recorder.

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