Multiple Jibri Instances configuration in Docker

The instructions in my guide are only for Debian Buster (10), not for Ubuntu… Don’t apply a Ubuntu machine. But it supports multiple Jibri instances.

Docker installation allows to run multiple Jibri instances but I don’t understand what causes a problem in your case.

hi Garima,
I followed these instructions:
Internal users must be created with the prosodyctl utility in the prosody container. In order to do that, first, execute a shell in the corresponding container:

docker-compose exec prosody /bin/bash

Once in the container, run the following command to create a user:

prosodyctl --config /config/prosody.cfg.lua register TheDesiredUsername meet.jitsi TheDesiredPassword

but i get this message:
Error: Account creation/modification not supported.

Please advise

Hi @Garima_Thukral ,
please could you help with this, till now I cannot record a second session. Please can you elaborate a Little bit more about your point:

Did you setup the prosody or jicofo properly and register the user’s for jibri instance ?

When i run from host :
docker-compose -f jibri.yml up -d --scale jibri=10

I get this message:
ERROR: Service 'jibri' depends on service 'jicofo' which is undefined.

I really need to solve this issue.
thanks a lot !

Hey… im having the same problem. Have found any solutions?

You need the docker-compose.yml as well, where jicofo etc is defined…

so something like this (although I’ve not managed to scale jibri properly yet)

docker-compose -f docker-compose.yml -f jibri.yml up -d --scale jibri=2

Comment the prosody lines in jibri.yml… its not necesary if youre just interested in jibri instances.

Hi @Garima_Thukral, could you please help me by sharing the steps to install multiple jibri instances in ubuntu 18.04 using docker? I donot have much knowledge about docker. I have installed a single instance using quick installation guide.

Hi,
I am trying to setup multiple jibri instances to record multiple meetings. Do you know the best possible solutions that are available?

Using docker : for Jibri only, jitsi on the other server
Recommend 8GB RAM/instance and multi CPU cores.

  1. Install docker componse
  2. Create file: jibri.yml, .env
    version: ‘3’
    services:
    jibri:
    image: jitsi/jibri
    volumes:
  • ${CONFIG}/jibri:/config
  • /dev/shm:/dev/shm
    cap_add:
  • SYS_ADMIN
  • NET_BIND_SERVICE
    devices:
  • /dev/snd:/dev/snd
    environment:
  • XMPP_AUTH_DOMAIN
  • XMPP_INTERNAL_MUC_DOMAIN
  • XMPP_RECORDER_DOMAIN
  • XMPP_SERVER
  • XMPP_DOMAIN
  • JIBRI_XMPP_USER
  • JIBRI_XMPP_PASSWORD
  • JIBRI_BREWERY_MUC
  • JIBRI_RECORDER_USER
  • JIBRI_RECORDER_PASSWORD
  • JIBRI_RECORDING_DIR
  • JIBRI_FINALIZE_RECORDING_SCRIPT_PATH
  • JIBRI_STRIP_DOMAIN_JID
  • JIBRI_LOGS_DIR
  • DISPLAY=:0
  • TZ

Env:
XMPP_AUTH_DOMAIN=auth.meet.jit.si
XMPP_INTERNAL_MUC_DOMAIN=internal.auth.meet.jit.si
XMPP_RECORDER_DOMAIN=recorder.meet.jit.si
XMPP_SERVER=meet.jit.si
XMPP_DOMAIN=meet.jit.si
JIBRI_XMPP_USER=jibri
JIBRI_XMPP_PASSWORD=your_pass (password on jitsi - prosody)
JIBRI_BREWERY_MUC=jibribrewery
JIBRI_RECORDER_USER=recorder
JIBRI_RECORDER_PASSWORD=your_pass (password on jitsi - prosody)
JIBRI_RECORDING_DIR=/config/recordings
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh
JIBRI_STRIP_DOMAIN_JID=conference
JIBRI_LOGS_DIR=/config/logs
DISPLAY=:0=

Change meet.jit.si to your jitsi domain server

  1. run docker :
    docker-compose -f jibri.yml up -d --scale jibri=10 (instances)

  2. Change .asoundrc
    docker exec -t home_jibri_1 sed -i ‘s/Loopback/1/g’ /home/jibri/.asoundrc
    docker exec -t home_jibri_2 sed -i ‘s/Loopback/2/g’ /home/jibri/.asoundrc

    to 10.

  3. create file : finalize.sh copy to /jibri/
    #!/bin/bash
    RECORDINGS_DIR=1 _lastdir=(find /config/recordings -mindepth 1 -maxdepth 1 -type d -exec stat --printf="%Y\t%n\n" {} ; | sort -n -r | head -1 | cut -f2)
    if [ -r {_lastdir} ]; then mv {_lastdir} /config/recordings/(date +%Y-%m-%d_%H:%M:%S) fi _recording=(find /config/recordings/(date +%Y-%m-%d_%H:%M:%S) -type f -name "*.mp4" -exec basename {} .mp4 \;) echo -e "Hi ,\n\nNew conference recording Docker is available:\n\n {recording}" | mailx -s “New conference recording Docker” admin@example.com
    mv /config/recordings/$(date +%Y-%m-%d
    %H:%M:%S)/*.mp4 /config/recordings/
    sleep 1m
    cd /config/recordings/
    find . -maxdepth 1 -mindepth 1 -type d -exec rm -rf ‘{}’ ;
    exit 0

  4. Stop and Start docker again.
    docker stop home_jibri_{1,2,3,4,5,6,7,8,9,10}
    docker start home_jibri_{1,2,3,4,5,6,7,8,9,10}
    Hope to help somethings.

I try to test ffmpeg with GPU (AMD - RX 480) docker but not success.