Jibri recording - when I click record, the recording user is visible and seen joining the room

Hi, when I click the record button, the Jibri server is working and sends a recorder to the video room. However, I still am seeing the recorder join the room.

On the jitsi meet server:
etc/jitsi/meet/jitsi.domain-name-here.org.au-config.js
I have tried the following with no success:

var config = {
    // Connection
    //

    hosts: {
        // XMPP domain.
        domain: 'jitsi.domain-name.org.au',

        // This is for jibri to hide them connecting
        hiddenDomain: 'recording.domain-name.org.au',

        // When using authentication, domain for guest users.
        anonymousdomain: 'guest.jitsi.domain-name.org.au',

        // Domain for authenticated users. Defaults to <domain>.
        // authdomain: 'jitsi.domain-name.org.au',

        // Focus component domain. Defaults to focus.<domain>.
        // focus: 'focus.jitsi.domain-name.org.au',

        // XMPP MUC domain. FIXME: use XEP-0030 to discover it.
        muc: 'conference.<!--# echo var="subdomain" default="" -->jitsi.domain-name.org.au'
    },

And when I look on the jibri server,
Under /etc/jitsi/jibri/jibri.conf (because the config.json is empty on new installs and .conf is the recommended new format)

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

                control-muc {
                    domain = "internal.auth.jitsi.domain-name.org.au"
                    room-name = "JibriBrewery"
                    nickname = "RecorderAnnouncer"
                }

                control-login {
                    domain = "jitsi.domain-name.org.au"
                    username = "jibri"
                    password = "***"
                }

                call-login {
                    domain = "recorder.jitsi.domain-name.org.au"
                    username = "recorder"
                    password = "***"
                }

                strip-from-room-domain = "conference"
                usage-timeout = 1 hour
                trust-all-xmpp-certs = true
            }]
    }
  }


There is an older reference to this topic, in When recording, jibri is joining as an user . However, I think it’s using the older config.js instead of the jibri.conf , or otherwise not sure as it does not exist for me that file.

recordingrecorder

So,

hiddenDomain: 'recorder.jitsi.domain-name.org.au'

And also, strip-from-room-domain value in jibri.conf should be:

strip-from-room-domain = "conference."

Good catch! I have renamed hiddenDomain to be hiddenDomain: ‘recorder.domain-name.org.au’, which matches the register command in prosody I done:

sudo prosodyctl register recorder recorder.jitsi.domain-name.org.au ***

And the jibri.conf. After restarting the jitsi box, as well as the recording server, It still has have no change however.

Is there a way I could verify I have created that user (recorder) in prosody perhaps? I’m a bit lost with where to troubleshoot and see what’s going on. with all of the relevant addresses to recorder.* , It has no effect with the recording user joining as a generic name to the channel the recording is requested.

I also did change the strip command from conference to conference. (extra dot)

with default authentication, use something like

sudo ls /var/lib/prosody/yoururlwithdotsreplacedby%2ecom/accounts
for example: your url is foo.org
sudo ls /var/lib/prosody/foo%2eorg/accounts

note that other chars than the dot can be coded too (a dash will be replaced by %2d for example)

anyway prosodyctl is idempotent, that is, if you use it again it will not create a duplicate.

I was trying to upload a log file to try and make pasting it easier, but couldn’t do it.

So far the prosody appears to be fine, and using the logs when I restart jibri I can see that it connects to the recording domain, and doesn’t complain

root@jibrirecordingbox:/home/ubuntu# systemctl restart jibri
root@jibrirecordingbox:/home/ubuntu# tail -n 100 /var/log/jitsi/jibri/log.0.txt -f
2021-08-20 00:52:12.979 INFO: [1] org.jitsi.jibri.Main.log() Jibri run with args [--config, /etc/jitsi/jibri/config.json]
2021-08-20 00:52:13.165 INFO: [1] org.jitsi.jibri.Main.log() Checking legacy config file /etc/jitsi/jibri/config.json
2021-08-20 00:52:13.166 INFO: [1] org.jitsi.jibri.Main.log() Legacy config file /etc/jitsi/jibri/config.json doesn't exist
2021-08-20 00:52:13.659 INFO: [1] org.jitsi.jibri.Main.log() Jibri starting up with id 
2021-08-20 00:52:14.517 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() got jwtConfig: {}

2021-08-20 00:52:14.522 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: /etc/jitsi/jibri/jibri.conf: 83: No configuration setting found for key 'signing-key-path'
2021-08-20 00:52:14.730 INFO: [1] org.jitsi.jibri.Main.log() Using port 3333 for internal HTTP API
2021-08-20 00:52:14.761 FINE: [18] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-08-20 00:52:15.308 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-08-20 00:52:15.324 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Connecting to xmpp environment on jitsi..org.au with config XmppEnvironmentConfig(name=prod environment, xmppServerHosts=[jitsi.DOMAIN-NAME.org.au], xmppDomain=jitsi.DOMAIN-NAME.org.au, baseUrl=null, controlLogin=XmppCredentials(domain=jitsi.DOMAIN-NAME.org.au, port=null, username=jibri, password=RECORDERPASSWORD), controlMuc=XmppMuc(domain=internal.auth.jitsi.DOMAIN-NAME.org.au, roomName=JibriBrewery, nickname=RecorderAnnouncer), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.jitsi.DOMAIN-NAME.org.au, port=null, username=recorder, password=RECORDERPASSWORD), stripFromRoomDomain=conference., usageTimeoutMins=60, trustAllXmppCerts=true)
2021-08-20 00:52:15.327 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-08-20 00:52:15.372 INFO: [1] org.jitsi.jibri.Main.log() Using port 2222 for HTTP API
2021-08-20 00:52:15.379 WARNING: [27] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2021-08-20 00:52:15.718 INFO: [27] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2021-08-20 00:52:15.719 INFO: [27] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2021-08-20 00:52:15.849 INFO: [27] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.jitsi.DOMAIN-NAME.org.au
2021-08-20 00:53:02.832 INFO: [41] org.jitsi.jibri.api.xmpp.XmppApi.log() Received JibriIq <iq to='jibri@jitsi.DOMAIN-NAME.org.au/qnY0vBtc' from='jibribrewery@internal.auth.jitsi.DOMAIN-NAME.org.au/focus' id='amlicmlAaml0c2kuYnBzZGFzc2lzdC5vcmcuYXUvcW5ZMHZCdGMAWmpaOWQtMTUwALp7zPNr9uGuh8GJZ6vOu/c=' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='testingroom@conference.jitsi.DOMAIN-NAME.org.au' session_id='uwnxlordnaosdrhl' app_data='{"file_recording_metadata":{"share":true}}'/></iq> from environment [MucClient id=jitsi.DOMAIN-NAME.org.au hostname=jitsi.DOMAIN-NAME.org.au]
2021-08-20 00:53:02.833 INFO: [41] org.jitsi.jibri.api.xmpp.XmppApi.log() Received start request, starting service
2021-08-20 00:53:03.015 INFO: [41] org.jitsi.jibri.api.xmpp.XmppApi.log() Parsed call url info: CallUrlInfo(baseUrl=https://jitsi.DOMAIN-NAME.org.au, callName=testingroom, urlParams=[])
2021-08-20 00:53:03.022 INFO: [41] org.jitsi.jibri.JibriManager.log() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlInfo=CallUrlInfo(baseUrl=https://jitsi.DOMAIN-NAME.org.au, callName=testingroom, urlParams=[]), email='', passcode=null, callStatsUsernameOverride=, displayName=), sessionId=uwnxlordnaosdrhl, callLoginParams=XmppCredentials(domain=recorder.jitsi.DOMAIN-NAME.org.au, port=null, username=recorder, password=RECORDERPASSWORD))
2021-08-20 00:53:03.082 FINE: [41] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Detected os as OS: LINUX
2021-08-20 00:53:06.200 INFO: [41] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
2021-08-20 00:53:06.247 INFO: [41] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Writing recording to /srv/recordings/uwnxlordnaosdrhl, finalize script path /srv/config/finalise_recordings.sh
2021-08-20 00:53:06.264 FINE: [41] org.jitsi.jibri.statsd.JibriStatsDClient.log() Incrementing statsd counter: start:recording
2021-08-20 00:53:06.270 INFO: [41] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
2021-08-20 00:53:06.272 FINE: [41] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-08-20 00:53:06.273 INFO: [41] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2021-08-20 00:53:06.277 INFO: [41] org.jitsi.jibri.JibriManager.log() This service will have a usage timeout of 60 minute(s)
2021-08-20 00:53:06.280 INFO: [41] org.jitsi.jibri.api.xmpp.XmppApi.log() Sending 'pending' response to start IQ
2021-08-20 00:53:06.298 INFO: [54] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Visiting url https://jitsi.DOMAIN-NAME.org.au
2021-08-20 00:53:07.971 INFO: [54] org.jitsi.jibri.selenium.pageobjects.HomePage.log() Waited 1.66s for driver to load page
2021-08-20 00:53:08.254 INFO: [54] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Visiting url https://jitsi.DOMAIN-NAME.org.au/testingroom#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.requireDisplayName=false
2021-08-20 00:53:09.302 INFO: [54] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Waited 1.05s for driver to load page
2021-08-20 00:53:09.359 FINE: [54] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read property 'isJoined' of undefined
2021-08-20 00:53:09.873 FINE: [54] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Not joined yet: Cannot read property 'isJoined' of undefined
2021-08-20 00:53:10.720 INFO: [54] org.jitsi.jibri.selenium.pageobjects.CallPage.log() Waited 1.42s to join the conference
2021-08-20 00:53:10.721 INFO: [54] org.jitsi.jibri.selenium.status_checks.EmptyCallStatusCheck.log() Starting empty call check with a timeout of PT30S
2021-08-20 00:53:10.782 INFO: [54] org.jitsi.jibri.selenium.JibriSelenium.log() Transitioning from state Starting up to Running
2021-08-20 00:53:10.787 INFO: [54] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Selenium joined the call, starting the capturer
2021-08-20 00:53:10.842 INFO: [54] org.jitsi.jibri.util.JibriSubprocess.log() Starting ffmpeg with command ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thread_queue_size 4096 -i :0.0+0,0 -f alsa -thread_queue_size 4096 -i plug:bsnoop -acodec aac -strict -2 -ar 44100 -b:a 128k -af aresample=async=1 -c:v libx264 -preset veryfast -profile:v main -level 3.1 -pix_fmt yuv420p -r 30 -crf 25 -g 60 -tune zerolatency -f mp4 /srv/recordings/uwnxlordnaosdrhl/testingroom_2021-08-20-00-53-06.mp4 ([ffmpeg, -y, -v, info, -f, x11grab, -draw_mouse, 0, -r, 30, -s, 1280x720, -thread_queue_size, 4096, -i, :0.0+0,0, -f, alsa, -thread_queue_size, 4096, -i, plug:bsnoop, -acodec, aac, -strict, -2, -ar, 44100, -b:a, 128k, -af, aresample=async=1, -c:v, libx264, -preset, veryfast, -profile:v, main, -level, 3.1, -pix_fmt, yuv420p, -r, 30, -crf, 25, -g, 60, -tune, zerolatency, -f, mp4, /srv/recordings/uwnxlordnaosdrhl/testingroom_2021-08-20-00-53-06.mp4])
2021-08-20 00:53:12.635 INFO: [57] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Ffmpeg capturer transitioning from state Starting up to Running
2021-08-20 00:53:12.636 INFO: [57] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() File recording service transitioning from state Starting up to Running
2021-08-20 00:53:12.641 INFO: [57] org.jitsi.jibri.api.xmpp.XmppApi.log() Current service started up successfully, sending on iq <iq to='jibribrewery@internal.auth.jitsi.DOMAIN-NAME.org.au/focus' id='OJ5r2-24' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='on'/></iq>
2021-08-20 00:53:14.710 FINE: [18] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-08-20 00:53:16.255 INFO: [53] org.jitsi.jibri.api.xmpp.XmppApi.log() Received JibriIq <iq to='jibri@jitsi.DOMAIN-NAME.org.au/qnY0vBtc' from='jibribrewery@internal.auth.jitsi.DOMAIN-NAME.org.au/focus' id='amlicmlAaml0c2kuYnBzZGFzc2lzdC5vcmcuYXUvcW5ZMHZCdGMAWmpaOWQtMTg3ALp7zPNr9uGuh8GJZ6vOu/c=' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' action='stop' session_id='uwnxlordnaosdrhl'/></iq> from environment [MucClient id=jitsi.DOMAIN-NAME.org.au hostname=jitsi.DOMAIN-NAME.org.au]
2021-08-20 00:53:16.256 FINE: [53] org.jitsi.jibri.statsd.JibriStatsDClient.log() Incrementing statsd counter: stop:recording
2021-08-20 00:53:16.256 INFO: [53] org.jitsi.jibri.JibriManager.log() Stopping the current service
2021-08-20 00:53:16.258 INFO: [53] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Stopping capturer
2021-08-20 00:53:16.258 INFO: [53] org.jitsi.jibri.util.JibriSubprocess.log() Stopping ffmpeg process
2021-08-20 00:53:16.414 INFO: [57] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.log() Ffmpeg capturer transitioning from state Running to Finished
2021-08-20 00:53:16.416 INFO: [57] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() File recording service transitioning from state Running to Finished
2021-08-20 00:53:16.417 INFO: [57] org.jitsi.jibri.api.xmpp.XmppApi.log() Current service finished, sending off iq <iq to='jibribrewery@internal.auth.jitsi.DOMAIN-NAME.org.au/focus' id='OJ5r2-27' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='off'/></iq>
2021-08-20 00:53:16.420 INFO: [53] org.jitsi.jibri.util.JibriSubprocess.log() ffmpeg exited with value 255
2021-08-20 00:53:16.421 INFO: [53] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Quitting selenium
2021-08-20 00:53:16.718 INFO: [53] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Participants in this recording: []
2021-08-20 00:53:16.952 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Leaving call and quitting browser
2021-08-20 00:53:16.960 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Recurring call status checks cancelled
2021-08-20 00:53:17.026 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Got 8 log entries for type browser
2021-08-20 00:53:17.491 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Got 616 log entries for type driver
2021-08-20 00:53:18.247 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Got 0 log entries for type client
2021-08-20 00:53:18.248 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Leaving web call
2021-08-20 00:53:18.668 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Quitting chrome driver
2021-08-20 00:53:18.746 INFO: [53] org.jitsi.jibri.selenium.JibriSelenium.log() Chrome driver quit
2021-08-20 00:53:18.747 INFO: [53] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Finalizing the recording
2021-08-20 00:53:18.756 INFO: [52] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() preparing to copy /srv/recordings/uwnxlordnaosdrhl
2021-08-20 00:53:18.757 INFO: [53] org.jitsi.jibri.service.impl.FileRecordingJibriService.log() Recording finalize script finished with exit value 0
2021-08-20 00:53:18.758 INFO: [53] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE
2021-08-20 00:53:18.759 FINE: [53] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-08-20 00:53:18.759 INFO: [53] 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-08-20 00:53:18.760 INFO: [57] org.jitsi.jibri.JibriManager.log() No service active, ignoring stop
2021-08-20 00:54:14.710 FINE: [18] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-08-20 00:55:14.710 FINE: [18] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status

As well as this, in jicofo logs, it does tell me that the user was logged into recording.DOMAIN-NAME.

Jicofo 2021-08-20 00:53:16.456 INFO: [44] JibriSession.cleanupSession#413: Cleaning up current JibriSession
Jicofo 2021-08-20 00:53:18.326 INFO: [28] [room=testingroom@conference.jitsi.DOMAIN-NAME.org.au] ChatRoomRoleAndPresence.memberPresenceChanged#129: Chat room event Left member=ChatMember[testingroom@conference.jitsi.DOMAIN-NAME.org.au/24ca549e, jid: recorder@recorder.jitsi.DOMAIN-NAME.org.au/pgBuWoZY]@579345012

What else could I do to help troubleshoot it?

For those reading at home, I have found the solution:
I needed to change
hiddenDomain: ' recorder.DOMAIN-NAME.org ',
to
hiddenDomain: ' recorder.jitsi.DOMAIN-NAME.org ',

Please note that there is a .jitsi. in there. This is because it’s not your actual domain name, but instead is the name of the MUC channel name that the recording user is logged into.

Besides the out of date usage of a jitsi-config.js file, I found this guide was short but detailed enough to help point out the obvious to me:

No, this is NOT true. You only need “jitsi” in there because YOUR deployment domain (as shown previously) is jitsi.domain-name.org.au. This is specific to you. If, for instance, you have your deployment domain as meet.domain-name.org.au, then you’ll need “meet” in there, not “jitsi”.

I pointed this out to you earlier on in this thread, but you claimed it didn’t work for you.