Jibri - Internal Server Error when you click "Start recording"

Greetings.
My Jisti starts ok. I check the logs and everything is ok. But when i click start recording, I get several errors:

/var/log/jisti/jibri/log.txt

2020-09-01 12:16:11.028 FINE: [17] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2020-09-01 12:17:01.599 INFO: [47] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq from environment [MucClient id=IPADDRESS hostname=IPADDRESS]
2020-09-01 12:17:01.600 INFO: [47] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
2020-09-01 12:17:01.601 SEVERE: [47] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Error starting Jibri service : org.jitsi.jibri.util.CallUrlInfoFromJidException: Unable to extract call url info from Jid [testmeeting@conference.domain.com](mailto:testmeeting@conference.domain.com) (stripFromRoomDomain = conference., xmppDomain = IPADDRESS) with stack:
org.jitsi.jibri.util.XmppUtilsKt.getCallUrlInfoFromJid(XmppUtils.kt:47)
org.jitsi.jibri.api.xmpp.XmppApi.handleStartService(XmppApi.kt:279)
org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq(XmppApi.kt:194)
org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq(XmppApi.kt:167)
org.jitsi.jibri.api.xmpp.XmppApi.handleIq(XmppApi.kt:149)
org.jitsi.xmpp.mucclient.MucClient.handleIq(MucClient.java:569)
org.jitsi.xmpp.mucclient.MucClient.access$800(MucClient.java:50)
org.jitsi.xmpp.mucclient.MucClient$2.handleIQRequest(MucClient.java:533)
org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

2020-09-01 12:17:11.028 FINE: [17] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status

at /var/log/jisti/jicofo.log i get this error;

Jicofo 2020-09-01 12:44:39.502 INFO: [31] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting session with Jibri jibribrewery@internal.auth.domain.com/jibri-nickname
Jicofo 2020-09-01 12:44:39.503 INFO: [31] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting Jibri jibribrewery@internal.auth.domain.com/jibri-nickname for stream ID: null in room: testmeeting@conference.domain.com
Jicofo 2020-09-01 12:44:39.513 SEVERE: [31] org.jitsi.jicofo.recording.jibri.JibriSession.log() Unexpected status received in response to the start IQ: <iq to='focus@auth.domain.com/focus19066310502267' from='jibribrewery@internal.auth.domain.com/jibri-nickname' id='hSl2l-243' type='result'><jibri xmlns='http://jitsi.org/protocol/jibri' status='off' failure_reason='error' should_retry='true'/></iq>
Jicofo 2020-09-01 12:44:39.513 SEVERE: [31] org.jitsi.jicofo.recording.jibri.JibriSession.log() Failed to send start Jibri IQ: org.jitsi.jicofo.recording.jibri.JibriSession$StartException: Unexpected response
org.jitsi.jicofo.recording.jibri.JibriSession$StartException: Unexpected response
	at org.jitsi.jicofo.recording.jibri.JibriSession.sendJibriStartIq(JibriSession.java:595)
	at org.jitsi.jicofo.recording.jibri.JibriSession.startInternal(JibriSession.java:370)
	at org.jitsi.jicofo.recording.jibri.JibriSession.start(JibriSession.java:335)
	at org.jitsi.jicofo.recording.jibri.JibriRecorder.handleStartRequest(JibriRecorder.java:178)
	at org.jitsi.jicofo.recording.jibri.CommonJibriStuff.handleIQRequest(CommonJibriStuff.java:271)
	at org.jitsi.jicofo.recording.jibri.OperationSetJibri.handleIQRequest(OperationSetJibri.java:98)
	at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)
Jicofo 2020-09-01 12:44:39.515 INFO: [31] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session:Internal server error
org.jitsi.jicofo.recording.jibri.JibriSession$StartException: Internal server error
	at org.jitsi.jicofo.recording.jibri.JibriSession.startInternal(JibriSession.java:376)
	at org.jitsi.jicofo.recording.jibri.JibriSession.start(JibriSession.java:335)
	at org.jitsi.jicofo.recording.jibri.JibriRecorder.handleStartRequest(JibriRecorder.java:178)
	at org.jitsi.jicofo.recording.jibri.CommonJibriStuff.handleIQRequest(CommonJibriStuff.java:271)
	at org.jitsi.jicofo.recording.jibri.OperationSetJibri.handleIQRequest(OperationSetJibri.java:98)
	at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

I will appreciate any help @corby , @damencho

Here’s the code that does this extraction: https://github.com/jitsi/jibri/blob/master/src/main/kotlin/org/jitsi/jibri/util/XmppUtils.kt. Is xmppDomain an IP address? I think it needs to be a hostname for that to work.

Hi.

We are getting following error during Jibri Recording:

Jicofo 2020-10-27 15:57:06.663 INFO: [336] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Failed to start a Jibri session:Internal server error
org.jitsi.jicofo.recording.jibri.JibriSession$StartException: Internal server error
at org.jitsi.jicofo.recording.jibri.JibriSession.startInternal(JibriSession.java:376)
at org.jitsi.jicofo.recording.jibri.JibriSession.start(JibriSession.java:335)
at org.jitsi.jicofo.recording.jibri.JibriRecorder.handleStartRequest(JibriRecorder.java:178)
at org.jitsi.jicofo.recording.jibri.CommonJibriStuff.handleIQRequest(CommonJibriStuff.java:271)
at org.jitsi.jicofo.recording.jibri.OperationSetJibri.handleIQRequest(OperationSetJibri.java:98)
at org.jivesoftware.smack.AbstractXMPPConnection$4.run(AbstractXMPPConnection.java:1188)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)

Hi Christopher,
Your Jibri issue is resolved or not? If resolved do send me steps.

Regards,
Subodh

same issue occurred while recording…

@Sujeeb_Palikhel and @subodhs, do you have jibri.conf configured properly? You might want to check out this guide - TUTORIAL: Jibri Overview, Troubleshooting Tips & Tricks - Solve your Jibri Problems, Quickly!

Go through the Troubleshooting section; it will likely help you resolve your Jibri issues.

@Freedie @subhods
I’m facing same issue, I’m using jibri.conf as per new releases and not using the config.json file:

here are my logs:

2021-04-29 19:50:51.020 INFO: [1] org.jitsi.jibri.Main.log() Jibri run with args [--config, /etc/jitsi/jibri/config.json]
2021-04-29 19:50:51.220 INFO: [1] org.jitsi.jibri.Main.log() Checking legacy config file /etc/jitsi/jibri/config.json
2021-04-29 19:50:51.220 INFO: [1] org.jitsi.jibri.Main.log() Legacy config file /etc/jitsi/jibri/config.json doesn't exist
2021-04-29 19:50:51.451 INFO: [1] org.jitsi.jibri.Main.log() Jibri starting up with id netvest1
2021-04-29 19:50:53.531 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() got jwtConfig: {}

2021-04-29 19:50:53.531 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: /etc/jitsi/jibri/jibri.conf: 79: No configuration setting found for key 'signing-key-path'
2021-04-29 19:50:53.682 INFO: [1] org.jitsi.jibri.Main.log() Using port 3333 for internal HTTP API
2021-04-29 19:50:53.696 FINE: [17] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-04-29 19:50:54.274 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2021-04-29 19:50:54.280 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Connecting to xmpp environment on netvest-meet.com with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[netvest-meet.com], xmppDomain=netvest-meet.com, controlLogin=XmppCredentials(domain=auth.netvest-meet.com, username=jibri, password=jibriauthpass), controlMuc=XmppMuc(domain=internal.auth.netvest-meet.com, roomName=JibriBrewery, nickname=jibri-nickname), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.netvest-meet.com, username=recorder, password=jibrirecorderpass), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)
2021-04-29 19:50:54.280 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be accepted
2021-04-29 19:50:54.295 INFO: [1] org.jitsi.jibri.Main.log() Using port 2222 for HTTP API
2021-04-29 19:50:54.296 WARNING: [26] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2021-04-29 19:50:54.624 INFO: [26] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2021-04-29 19:50:54.624 INFO: [26] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2021-04-29 19:50:54.681 INFO: [26] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.netvest-meet.com
2021-04-29 19:50:56.431 INFO: [43] org.jitsi.jibri.api.http.internal.InternalHttpApi.log() Jibri gracefully shutting down
2021-04-29 19:50:56.452 INFO: [46] org.jitsi.jibri.Main.log() Jibri has been told to graceful shutdown, waiting to be idle before exiting
2021-04-29 19:50:56.452 INFO: [46] org.jitsi.jibri.Main.log() Jibri is idle and has been told to gracefully shutdown, exiting

Also here’s my jibri.conf file, I even checked this link for troubleshooting and everything seems to be fine, also Ive added 777 permissions too! Not sure what’s happening wrong here

jibri {
  // A unique identifier for this Jibri
  // TODO: eventually this will be required with no default
  id = "netvest1"
  // 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 = ["netvest-meet.com"]
                xmpp-domain = "netvest-meet.com"

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

                control-login {
                    domain = "auth.netvest-meet.com"
                    username = "jibri"
                    password = "jibriauthpass"
                }

                call-login {
                    domain = "recorder.netvest-meet.com"
                    username = "recorder"
                    password = "jibrirecorderpass"
                }

                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
      ".*"
    ]
  }
  ffmpeg {
    resolution = "1920x1080"
    // The audio source that will be used to capture audio on Linux
    audio-source = "alsa"
    // The audio device that will be used to capture audio on Linux
    audio-device = "plug:bsnoop"
  }
  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",
      "--ignore-certificate-errors"
    ]
  }
  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
  }
}