Unable deploy separta jibri server

Hi there,

I followed this tutorial to install jibri into a separate server:

Installation seems to work ok but when I try to begin recording form jitsi-meet server I get this output:

Jicofo 2021-12-21 01:10:24.379 INFO: [22] JvbDoctor.addBridge#140: Scheduled health-check task for: jvbbrewery@internal.auth.jitsi.survoz.com/84c0d1dd-e1d9-40f4-9db8-b1c15ec8f0fc
Jicofo 2021-12-21 01:10:57.046 INFO: [37] ConferenceIqHandler.handleConferenceIq#65: Focus request for room: ppp@conference.jitsi.survoz.com
Jicofo 2021-12-21 01:10:57.062 INFO: [37] [room=ppp@conference.jitsi.survoz.com] JitsiMeetConferenceImpl.<init>#264: Created new conference.
Jicofo 2021-12-21 01:10:57.062 INFO: [37] [room=ppp@conference.jitsi.survoz.com] JitsiMeetConferenceImpl.joinTheRoom#446: Joining ppp@conference.jitsi.survoz.com
Jicofo 2021-12-21 01:10:57.142 INFO: [31] [room=ppp@conference.jitsi.survoz.com meeting_id=5d05645f-c80b-4c74-8e21-895138c3f9e4] JitsiMeetConferenceImpl.onMemberJoined#594: Member joined:63c76732
Jicofo 2021-12-21 01:10:57.145 INFO: [31] AutoOwnerRoleManager.electNewOwner#103: Electing new owner: ChatMember[ppp@conference.jitsi.survoz.com/63c76732, jid: null]@1452058613
Jicofo 2021-12-21 01:11:04.173 SEVERE: [37] JibriSession.startInternal#308: Unable to find an available Jibri, can't start
Jicofo 2021-12-21 01:11:04.173 INFO: [37] [room=ppp@conference.jitsi.survoz.com meeting_id=5d05645f-c80b-4c74-8e21-895138c3f9e4] JibriRecorder.handleStartRequest#124: Failed to start a Jibri session, no Jibris available

I am unable to know why Jitsy cannot find jibri. Any idea?

Regards

Welcome to the forum.

What are your server specs? What’s the status of Jibri? And can you share your jibri.conf?

Working with a VM Ubuntu 18.04.6 with 2048 MB RAM

Jibri is running:

● jibri.service - Jibri Process
   Loaded: loaded (/etc/systemd/system/jibri.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2021-12-21 08:40:46 UTC; 6min ago
 Main PID: 1002 (java)
    Tasks: 33 (limit: 2287)
   CGroup: /system.slice/jibri.service
           └─1002 java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file=/etc/jitsi/jibr

jitsi.conf

{
    environments = [
        {
            // A user-friendly name for this environment
            name = "prod environment"

            // A list of XMPP server hosts to which we'll connect
            xmpp-server-hosts = [ "jitsi.survoz.com" ]

            // The base XMPP domain
            xmpp-domain = "jitsi.survoz.com"

            // The MUC we'll join to announce our presence for
            // recording and streaming services
            control-muc {
                domain = "internal.auth.jitsijitsi.survoz.com"
                room-name = "JibriBrewery"
                nickname = "jibrinickname"
            }

            // The login information for the control MUC
            control-login {
                domain = "jitsi.survoz.com"
                username = "jibri"
                password = "12345678"
            }

            // An (optional) MUC configuration where we'll
            // join to announce SIP gateway services
            sip-control-muc {
                domain = "internal.auth.jitsijitsi.survoz.com"
                room-name = "JibriBrewery"
                nickname = "jibrinickname"
            }

            // The login information the selenium web client will use
            call-login {
                domain = "jitsi.survoz.com"
                username = "recorder"
                password = "12345678"
            }

            // The value we'll strip from the room JID domain to derive
            // the call URL
            strip-from-room-domain = ""

            // How long Jibri sessions will be allowed to last before
            // they are stopped.  A value of 0 allows them to go on
            // indefinitely
            usage-timeout = 1 hour

            // Whether or not we'll automatically trust any cert on
            // this XMPP domain
            trust-all-xmpp-certs = true
        }
    ]
}

No errors found at jibri log

Is there any additional step to setup in jitsi-meet server to find jibri in another phisical server?

I can see that launsh.sh file refers to config.json that but it doesn’t exist:

exec java -Djava.util.logging.config.file=/etc/jitsi/jibri/logging.properties -Dconfig.file="/etc/jitsi/jibri/jibri.conf" -jar /opt/jitsi/jibri/jibri.jar --config "/etc/jitsi/jibri/config.json"

I read that it was used in older jibri versions

Regards

Is that your complete jibri.conf? If so, it’s not at all complete. Go through these tutorials to install Jibri:

Now it works using this jibri.conf

jibri {
  // A unique identifier for this Jibri
  // TODO: eventually this will be required with no default
  id = "jibri1"
  // Whether or not Jibri should return to idle state after handling
  // (successfully or unsuccessfully) a request.  A value of 'true'
  // here means that a Jibri will NOT return back to the IDLE state
  // and will need to be restarted in order to be used again.
  single-use-mode = false
  api {
    http {
      external-api-port = 2222
      internal-api-port = 3333
    }
    xmpp {
      // See example_xmpp_envs.conf for an example of what is expected here
      environments = [
	      {
                name = "prod environment"
                xmpp-server-hosts = ["jitsi.survoz.com"]
                xmpp-domain = "jitsi.survoz.com"

                control-muc {
                    domain = "internal.auth.jitsi.survoz.com"
                    room-name = "JibriBrewery"
                    nickname = "jibri-nickname"
                }

                control-login {
                    domain = "auth.jitsi.survoz.com"
                    username = "jibri"
                    password = "12345678"
                }

                call-login {
                    domain = "recording.jitsi.survoz.com"
                    username = "recorder"
                    password = "12345678"
                }

                strip-from-room-domain = "conference."
                usage-timeout = 0
                trust-all-xmpp-certs = true
            }]
    }
  }
  recording {
    recordings-directory = "/srv/recordings"
    # TODO: make this an optional param and remove the default
    finalize-script = "/path/to/finalize_recording.sh"
  }
  streaming {
    // A list of regex patterns for allowed RTMP URLs.  The RTMP URL used
    // when starting a stream must match at least one of the patterns in
    // this list.
    rtmp-allow-list = [
      // By default, all services are allowed
      ".*"
    ]
  }
  chrome {
    // The flags which will be passed to chromium when launching
    flags = [
      "--use-fake-ui-for-media-stream",
      "--start-maximized",
      "--kiosk",
      "--enabled",
      "--disable-infobars",
      "--autoplay-policy=no-user-gesture-required"
    ]
  }
  stats {
    enable-stats-d = true
  }
  webhook {
    // A list of subscribers interested in receiving webhook events
    subscribers = []
  }
  jwt-info {
    // The path to a .pem file which will be used to sign JWT tokens used in webhook
    // requests.  If not set, no JWT will be added to webhook requests.
    # signing-key-path = "/path/to/key.pem"

    // The kid to use as part of the JWT
    # kid = "key-id"

    // The issuer of the JWT
    # issuer = "issuer"

    // The audience of the JWT
    # audience = "audience"

    // The TTL of each generated JWT.  Can't be less than 10 minutes.
    # ttl = 1 hour
  }
  call-status-checks {
    // If all clients have their audio and video muted and if Jibri does not
    // detect any data stream (audio or video) comming in, it will stop
    // recording after NO_MEDIA_TIMEOUT expires.
    no-media-timeout = 30 seconds

    // If all clients have their audio and video muted, Jibri consideres this
    // as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
    all-muted-timeout = 10 minutes

    // When detecting if a call is empty, Jibri takes into consideration for how
    // long the call has been empty already. If it has been empty for more than
    // DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
    default-call-empty-timeout = 30 seconds
  }
}

It stops after some seconds recondig so I will investigate it…

Thankyou @Freddie

What are the specs (CPU, RAM) of the server?

It is running into a VMware vm having 3GB RAM and 4 cores. After some reading it seems to be a problem with ffmpeg and CPU. Having one sigle meet user ffmpeg needs 120% CPU and 70% for Chrome. I think they are very high. Recording is configured at 720p. After some minutes, it begins to eat RAM and crashes.

Host browser needs about 20% only.

Which are recommended specs to run a Jitbri instance?

Yes, that’s too low. Jibri now defaults to 1080p resolution, so you need even higher specs to run it. I’d say go with 4 CPU/8GB RAM.

You can alternatively downscale Jibri’s resolution to 720p, but even then, you’ll still need at least 4CPU/4GB RAM.