[SOLVED] JIbri failed, something strange in logs (jicofo, jibri)

NOTE: This issue with Jibri was related to incorrectly configured xmpp-domain names between prosody and jibri

Hi, when I started recording, I’m getting message that recording is going to be initialized, but after a few seconds, jitsi meet tells that it was failed.

Something strange I can see in the jicofo log. After recording button is clicked, I’ve observing jicofo logs and see this

Jicofo 2023-02-12 10:22:51.408 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az
Jicofo 2023-02-12 10:22:56.515 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az
Jicofo 2023-02-12 10:23:01.593 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az
Jicofo 2023-02-12 10:23:06.666 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az
Jicofo 2023-02-12 10:23:11.738 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az
Jicofo 2023-02-12 10:23:16.818 INFO: [43] ConferenceIqHandler.handleConferenceIq#69: Focus request for room: room1@conference.vs1.vs1.zenget.az

Focus request

 "room1@conference.**vs1.vs1**.zenget.az

Don’t understand, why vs1 is reflected in the logs two times.

xmpphost = zenget.az
xmpp-domain = vs1.zenget.az

On the Jibri side, there are some interesting in the browser.logs

"args": [ {
      "type": "string",
      "value": "2023-02-12T10:23:11.727Z"
   }, {
      "type": "string",
      "value": "[modules/xmpp/moderator.js]"
   }, {
      "type": "string",
      "value": "Sending conference request over XMPP to focus.vs1.zenget.az"
   } ],

after that I see this

 "args": [ {
      "type": "string",
      "value": "2023-02-12T10:23:11.752Z"
   }, {
      "type": "string",
      "value": "[modules/xmpp/moderator.js]"
   }, {
      "type": "string",
      "value": "\u003CDr._handleError>: "
   }, {
      "type": "string",
      "value": "Unauthorized to start the conference"
   } ],

and then this

"args": [ {
      "type": "string",
      "value": "2023-02-12T10:23:11.776Z"
   }, {
      "type": "string",
      "value": "[conference.js]"
   }, {
      "type": "string",
      "value": "\u003CFue._onConferenceFailed>: "
   }, {
      "type": "string",
      "value": "CONFERENCE FAILED:"
   }, {
      "type": "string",
      "value": "conference.authenticationRequired"
   } ],

After this error, there is a reference to method isJoined

"args": [  ],
   "script": "                        try {\n                            return APP.conference._room.isJoined();\n                        } catch (e) {\n                            return e.message;\n                        }"
}

continue by this error

"args": [ {
      "type": "string",
      "value": "2023-02-12T10:23:17.854Z"
   }, {
      "type": "string",
      "value": "[features/base/lastn]"
   }, {
      "type": "string",
      "value": "There is no active conference, not updating last N"
   } ],

and finally I got this

  "level": "SEVERE",
   "message": "https://zenget.az/libs/app.bundle.min.js?v=139 177:2097630 \"2023-02-12T10:23:01.630Z\" \"[conference.js]\" \"\\u003CFue._onConferenceFailed>: \" \"CONFERENCE FAILED:\" \"conference.authenticationRequired\"",
   "source": "console-api",
   "timestamp": 1.676197381632e+12
}, {
   "level": "WARNING",
   "message": "https://zenget.az/libs/lib-jitsi-meet.min.js?v=139 1:33876 \"2023-02-12T10:23:06.680Z\" \"[modules/xmpp/moderator.js]\" \"\\u003CDr._handleError>: \" \"Unauthorized to start the conference\"",
   "source": "console-api",
   "timestamp": 1.676197386681e+12
}, {
   "level": "SEVERE",
   "message": "https://zenget.az/libs/app.bundle.min.js?v=139 177:2097630 \"2023-02-12T10:23:06.699Z\" \"[conference.js]\" \"\\u003CFue._onConferenceFailed>: \" \"CONFERENCE FAILED:\" \"conference.authenticationRequired\"",
   "source": "console-api",
   "timestamp": 1.676197386701e+12
}, "..." ]

Please don’t tag people in your requests for help unless they’re already helping you with the specific issue.

Are you able to successfully host a meeting with 3 participants? Share your full Jibri logs.

Hi @Freddie,

Yes, you’re right, my fault, I’ve removed tags.

Are you able to successfully host a meeting with 3 participants

Yes, I can.

Share your full Jibri logs.

Here is:

2023-02-12 11:01:31.094 INFO: [1] MainKt.handleCommandLineArgs#186: Jibri run with args [--config, /etc/jitsi/jibri/config.json]
2023-02-12 11:01:31.204 INFO: [1] MainKt.setupLegacyConfig#211: Checking legacy config file /etc/jitsi/jibri/config.json
2023-02-12 11:01:31.212 INFO: [1] MainKt.setupLegacyConfig#214: Legacy config file /etc/jitsi/jibri/config.json doesn't exist
2023-02-12 11:01:31.571 INFO: [1] MainKt.main#55: Jibri starting up with id jibri01
2023-02-12 11:01:32.000 INFO: [1] JwtInfo$Companion.fromConfig#176: got jwtConfig: {}

2023-02-12 11:01:32.001 INFO: [1] JwtInfo$Companion.fromConfig#186: Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: /etc/jitsi/jibri/jibri.conf: 91: No configuration setting found for key 'signing-key-path'
2023-02-12 11:01:32.003 FINE: [1] RefreshingProperty.getValue#47: Refreshing property jwt (not yet initialized or expired)...
2023-02-12 11:01:32.164 INFO: [1] MainKt.main#125: Using port 3333 for internal HTTP API
2023-02-12 11:01:32.166 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:01:32.619 INFO: [1] XmppApi.updatePresence#209: Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2023-02-12 11:01:32.690 INFO: [1] XmppApi.start#156: Connecting to xmpp environment on zenget.az with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[zenget.az], xmppDomain=zenget.az, baseUrl=null, controlLogin=XmppCredentials(domain=auth.vs1.zenget.az, port=null, username=jibri, password=*****), controlMuc=XmppMuc(domain=internal.auth.vs1.zenget.az, roomName=JibriBrewery, nickname=jibri01), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.vs1.zenget.az, port=null, username=recorder, password=*****), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true, securityMode=null)
2023-02-12 11:01:32.691 INFO: [1] XmppApi.start#174: The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be accepted
2023-02-12 11:01:32.735 INFO: [1] MainKt.main#152: Using port 2222 for HTTP API
2023-02-12 11:01:32.758 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient.initializeConnectAndJoin#279: Initializing a new MucClient for [ org.jitsi.xmpp.mucclient.MucClientConfiguration id=zenget.az domain=auth.vs1.zenget.az hostname=zenget.az port=null username=jibri mucs=[jibribrewery@internal.auth.vs1.zenget.az] mucNickname=jibri01 disableCertificateVerification=true]
2023-02-12 11:01:32.782 WARNING: [33] MucClient.createXMPPTCPConnectionConfiguration#115: Disabling certificate verification!
2023-02-12 11:01:32.815 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient.initializeConnectAndJoin#341: Dispatching a thread to connect and login.
2023-02-12 11:01:33.101 FINE: [33] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: xmpp-connected:xmpp_server_host:zenget.az
2023-02-12 11:01:33.102 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient$2.connected#312: Connected.
2023-02-12 11:01:33.102 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient.lambda$getConnectAndLoginCallable$9#637: Logging in.
2023-02-12 11:01:33.260 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient$2.authenticated#318: Authenticated, b=false
2023-02-12 11:01:33.348 INFO: [33] [hostname=zenget.az id=zenget.az] MucClient$MucWrapper.join#761: Joined MUC: jibribrewery@internal.auth.vs1.zenget.az
2023-02-12 11:02:19.102 INFO: [48] XmppApi.handleJibriIq#236: Received JibriIq <iq xmlns='jabber:client' to='jibri@auth.vs1.zenget.az/i9sryz9E' from='jibribrewery@internal.auth.vs1.zenget.az/focus' id='amlicmlAYXV0aC52czEuemVuZ2V0LmF6L2k5c3J5ejlFADZKQzI2LTQ5NwARKXCK9HfMxqg6D8MHne5R' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='room1@conference.vs1.zenget.az' session_id='mvrmdyujwkxylxgc' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=zenget.az hostname=zenget.az]
2023-02-12 11:02:19.103 INFO: [48] XmppApi.handleStartJibriIq#268: Received start request, starting service
2023-02-12 11:02:19.275 INFO: [48] XmppApi.handleStartService#379: Parsed call url info: CallUrlInfo(baseUrl=https://zenget.az/vs1, callName=room1, urlParams=[])
2023-02-12 11:02:19.290 INFO: [48] JibriManager.startFileRecording#138: Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://zenget.az/vs1, callName=room1, urlParams=[]), email='', passcode=null, callStatsUsernameOverride=, displayName=), sessionId=mvrmdyujwkxylxgc, callLoginParams=XmppCredentials(domain=recorder.vs1.zenget.az, port=null, username=recorder, password=*****))
2023-02-12 11:02:19.323 FINE: [48] [session_id=mvrmdyujwkxylxgc] FfmpegCapturer.<init>#92: Detected os as OS: LINUX
2023-02-12 11:02:20.078 INFO: [48] org.openqa.selenium.remote.ProtocolHandshake.createSession: Detected dialect: OSS
2023-02-12 11:02:20.100 INFO: [48] [session_id=mvrmdyujwkxylxgc] FileRecordingJibriService.<init>#134: Writing recording to /srv/recordings/mvrmdyujwkxylxgc, finalize script path /opt/jitsi/jibri/finalize_recording.sh
2023-02-12 11:02:20.119 FINE: [48] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: start:recording
2023-02-12 11:02:20.120 INFO: [48] JibriStatusManager$special$$inlined$observable$1.afterChange#72: Busy status has changed: IDLE -> BUSY
2023-02-12 11:02:20.121 FINE: [48] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:02:20.121 INFO: [48] XmppApi.updatePresence#209: Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2023-02-12 11:02:20.123 INFO: [48] XmppApi.handleStartJibriIq#281: Sending 'pending' response to start IQ
2023-02-12 11:02:20.126 INFO: [58] AbstractPageObject.visit#32: Visiting url https://zenget.az/vs1
2023-02-12 11:02:23.180 INFO: [58] AbstractPageObject.visit#38: Waited 3.051607478s for driver to load page
2023-02-12 11:02:23.282 INFO: [58] AbstractPageObject.visit#32: Visiting url https://zenget.az/vs1/room1#config.iAmRecorder=true&config.externalConnectUrl=null&config.startWithAudioMuted=true&config.startWithVideoMuted=true&interfaceConfig.APP_NAME="Jibri"&config.analytics.disabled=true&config.p2p.enabled=false&config.prejoinPageEnabled=false&config.prejoinConfig.enabled=false&config.requireDisplayName=false
2023-02-12 11:02:24.046 INFO: [58] AbstractPageObject.visit#38: Waited 764.082414ms for driver to load page
2023-02-12 11:02:24.075 FINE: [58] CallPage.visit$lambda-2$lambda-1#58: Not joined yet: Cannot read properties of undefined (reading 'isJoined')
2023-02-12 11:02:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:02:54.372 SEVERE: [58] CallPage.visit#65: Timed out waiting for call page to load
2023-02-12 11:02:54.393 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.onSeleniumStateChange#216: Transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2023-02-12 11:02:54.395 INFO: [58] [session_id=mvrmdyujwkxylxgc] StatefulJibriService.onServiceStateChange#39: File recording service transitioning from state Starting up to Error: FailedToJoinCall SESSION Failed to join the call
2023-02-12 11:02:54.398 INFO: [58] XmppApi$createServiceStatusHandler$1.invoke#317: Current service had an error Error: FailedToJoinCall SESSION Failed to join the call, sending error iq <iq xmlns='jabber:client' to='jibribrewery@internal.auth.vs1.zenget.az/focus' id='5FYL1-10' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='off' failure_reason='error' should_retry='true'/></iq>
2023-02-12 11:02:54.399 FINE: [58] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: stop:recording
2023-02-12 11:02:54.400 INFO: [58] JibriManager.stopService#260: Stopping the current service
2023-02-12 11:02:54.400 INFO: [58] [session_id=mvrmdyujwkxylxgc] FileRecordingJibriService.stop#182: Stopping capturer
2023-02-12 11:02:54.401 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSubprocess.stop#75: Stopping ffmpeg process
2023-02-12 11:02:54.402 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSubprocess.stop#89: ffmpeg exited with value null
2023-02-12 11:02:54.402 INFO: [58] [session_id=mvrmdyujwkxylxgc] FileRecordingJibriService.stop#184: Quitting selenium
2023-02-12 11:02:54.403 INFO: [58] [session_id=mvrmdyujwkxylxgc] FileRecordingJibriService.stop#191: No media was recorded, deleting directory and skipping metadata file & finalize
2023-02-12 11:02:54.403 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#338: Leaving call and quitting browser
2023-02-12 11:02:54.404 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#341: Recurring call status checks cancelled
2023-02-12 11:02:54.436 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#347: Got 21 log entries for type browser
2023-02-12 11:02:54.581 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#347: Got 1011 log entries for type driver
2023-02-12 11:02:54.739 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#347: Got 0 log entries for type client
2023-02-12 11:02:54.739 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#356: Leaving web call
2023-02-12 11:02:59.766 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#363: Quitting chrome driver
2023-02-12 11:02:59.856 INFO: [58] [session_id=mvrmdyujwkxylxgc] JibriSelenium.leaveCallAndQuitBrowser#365: Chrome driver quit
2023-02-12 11:02:59.857 INFO: [58] JibriStatusManager$special$$inlined$observable$1.afterChange#72: Busy status has changed: BUSY -> IDLE
2023-02-12 11:02:59.857 FINE: [58] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:02:59.857 INFO: [58] XmppApi.updatePresence#209: Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2023-02-12 11:03:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:04:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:05:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:06:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:07:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:08:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:09:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:10:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:11:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:12:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:13:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:14:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:15:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:16:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:17:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:18:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:19:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
2023-02-12 11:20:32.135 FINE: [20] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status

Looks like there are access issues.
Share your jibri.conf.

Here is the config

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


            control-muc {
                domain = "internal.auth.vs1.zenget.az"
                room-name = "JibriBrewery"
                nickname = "jibri01"
            }

            control-login {
                domain = "auth.vs1.zenget.az"
                username = "jibri"
                password = "xxxxx"
            }

            call-login {
                domain = "recorder.vs1.zenget.az"
                username = "recorder"
                password = "xxxxx"
            }

            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 = "/opt/jitsi/jibri/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 = "1280x720"
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:dsnoop"
 }
chrome {
// The flags which will be passed to chromium when launching
flags = [
#"--alsa-output-device='plug:bsnoop'",
"–-ignore-certificate-errors",
"--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

   }
}

Are you sure this is the correct virtualhost for your prosody?
Or is it internal.auth.zenget.az?

Hi Emrah,

Yes, this is my config


VirtualHost "vs1.zenget.az"
    authentication = "token"
    app_id="6A17A38391FD57523229C8CB167EC8D8"
    app_secret="xxxxxxx"
    allow_empty_token=true -- was: false, fik@
    enable_domain_verification=false

.....

Component "internal.auth.vs1.zenget.az" "muc"
    storage = "memory"
    muc_room_cache_size = 1000
    modules_enabled = {
        "ping";
    }
    admins = { "focus@auth.vs1.zenget.az", "jvb@auth.vs1.zenget.az", "jibri@auth.vs1.zenget.az", "recorder@recorder.vs1.zenget.az" }
    muc_room_locking = false
    muc_room_default_public_jids = true

Still don’t understand, why Focus is requesting like conference.vs1.vs1.zenget.az when recording is requested

Why is this included as an admin?

I’ve included it in a muc_whitelist, and included as admin in a hope that it might help. I’ve read it somewhere in the community.

Is that correct or should it be vs1.zenget.az as stated in:

and

The host where prosody is running along with jicofo is

zenget.az

The xmpp-domain in prosody is

vs1.zenget.az

As well as other domains like

conference.vs1.zenget.az
Internal.auth.vs1.zenget.az

Following this logic, if xmpp-domain in Jibri config means prosody virtual host then it should ve vs1.zenget.az

As I remember I’ve tried to change as you suggest, but it didn’t help. On the other hand, at that time I had issue with websockets.

Let me try to change it check once again.

After I changed xmpp-domain to

vs1.zenget.az

and kept xmpp-server-hosts as is

zenget.az

I’ve tried to start recording, and got immediate error on the jibri server

g presence to connections
2023-02-12 17:56:46.025 INFO: [48] XmppApi.handleStartJibriIq#281: Sending 'pending' response to start IQ
2023-02-12 17:56:46.027 INFO: [60] AbstractPageObject.visit#32: Visiting url https://vs1.zenget.az
2023-02-12 17:56:47.194 SEVERE: [60] [session_id=wxfvpoemetrzgbqd] JibriSelenium.joinCall$lambda-3#327: An error occurred while joining the call
org.openqa.selenium.WebDriverException: unknown error: net::ERR_CONNECTION_REFUSED

and in Jibri browser logs

  "frame": {
      "adFrameStatus": {
         "adFrameType": "none"
      },
      "crossOriginIsolatedContextType": "NotIsolated",
      "domainAndRegistry": "",
      "gatedAPIFeatures": [  ],
      "id": "5544A96CDB5F7AD34FD0C6C934B5CD19",
      "loaderId": "C0BE479DF4337C0BBBDE0CAB88AD746F",
      "mimeType": "text/html",
      "secureContextType": "InsecureScheme",
      "securityOrigin": "://",
      "unreachableUrl": "https://vs1.zenget.az/",
      "url": "chrome-error://chromewebdata/"
   },
   "type": "Navigation"

It says that this URL is unreachable, because in fact I’ve changed xmpp-domain parameter from “zenget.az” to “vs1.zenget.az”, but chrome tried to reach the conference at URL shown below.

https://vs1.zenget.az/

I don’t understand why you’re using both domains. Your xmpp domain is where your prosody is hosted. The problem you’re having is a config issue - Jibri is failing because you’re not providing the right access. Those domains need to match.

Let me try to explain in that way, it is possible that something really wrong with names

Prosody, Jicofo, JitsiMeet

host (machine name) - zenget.az
xmpp-domain on zenget.az.cfg.lua - vs1.zenget.az

JVB

host (machine name) - vs1.zenget.az

Jibri Host

host (machine name) recorder.vs1.zenget.az

All the xmpp-domain, virtual hosts and muc

vs1.zenget.az
conference.vs1.zenget.az (main muc)
breakout.vs1.zenget.az
internal.auth.vs1.zenget.az
recorder.vs1.zenget.az
auth.vs1.zenget.az
focus.vs1.zenget.az

Is JVB hosted on the same machine as Prosody? It doesn’t sound like it.
And when you say “machine name”, you’re referring to the domain the server is hosted on, right?

Share your complete cfg.lua file.

JVB is hosted on another machine: vs1.zenget.az, the things in that VirtualHost named as JVB host vs1.zenget.az

When I say machine name, I mean that I have one domain zenget.az and 3 separate hosts where

Host #1 - zenget.az is prosody, jicofo and jitsi-mmet

Host #2 - vs1.zenget.az is the JVB host

Host #3 - recorder.vs1.zenget.az

Here is my complete the *.lua

component_interface = "0.0.0.0";

-- For new manual jisti-meet installation, plugins are here
plugin_paths = { "/usr/share/jitsi-meet/resources/prosody-plugins/" }

-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "vs1.zenget.az";

external_service_secret = "xxxxxxxxxx";
external_services = {
     { type = "stun", host = "turn.zenget.az", port = 3478 },
     { type = "turn", host = "turn.zenget.az", port = 3478, transport = "udp", secret = true, ttl = 86400, algorithm = "turn" },
     { type = "turns", host = "turn.zenget.az", port = 5349, transport = "tcp", secret = true, ttl = 86400, algorithm = "turn" }
};

cross_domain_bosh = false;
consider_bosh_secure = true;

cross_domain_websocket = true;
consider_websocket_secure = true;


ssl = {
    protocol = "tlsv1_2+";
    ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
}

unlimited_jids = {
    "focus@auth.vs1.zenget.az",
    "jvb@auth.vs1.zenget.az",
    "jibri@auth.vs1.zenget.az",
}

VirtualHost "vs1.zenget.az"
    authentication = "token"
    app_id="xxxxxxxxx"
    app_secret="xxxxxxxxxx"
    allow_empty_token=true -- was: false, fik@
    enable_domain_verification=false

    ssl = {
        -- This cert apart from conference.konfrans.zenget.az also contains konfrans.zenget.az and other domains too. 
        -- This is just coinsidence that out public domain as konfrans.zenget.az as the virtual server for jitsi internal use 
        key = "/etc/prosody/certs/zenget.az.key";
        certificate = "/etc/prosody/certs/zenget.az.crt";
    }
    av_moderation_component = "avmoderation.vs1.zenget.az"
    speakerstats_component = "speakerstats.vs1.zenget.az"
    conference_duration_component = "conferenceduration.vs1.zenget.az"
    end_conference_component = "endconference.vs1.zenget.az"

    modules_enabled = {
        "bosh";
        "websocket";
        "smacks";
        "pubsub";
        "ping"; -- Enable mod_ping
        "speakerstats";
        "external_services";
        "conference_duration";
        "end_conference";
        "muc_lobby_rooms";
        "muc_breakout_rooms";
        "av_moderation";
        "room_metadata";
        "persistent_lobby";
    }
    c2s_require_encryption = false
    lobby_muc = "lobby.vs1.zenget.az"
    breakout_rooms_muc = "breakout.vs1.zenget.az"
    room_metadata_component = "metadata.vs1.zenget.az"
    main_muc = "conference.vs1.zenget.az"
    muc_lobby_whitelist = {"recorder.vs1.zenget.az", "jibri@auth.vs1.zenget.az"}

    smacks_max_unacked_stanzas = 5;
    smacks_hibernation_time = 60;
    smacks_max_hibernated_sessions = 1;
    smacks_max_old_sessions = 1;

Component "conference.vs1.zenget.az" "muc"
    restrict_room_creation = true
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "polls";
        "token_verification";
        "token_affiliation";
        "token_owner_party";
        "muc_rate_limit";
        "per_room_max_occupants";
        "token_join_at_time_specified";
        "token_lobby_ondemand";
        "token_owner_busy";
    }
    admins = { "focus@auth.vs1.zenget.az", "jibri@auth.vs1.zenget.az", "recorder@recorder.vs1.zenget.az" }
    muc_room_locking = false
    muc_room_default_public_jids = true
    party_check_timeout = 20
    limit_simultaneous_meetings = 1

    -- "per_room_max_occupants" setup
    max_occupants_for_subdomains = {
            guest = 20;
            free = 20;
    }

Component "breakout.vs1.zenget.az" "muc"
    restrict_room_creation = true
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "muc_rate_limit";
        "polls";
    }
    admins = { "focus@auth.vs1.zenget.az", "jibri@auth.vs1.zenget.az" }
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "internal.auth.vs1.zenget.az" "muc"
    storage = "memory"
    muc_room_cache_size = 1000
    modules_enabled = {
        "ping";
    }
    admins = { "focus@auth.vs1.zenget.az", "jvb@auth.vs1.zenget.az", "jibri@auth.vs1.zenget.az", "recorder@recorder.vs1.zenget.az" }
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "recorder.vs1.zenget.az"
    modules_enabled = {
        "ping";
        "smacks";
    }
    authentication = "internal_plain"
    smacks_max_hibernated_sessions = 1000 -- less than 1000 jibries allowed


VirtualHost "auth.vs1.zenget.az"
    ssl = {
        -- This cert contains only two internal domains, auth.konfrans.zenget.az and internal.konfrans.zenget.az
        key = "/etc/prosody/certs/zenget.az.key";
        certificate = "/etc/prosody/certs/zenget.az.crt";
    }
    modules_enabled = {
        "limits_exception";
    }
    authentication = "internal_hashed"

--VirtualHost "guest.vs1.zenget.az"
--    modules_enabled = {
--        "ping";
--        "smacks";
--    }
--    allow_empty_token=true
--    authentication = "anonymous"
--    c2s_require_encryption = false

Component "focus.vs1.zenget.az" "client_proxy"
    target_address = "focus@auth.vs1.zenget.az"

Component "speakerstats.vs1.zenget.az" "speakerstats_component"
    muc_component = "conference.vs1.zenget.az"

Component "conferenceduration.vs1.zenget.az" "conference_duration_component"
    muc_component = "conference.vs1.zenget.az"

Component "endconference.vs1.zenget.az" "end_conference"
    muc_component = "conference.vs1.zenget.az"

Component "avmoderation.vs1.zenget.az" "av_moderation_component"
    muc_component = "conference.vs1.zenget.az"

Component "lobby.vs1.zenget.az" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true
    modules_enabled = {
        "muc_rate_limit";
        "polls";
    }

Component "metadata.vs1.zenget.az" "room_metadata_component"
    muc_component = "conference.vs1.zenget.az"
    breakout_rooms_component = "breakout.vs1.zenget.az"

I haven’t looked through your cfg.lua, but from what you’ve explained, it seems you have everything configured incorrectly.

If prosody is hosted on zenget.azz, this is the domain that should be referenced as your xmpp domain.
vs1.zenget.azz is where your JVB is hosted, you shouldn’t be specifying that as your xmpp domain.
recorder.vs1.zenget.az is not needed as a separate host - this is a virtual domain used internally.

Most of these things are set for you automatically when you run the installation script, you don’t need to change them.

Ok, you mean that I messed between xmpp-domains and real host names, right?

I understand, but I’m a technical guy and struggled to do everything from the source. I didn’t use installation, build from source every component. This is really very exciting, and if you can see, it works, but during this activity, I did many changes, now trying to figure our why Jibril is not working. Xmpp, JVB, turn, and stun everything is instantiated manually. Damian helped me when I stuck with roster. ))