Skip to content

Instantly share code, notes, and snippets.

@dimaskiddo
Last active January 9, 2024 16:05
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save dimaskiddo/227ce11b6fdcce4128ec3f60af18a271 to your computer and use it in GitHub Desktop.
Save dimaskiddo/227ce11b6fdcce4128ec3f60af18a271 to your computer and use it in GitHub Desktop.
Jitsi Jibri Setup Guide

How to Install Jitsi Jibri for Cloud Recording

Following tutorial will guide you to install Jitsi Jibri for Cloud Recording in your own on-premises, cloud, or dedicated servers.

This guide is using Ubuntu 16.04 LTS as the operating system, to start the installation you can follow the guide below.

Escalate Privileged

Before we begin you must make sure that you own the administration / root permission access by running following command:

sudo su

Installing Jibri

Automatic Installation

wget -qO - https://gist.githubusercontent.com/dimaskiddo/da6dfe184ce54db7293f128cf8eb7039/raw/61e1b02a4877d637edc8518d6e201e7424f1e1d9/jitsi-jibri-setup.sh | bash -e -

Configure Jibri

mv /etc/jitsi/jibri/config.json /etc/jitsi/jibri/config.json.orig~
nano /etc/jitsi/jibri/config.json
// Add following line
...
{
    "recording_directory":"/srv/recordings",
    "finalize_recording_script_path": "/bin/true",
    "xmpp_environments": [{
          "name": "your-domain-name",
          "xmpp_server_hosts": [
            "your-domain-name"
          ],
          "xmpp_domain": "your-domain-name",
          "control_login": {
            "domain": "auth.your-domain-name",
            "username": "jibri",
            "password": "<your_jibri_password>"
          },
          "control_muc": {
            "domain": "internal.auth.your-domain-name",
            "room_name": "JibriBrewery",
            "nickname": "<your_jibri_nickname>"
          },
          "call_login": {
            "domain": "recorder.your-domain-name",
            "username": "recorder",
            "password": "<your_recorder_password>"
          },
          "room_jid_domain_string_to_strip_from_start": "conference.",
          "usage_timeout": "0"
      }]
}
...

Restart Jibri Service

systemctl restart jibri
systemctl status jibri

View Jibri Log

tail -n 100 -f /var/log/jitsi/jibri/log.0.txt

Re-Configure Prosody

Configure Prosody

nano /etc/prosody/conf.d/your-domain-name.cfg.luga
-- Add or change to following line
...
Component "internal.auth.your-domain-name" "muc"
    storage = "memory"
    modules_enabled = {
      "ping";
    }
    muc_room_cache_size = 1000
...

-- Add following line
...
VirtualHost "recorder.your-domain-name"
    modules_enabled = {
        "ping";
    }
    c2s_require_encryption = false
    authentication = "internal_plain"
...

Restart Prosody Service

systemctl restart prosody
systemctl status prosody

Register Jibri Prosody Account

prosodyctl register jibri auth.your-domain-name <your_jibri_password>
prosodyctl register recorder recorder.your-domain-name <your_recorder_password>

Re-Configure Jicofo

Configure Jicofo

nano /etc/jitsi/jicofo/sip-communicator.properties
# Add following line
...
org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.your-domain-name
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
...

Restart Jicofo Service

systemctl restart jicofo
systemctl status jicofo

Re-Configure Jitsi Meet

Configure Jitsi Meet

nano /etc/jitsi/meet/your-domain-name-config.js
// Find and change following line
....
fileRecordingsEnabled: true,
liveStreamingEnabled: true,
...

// Add following line
...
hiddenDomain: 'recorder.your-domain-name',
...

Enable Recording and Live Streaming Button

nano /usr/share/jitsi-meet/interface_config.js
// Make sure 'recording' and 'livestreaming' are available in TOOLBAR_BUTTONS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment