Easy way to create a Jitsi cluster

Hello @emrah, I downloaded the files of installer again, exported the domains, but I’m getting these errors:

-------------------------- eb-buster --------------------------
Already installed. Skipped…

Please set REINSTALL_BUSTER_IF_EXISTS in eb-jitsi.conf
if you want to reinstall this container

---------------------- eb-buster UPDATE -----------------------
lxc-start: eb-buster: lxccontainer.c: wait_on_daemonized_start: 842 Received container state “ABORTING” instead of “RUNNING”
lxc-start: eb-buster: tools/lxc_start.c: main: 330 The container failed to start
lxc-start: eb-buster: tools/lxc_start.c: main: 333 To get more details, run the container in foreground mode
lxc-start: eb-buster: tools/lxc_start.c: main: 336 Additional information can be obtained by setting the --logfile and --logpriority options

Something went wrong. The installation couldn’t be completed!

And the jibri containers is showing the same errors when I try to start them.

Could you try the following?

stop the template

lxc-stop -n eb-buster

destroy it

lxc-destroy -n eb-buster
rm -rf /var/lib/lxc/eb-buster

restart the installer. The installer will create the template if it’s not exist. The template seems corrupted too. If someone didn’t delete something from the container’s file system you may have a disk issue.

1 Like

Wow! Thanks for the quick response!

I did and works, finally!

But even before did it, when Jibri is still working, I had realized that it was splitting the records…

Is there some configuration that do that? Or it is some performance issue? It is not a big problem, but if I could fix it, will be better.

Two another questions:

  • I had enabled colibri, as you said, but where am I supposed to open the file downloaded by curl?
  • If the 11 jibri containers running on my machine turn out to be a performance issue, and I decide to use Jibri nodes on differents VM, I need only to run add_jibri_node and stop the containers in this machine?

Thanks very much again and sorry for any inconvenience.

I saw a config related in this issue but I’m not remembering where… But I updated the jibri finalize script a few days ago. Now, it can manage multiple MP4 files.

The colibri port (TCP/8080) is only accessable inside the server or the containers.

curl http://172.22.22.14:8080/colibri/stats

If you want to access it from the outside, you need to add a NAT rule to nftables. Check /etc/nftables.conf.

To disable the jibri instances for this server, you need to do followings

systemctl stop jibri-ephemeral-container.service
systemctl disable jibri-ephemeral-container.service

But there is another alternative, you can limit the instance number. Update LIMIT in /usr/local/sbin/jibri-ephemeral-start and restart the jibri-ephemeral-container service. For example

/usr/local/sbin/jibri-ephemeral-start

LIMIT=8
systemctl restart jibri-ephemeral-container.service

Add the JMS key to the new jibri machine as described in the doc and run the add_jibri_node command on JMS

Nice! I saw that the finalize_recording.sh was changed, but I changed it again to what you suggest in a post before, to move the files out of the random folders. How can I merge this functions?

I see… but the colibri stats is a webpage? Because i don’t have a desktop environment in this server, so the only thing I did in these files was a cat. If so, I will do the NAT to follow the conferences.

#!/bin/bash
set -e

[[ "$(whoami)" != "jibri" ]] && exit 1

DEST="/usr/local/eb/recordings"
FOLDER=$1
KEY=$(basename $FOLDER)

for VIDEO_PATH in $(find $FOLDER -name '*.mp4')
do
    VIDEO_NAME=$(basename $VIDEO_PATH)
    VIDEO_NAME_KEY=$(echo $VIDEO_NAME | sed "s/.mp4/_$KEY.mp4/")

    mv $VIDEO_PATH $DEST/$VIDEO_NAME_KEY
done

rm -rf $FOLDER

exit 0

It’s a JSON output, not designed for UI… So, no need the desktop environment.

3 Likes

I updated the coturn installation according to the changes on the lastest stable

I added a ready-to-use Jitsi development environment to the installer.
See this guide for details.

Hello @emrah,
Thanks again for the script, it is really easy to use.

I’m still with that problem of recording being partitioned by jibri… Do you know what can cause this?

Thanks!

If you have not a time limit for recording in your jibri.conf I have no idea

jibri.conf seems OK.

Check the jibri logs

1 Like

The Jicofo logs after I started the jibri service and started a recording are:

> Jicofo 2021-01-12 13:20:24.972 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Jibri: jibribrewery@internal.auth.mydomain.com/eb-jibri-8-1610468403681-1704 available: true
> Jicofo 2021-01-12 13:20:25.033 INFO: [41] org.jitsi.jicofo.xmpp.BaseBrewery.log() Added brewery instance: jibribrewery@internal.auth.mydomain.com/eb-jibri-7-1610468403366-18873
> Jicofo 2021-01-12 13:20:25.033 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Received Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-7-1610468403366-18873 status <jibri-status xmlns='http://jitsi.org/protocol/jibri'><busy-status xmlns='http://jitsi.org/protocol/jibri' status='idle'/><health-status xmlns='http://jitsi.org/protocol/health' status='healthy'/></jibri-status>
> Jicofo 2021-01-12 13:20:25.033 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Jibri: jibribrewery@internal.auth.mydomain.com/eb-jibri-7-1610468403366-18873 available: true
> Jicofo 2021-01-12 13:20:25.155 INFO: [41] org.jitsi.jicofo.xmpp.BaseBrewery.log() Added brewery instance: jibribrewery@internal.auth.mydomain.com/eb-jibri-11-1610468404776-32189
> Jicofo 2021-01-12 13:20:25.155 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Received Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-11-1610468404776-32189 status <jibri-status xmlns='http://jitsi.org/protocol/jibri'><busy-status xmlns='http://jitsi.org/protocol/jibri' status='idle'/><health-status xmlns='http://jitsi.org/protocol/health' status='healthy'/></jibri-status>
> Jicofo 2021-01-12 13:20:25.155 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Jibri: jibribrewery@internal.auth.mydomain.com/eb-jibri-11-1610468404776-32189 available: true
> Jicofo 2021-01-12 13:20:25.222 INFO: [41] org.jitsi.jicofo.xmpp.BaseBrewery.log() Added brewery instance: jibribrewery@internal.auth.mydomain.com/eb-jibri-4-1610468402262-19087
> Jicofo 2021-01-12 13:20:25.222 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Received Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-4-1610468402262-19087 status <jibri-status xmlns='http://jitsi.org/protocol/jibri'><busy-status xmlns='http://jitsi.org/protocol/jibri' status='idle'/><health-status xmlns='http://jitsi.org/protocol/health' status='healthy'/></jibri-status>
> Jicofo 2021-01-12 13:20:25.222 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Jibri: jibribrewery@internal.auth.mydomain.com/eb-jibri-4-1610468402262-19087 available: true
> Jicofo 2021-01-12 13:20:50.328 INFO: [161552] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting session with Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168
> Jicofo 2021-01-12 13:20:50.328 INFO: [161552] org.jitsi.jicofo.recording.jibri.JibriSession.log() Starting Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168 for stream ID: null in room: testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:20:53.421 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Received Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168 status <jibri-status xmlns='http://jitsi.org/protocol/jibri'><busy-status xmlns='http://jitsi.org/protocol/jibri' status='busy'/><health-status xmlns='http://jitsi.org/protocol/health' status='healthy'/></jibri-status>
> Jicofo 2021-01-12 13:20:53.421 INFO: [41] org.jitsi.jicofo.recording.jibri.JibriDetector.log() Jibri: jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168 available: false
> Jicofo 2021-01-12 13:20:53.426 INFO: [161552] org.jitsi.jicofo.recording.jibri.JibriSession.log() Updating status from JIBRI: <iq to='focus@auth.mydomain.com/focus1039175638664565' from='jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168' id='SiJ3G-9500197' type='result'><jibri xmlns='http://jitsi.org/protocol/jibri' status='pending'/></iq> for testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:20:53.426 INFO: [161552] org.jitsi.jicofo.recording.jibri.JibriSession.log() Got Jibri status update: Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168 has status pending and failure reason null, current Jibri jid is jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168
> Jicofo 2021-01-12 13:20:53.426 INFO: [161552] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Started Jibri session
> Jicofo 2021-01-12 13:21:05.131 INFO: [71] org.jitsi.jicofo.xmpp.FocusComponent.log() Focus request for room: testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:21:05.163 INFO: [41] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberJoined sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@16983fb4 member=ChatMember[testemoura@conference.mydomain.com/4eee3eb1, jid: null]@313461372]
> Jicofo 2021-01-12 13:21:05.164 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member testemoura@conference.mydomain.com/4eee3eb1 joined.
> Jicofo 2021-01-12 13:21:05.165 INFO: [41] org.jitsi.jicofo.bridge.BridgeSelectionStrategy.log() Selected initial bridge Bridge[jid=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d, relayId=null, region=null, stress=0.00] with packetRate=0 for participantRegion=null
> Jicofo 2021-01-12 13:21:05.165 INFO: [41] org.jitsi.impl.protocol.xmpp.colibri.OperationSetColibriConferenceImpl.log() Conference created: org.jitsi.impl.protocol.xmpp.colibri.ColibriConferenceImpl@6e7a5bb1
> Jicofo 2021-01-12 13:21:05.165 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Added participant jid= testemoura@conference.mydomain.com/0706ffa4, bridge=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d
> Jicofo 2021-01-12 13:21:05.166 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null]]
> Jicofo 2021-01-12 13:21:05.168 INFO: [161569] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Doing feature discovery for testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:05.168 INFO: [161569] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Successfully discovered features for testemoura@conference.mydomain.com/0706ffa4 in 0
> Jicofo 2021-01-12 13:21:05.168 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Added participant jid= testemoura@conference.mydomain.com/4eee3eb1, bridge=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d
> Jicofo 2021-01-12 13:21:05.169 INFO: [161569] org.jitsi.jicofo.AbstractChannelAllocator.log() Using jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d to allocate channels for: Participant[testemoura@conference.mydomain.com/0706ffa4]@1210632337
> Jicofo 2021-01-12 13:21:05.169 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null, null]]
> Jicofo 2021-01-12 13:21:05.170 INFO: [161570] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Doing feature discovery for testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:05.170 INFO: [161570] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Successfully discovered features for testemoura@conference.mydomain.com/4eee3eb1 in 0
> Jicofo 2021-01-12 13:21:05.170 INFO: [161570] org.jitsi.jicofo.AbstractChannelAllocator.log() Using jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d to allocate channels for: Participant[testemoura@conference.mydomain.com/4eee3eb1]@958378920
> Jicofo 2021-01-12 13:21:05.183 INFO: [161569] org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:05.231 INFO: [161570] org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:05.816 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Got session-accept from: testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:05.817 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Received session-accept from testemoura@conference.mydomain.com/0706ffa4 with accepted sources:Sources{ video: [ssrc=1767177643 ssrc=3872114658 ssrc=2474190187 ssrc=991413620 ssrc=1200234976 ssrc=2445850075 ] }@1457364683
> Jicofo 2021-01-12 13:21:05.818 WARNING: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() No jingle session yet for testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:05.898 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Got session-accept from: testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:05.898 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Received session-accept from testemoura@conference.mydomain.com/4eee3eb1 with accepted sources:Sources{ }@1783029874
> Jicofo 2021-01-12 13:21:05.899 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Notify add SSRC testemoura@conference.mydomain.com/0706ffa4 SID: 28cp6li07mk45 Sources{ }@1992549575 source_Groups{ }@378986724
> Jicofo 2021-01-12 13:21:05.899 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Notify add SSRC testemoura@conference.mydomain.com/4eee3eb1 SID: cuq7uug89irsj Sources{ video: [ssrc=1767177643 ssrc=3872114658 ssrc=2474190187 ssrc=991413620 ssrc=1200234976 ssrc=2445850075 ] }@738664251 source_Groups{ video:[ SourceGroup(FID)[ ssrc=1767177643 ssrc=3872114658 ]SourceGroup(FID)[ ssrc=2474190187 ssrc=1200234976 ]SourceGroup(FID)[ ssrc=991413620 ssrc=2445850075 ]SourceGroup(SIM)[ ssrc=1767177643 ssrc=2474190187 ssrc=991413620 ] ] }@1897869241
> Jicofo 2021-01-12 13:21:07.761 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriSession.log() Updating status from JIBRI: <iq to='focus@auth.mydomain.com/focus1039175638664565' from='jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168' id='Zm9jdXNAYXV0aC53ZWJjb25mZXJlbmNpYS4yMWN0LmViLm1pbC5ici9mb2N1czEwMzkxNzU2Mzg2NjQ1NjUAUmZuVWEtNTIAdqFwzmH65d1gXkh/nOwL/A==' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='on'/></iq> for testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:21:07.761 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriSession.log() Got Jibri status update: Jibri jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168 has status on and failure reason null, current Jibri jid is jibribrewery@internal.auth.mydomain.com/eb-jibri-1-1610468401298-4168
> Jicofo 2021-01-12 13:21:07.761 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriSession.log() Jibri is no longer pending, cancelling pending timeout task
> Jicofo 2021-01-12 13:21:07.762 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriSession.log() Jibri session started, notifying owner
> Jicofo 2021-01-12 13:21:07.762 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Got jibri status on and failure null
> Jicofo 2021-01-12 13:21:07.762 INFO: [161568] org.jitsi.jicofo.recording.jibri.JibriRecorder.log() Publishing new jibri-recording-status: <jibri-recording-status xmlns='http://jitsi.org/protocol/jibri' status='on' session_id='koyprbmljbysmyru' initiator='testemoura@conference.mydomain.com/0706ffa4' recording_mode='file'/> in: testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:21:36.056 INFO: [41] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@16983fb4 member=ChatMember[testemoura@conference.mydomain.com/4eee3eb1, jid: recorder@recorder.mydomain.com/NpB-Jj0Z]@313461372]
> Jicofo 2021-01-12 13:21:36.057 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member testemoura@conference.mydomain.com/4eee3eb1 is leaving
> Jicofo 2021-01-12 13:21:36.057 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Terminating Participant[testemoura@conference.mydomain.com/4eee3eb1]@958378920, reason: gone, send st: false
> Jicofo 2021-01-12 13:21:36.058 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Terminate session: testemoura@conference.mydomain.com/4eee3eb1, reason: gone, send terminate: false
> Jicofo 2021-01-12 13:21:36.058 WARNING: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() No sources or groups to be removed from: testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:36.059 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null]]
> Jicofo 2021-01-12 13:21:36.059 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Expiring channels for: testemoura@conference.mydomain.com/4eee3eb1 on: Bridge[jid=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d, relayId=null, region=null, stress=0.00]
> Jicofo 2021-01-12 13:21:36.060 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Removed participant: true, testemoura@conference.mydomain.com/4eee3eb1
> Jicofo 2021-01-12 13:21:56.060 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Timing out single participant: testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:56.061 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Terminating Participant[testemoura@conference.mydomain.com/0706ffa4]@1210632337, reason: expired, send st: true
> Jicofo 2021-01-12 13:21:56.061 INFO: [208] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Terminate session: testemoura@conference.mydomain.com/0706ffa4, reason: expired, send terminate: true
> Jicofo 2021-01-12 13:21:56.062 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Removing testemoura@conference.mydomain.com/0706ffa4 sources Sources{ video: [ssrc=1767177643 ssrc=3872114658 ssrc=2474190187 ssrc=991413620 ssrc=1200234976 ssrc=2445850075 ] }@1296121204
> Jicofo 2021-01-12 13:21:56.062 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null]]
> Jicofo 2021-01-12 13:21:56.063 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Expiring channels for: testemoura@conference.mydomain.com/0706ffa4 on: Bridge[jid=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d, relayId=null, region=null, stress=0.00]
> Jicofo 2021-01-12 13:21:56.063 INFO: [208] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Removed participant: true, testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:57.882 INFO: [101] org.jitsi.jicofo.xmpp.FocusComponent.log() Focus request for room: testemoura@conference.mydomain.com
> Jicofo 2021-01-12 13:21:57.925 INFO: [41] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberJoined sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@16983fb4 member=ChatMember[testemoura@conference.mydomain.com/e6a6bd54, jid: null]@403904641]
> Jicofo 2021-01-12 13:21:57.926 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member testemoura@conference.mydomain.com/e6a6bd54 joined.
> Jicofo 2021-01-12 13:21:57.927 INFO: [41] org.jitsi.jicofo.bridge.BridgeSelectionStrategy.log() Selected initial bridge Bridge[jid=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d, relayId=null, region=null, stress=0.00] with packetRate=0 for participantRegion=null
> Jicofo 2021-01-12 13:21:57.927 INFO: [41] org.jitsi.impl.protocol.xmpp.colibri.OperationSetColibriConferenceImpl.log() Conference created: org.jitsi.impl.protocol.xmpp.colibri.ColibriConferenceImpl@39a35aa7
> Jicofo 2021-01-12 13:21:57.928 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Added participant jid= testemoura@conference.mydomain.com/0706ffa4, bridge=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d
> Jicofo 2021-01-12 13:21:57.928 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null]]
> Jicofo 2021-01-12 13:21:57.928 INFO: [161570] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Doing feature discovery for testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:57.929 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Added participant jid= testemoura@conference.mydomain.com/e6a6bd54, bridge=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d
> Jicofo 2021-01-12 13:21:57.929 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null, null]]
> Jicofo 2021-01-12 13:21:57.930 INFO: [161570] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Successfully discovered features for testemoura@conference.mydomain.com/0706ffa4 in 1
> Jicofo 2021-01-12 13:21:57.930 INFO: [161569] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Doing feature discovery for testemoura@conference.mydomain.com/e6a6bd54
> Jicofo 2021-01-12 13:21:57.930 INFO: [161569] org.jitsi.jicofo.discovery.DiscoveryUtil.log() Successfully discovered features for testemoura@conference.mydomain.com/e6a6bd54 in 0
> Jicofo 2021-01-12 13:21:57.931 INFO: [161570] org.jitsi.jicofo.AbstractChannelAllocator.log() Using jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d to allocate channels for: Participant[testemoura@conference.mydomain.com/0706ffa4]@936925947
> Jicofo 2021-01-12 13:21:57.931 INFO: [161569] org.jitsi.jicofo.AbstractChannelAllocator.log() Using jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d to allocate channels for: Participant[testemoura@conference.mydomain.com/e6a6bd54]@1190080484
> Jicofo 2021-01-12 13:21:57.949 INFO: [161570] org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:57.970 INFO: [161569] org.jitsi.jicofo.ParticipantChannelAllocator.log() Sending session-initiate to: testemoura@conference.mydomain.com/e6a6bd54
> Jicofo 2021-01-12 13:21:58.504 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Got session-accept from: testemoura@conference.mydomain.com/0706ffa4
> Jicofo 2021-01-12 13:21:58.505 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Received session-accept from testemoura@conference.mydomain.com/0706ffa4 with accepted sources:Sources{ video: [ssrc=1460215271 ssrc=1297901509 ssrc=866794369 ssrc=1701169236 ssrc=384473217 ssrc=2516034509 ] }@759788655
> Jicofo 2021-01-12 13:21:58.505 WARNING: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() No jingle session yet for testemoura@conference.mydomain.com/e6a6bd54
> Jicofo 2021-01-12 13:21:58.765 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Got session-accept from: testemoura@conference.mydomain.com/e6a6bd54
> Jicofo 2021-01-12 13:21:58.766 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Received session-accept from testemoura@conference.mydomain.com/e6a6bd54 with accepted sources:Sources{ }@631497880
> Jicofo 2021-01-12 13:21:58.766 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Notify add SSRC testemoura@conference.mydomain.com/0706ffa4 SID: 2d127h5cp761s Sources{ }@628369341 source_Groups{ }@111228886
> Jicofo 2021-01-12 13:21:58.767 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Notify add SSRC testemoura@conference.mydomain.com/e6a6bd54 SID: 1lv1nk0q41edg Sources{ video: [ssrc=1460215271 ssrc=1297901509 ssrc=866794369 ssrc=1701169236 ssrc=384473217 ssrc=2516034509 ] }@1621999969 source_Groups{ video:[ SourceGroup(FID)[ ssrc=1460215271 ssrc=1297901509 ]SourceGroup(FID)[ ssrc=866794369 ssrc=384473217 ]SourceGroup(FID)[ ssrc=1701169236 ssrc=2516034509 ]SourceGroup(SIM)[ ssrc=1460215271 ssrc=866794369 ssrc=1701169236 ] ] }@1511026376
> Jicofo 2021-01-12 13:22:28.930 INFO: [41] org.jitsi.jicofo.ChatRoomRoleAndPresence.log() Chat room event ChatRoomMemberPresenceChangeEvent[type=MemberLeft sourceRoom=org.jitsi.impl.protocol.xmpp.ChatRoomImpl@16983fb4 member=ChatMember[testemoura@conference.mydomain.com/e6a6bd54, jid: recorder@recorder.mydomain.com/MjLamvNe]@403904641]
> Jicofo 2021-01-12 13:22:28.930 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Member testemoura@conference.mydomain.com/e6a6bd54 is leaving
> Jicofo 2021-01-12 13:22:28.930 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Terminating Participant[testemoura@conference.mydomain.com/e6a6bd54]@1190080484, reason: gone, send st: false
> Jicofo 2021-01-12 13:22:28.931 INFO: [41] org.jitsi.protocol.xmpp.AbstractOperationSetJingle.log() Terminate session: testemoura@conference.mydomain.com/e6a6bd54, reason: gone, send terminate: false
> Jicofo 2021-01-12 13:22:28.932 WARNING: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() No sources or groups to be removed from: testemoura@conference.mydomain.com/e6a6bd54
> Jicofo 2021-01-12 13:22:28.932 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Region info, conference=14039 octo_enabled= false: [[null, null]]
> Jicofo 2021-01-12 13:22:28.933 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Expiring channels for: testemoura@conference.mydomain.com/e6a6bd54 on: Bridge[jid=jvbbrewery@internal.auth.mydomain.com/113d4a45-c09e-4d82-8c3e-c9a23af7803d, relayId=null, region=null, stress=0.00]
> Jicofo 2021-01-12 13:22:28.933 INFO: [41] org.jitsi.jicofo.JitsiMeetConferenceImpl.log() Removed participant: true, testemoura@conference.mydomain.com/e6a6bd54
> ^C

And the jibri-1 logs are:

> root@eb-jibri-1 / # cat /var/log/jitsi/jibri/log.0.txt | more
> 2021-01-12 14:20:05.140 INFO: [1] org.jitsi.jibri.Main.handleCommandLineArgs() Jibri run with args [--config, /etc/jitsi/jibri/config.json]
> 2021-01-12 14:20:05.382 INFO: [1] org.jitsi.jibri.Main.setupLegacyConfig() Checking legacy config file /etc/jitsi/jibri/config.json
> 2021-01-12 14:20:05.382 INFO: [1] org.jitsi.jibri.Main.setupLegacyConfig() Legacy config file /etc/jitsi/jibri/config.json doesn't exist
> 2021-01-12 14:20:06.305 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   LambdaSupplier: 'JibriConfig::enableStatsD'
>   ConfigSourceSupplier: key: 'jibri.stats.enable-stats-d', type: 'kotlin.Boolean', source: 'config'
> 2021-01-12 14:20:06.307 FINE: [1] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::enableStatsD
> 2021-01-12 14:20:06.312 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::enableStatsD': org.jitsi.metaconfig.ConfigEx
> ception$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
> 2021-01-12 14:20:06.314 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.stats.enable-stats-d' from source 'config' as type kotlin.Boolean
> 2021-01-12 14:20:06.403 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.stats.enable-stats-d' from source 'config' as type kotlin.Boo
> lean
> 2021-01-12 14:20:06.406 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.stats.enable-stats-d', type: 'kotlin.Boolean', so
> urce: 'config'
> 2021-01-12 14:20:06.454 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   LambdaSupplier: 'JibriConfig::jibriId'
>   ConfigSourceSupplier: key: 'jibri.id', type: 'kotlin.String', source: 'config'
> 2021-01-12 14:20:06.454 FINE: [1] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::jibriId
> 2021-01-12 14:20:06.455 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::jibriId': org.jitsi.metaconfig.ConfigExcepti
> on$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
> 2021-01-12 14:20:06.456 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.id' from source 'config' as type kotlin.String
> 2021-01-12 14:20:06.484 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.id' from source 'config' as type kotlin.String
> 2021-01-12 14:20:06.484 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.id', type: 'kotlin.String', source: 'config'
> 2021-01-12 14:20:06.501 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   ConfigSourceSupplier: key: 'jibri.webhook.subscribers', type: 'kotlin.collections.List<kotlin.String>', source: 'config'
> 2021-01-12 14:20:06.507 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.webhook.subscribers' from source 'config' as type kotlin.collecti
> ons.List<kotlin.String>
> 2021-01-12 14:20:06.525 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.webhook.subscribers' from source 'config' as type kotlin.coll
> ections.List<kotlin.String>
> 2021-01-12 14:20:06.526 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.webhook.subscribers', type: 'kotlin.collections.L
> ist<kotlin.String>', source: 'config'
> 2021-01-12 14:20:07.367 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.jwt-info' from source 'config' as type com.typesafe.config.Config
> Object
> 2021-01-12 14:20:07.409 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.jwt-info' from source 'config' as type com.typesafe.config.Co
> nfigObject
> 2021-01-12 14:20:07.411 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.Companion.fromConfig() got jwtConfig: {}
> 
> 2021-01-12 14:20:07.413 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.Companion.fromConfig() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: reference.conf @ j
> ar:file:/opt/jitsi/jibri/jibri.jar!/reference.conf: 43: No configuration setting found for key 'signing-key-path'
> 2021-01-12 14:20:07.835 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   ConfigSourceSupplier: key: 'internal_http_port', type: 'kotlin.Int', source: 'command line args'
>   ConfigSourceSupplier: key: 'jibri.api.http.internal-api-port', type: 'kotlin.Int', source: 'config'
> 2021-01-12 14:20:07.836 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'internal_http_port' from source 'command line args' as type kotlin.Int
> 2021-01-12 14:20:07.839 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via ConfigSourceSupplier: key: 'internal_http_port', type: 'kotlin.Int', sourc
> e: 'command line args': org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: not found
> 2021-01-12 14:20:07.840 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.api.http.internal-api-port' from source 'config' as type kotlin.I
> nt
> 2021-01-12 14:20:07.845 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.api.http.internal-api-port' from source 'config' as type kotl
> in.Int
> 2021-01-12 14:20:07.846 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.api.http.internal-api-port', type: 'kotlin.Int',
> source: 'config'
> 2021-01-12 14:20:07.847 INFO: [1] org.jitsi.jibri.Main.main() Using port 8001 for internal HTTP API
> 2021-01-12 14:20:07.873 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:20:08.498 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   LambdaSupplier: 'JibriConfig::xmppEnvironments'
>   TypeConvertingSupplier: converting value from ConfigSourceSupplier: key: 'jibri.api.xmpp.environments', type: 'kotlin.collections.List<com.typesafe.config.Config>', source: 'config
> '
> 2021-01-12 14:20:08.498 FINE: [1] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::xmppEnvironments
> 2021-01-12 14:20:08.499 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::xmppEnvironments': org.jitsi.metaconfig.Conf
> igException$UnableToRetrieve$NotFound: Considering empty XMPP envs list as not found
> 2021-01-12 14:20:08.500 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.api.xmpp.environments' from source 'config' as type kotlin.collec
> tions.List<com.typesafe.config.Config>
> 2021-01-12 14:20:08.504 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.api.xmpp.environments' from source 'config' as type kotlin.co
> llections.List<com.typesafe.config.Config>
> 2021-01-12 14:20:08.511 FINE: [1] org.jitsi.jibri.config.debug() TypeConvertingSupplier: Converted value type from ConfigSourceSupplier: key: 'jibri.api.xmpp.environments', type: 'ko
> tlin.collections.List<com.typesafe.config.Config>', source: 'config'
> 2021-01-12 14:20:08.512 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via TypeConvertingSupplier: converting value from ConfigSourceSupplier: key: 'jibri.api
> .xmpp.environments', type: 'kotlin.collections.List<com.typesafe.config.Config>', source: 'config'
> 2021-01-12 14:20:08.904 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.updatePresence() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEA
> LTHY, details={})), publishing presence to connections
> 2021-01-12 14:20:08.928 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() Connecting to xmpp environment on mydomain.com with config XmppEnvironmentConfig(name=eb-e
> nvironment, xmppServerHosts=[mydomain.com], xmppDomain=mydomain.com, controlLogin=XmppCredentials(domain=auth.mydomain.com, usernam
> e=jibri, password=e9d251df044746ac62d7), controlMuc=XmppMuc(domain=internal.auth.mydomain.com, roomName=JibriBrewery, nickname=eb-jibri-1-1610468401298-4168), sipCon
> trolMuc=null, callLogin=XmppCredentials(domain=recorder.mydomain.com, username=recorder, password=653e8e8321ed71d8ea3a), stripFromRoomDomain=conference., usageTimeou
> tMins=0, trustAllXmppCerts=true)
> 2021-01-12 14:20:08.931 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.start() The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be acce
> pted
> 2021-01-12 14:20:08.996 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   ConfigSourceSupplier: key: 'http_api_port', type: 'kotlin.Int', source: 'command line args'
>   ConfigSourceSupplier: key: 'jibri.api.http.external-api-port', type: 'kotlin.Int', source: 'config'
> 2021-01-12 14:20:08.997 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'http_api_port' from source 'command line args' as type kotlin.Int
> 2021-01-12 14:20:08.999 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via ConfigSourceSupplier: key: 'http_api_port', type: 'kotlin.Int', source: 'c
> ommand line args': org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: not found
> 2021-01-12 14:20:09.000 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.api.http.external-api-port' from source 'config' as type kotlin.I
> nt
> 2021-01-12 14:20:09.001 WARNING: [42] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
> 2021-01-12 14:20:09.002 FINE: [1] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.api.http.external-api-port' from source 'config' as type kotl
> in.Int
> 2021-01-12 14:20:09.002 FINE: [1] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.api.http.external-api-port', type: 'kotlin.Int',
> source: 'config'
> 2021-01-12 14:20:09.003 INFO: [1] org.jitsi.jibri.Main.main() Using port 8002 for HTTP API
> 2021-01-12 14:20:09.590 INFO: [42] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
> 2021-01-12 14:20:09.591 INFO: [42] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
> 2021-01-12 14:20:09.781 INFO: [42] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.mydomain.com
> 2021-01-12 14:20:50.341 INFO: [65] org.jitsi.jibri.api.xmpp.XmppApi.handleJibriIq() Received JibriIq <iq to='jibri@auth.mydomain.com/cEgf9rsX' from='jibribrewery@int
> ernal.auth.mydomain.com/focus' id='amlicmlAYXV0aC53ZWJjb25mZXJlbmNpYS4yMWN0LmViLm1pbC5ici9jRWdmOXJzWABTaUozRy05NTAwMTk3AK3QeklM7so7E2Uf/YbF4wU=' type='set'><jibri xm
> lns='http://jitsi.org/protocol/jibri' action='start' recording_mode='file' room='testemoura@conference.mydomain.com' session_id='koyprbmljbysmyru' app_data='{"file_r
> ecording_metadata":{"share":true}}'/></iq> from environment [MucClient id=mydomain.com hostname=mydomain.com]
> 2021-01-12 14:20:50.343 INFO: [65] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Received start request, starting service
> 2021-01-12 14:20:50.683 INFO: [65] org.jitsi.jibri.api.xmpp.XmppApi.handleStartService() Parsed call url info: CallUrlInfo(baseUrl=https://mydomain.com, callName=tes
> temoura, urlParams=[])
> 2021-01-12 14:20:50.687 INFO: [65] org.jitsi.jibri.JibriManager.startFileRecording() Starting a file recording with params: FileRecordingRequestParams(callParams=CallParams(callUrlIn
> fo=CallUrlInfo(baseUrl=https://mydomain.com, callName=testemoura, urlParams=[])), sessionId=koyprbmljbysmyru, callLoginParams=XmppCredentials(domain=recorder.mydomain.com, username=recorder, password=653e8e8321ed71d8ea3a))
> 2021-01-12 14:20:50.734 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.chrome.flags' from source 'config' as type kotlin.collections.Li
> st<kotlin.String>
> 2021-01-12 14:20:50.736 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.chrome.flags' from source 'config' as type kotlin.collection
> s.List<kotlin.String>
> 2021-01-12 14:20:53.281 INFO: [65] org.openqa.selenium.remote.ProtocolHandshake.createSession() Detected dialect: OSS
> 2021-01-12 14:20:53.331 INFO: [65] org.jitsi.jibri.selenium.JibriSelenium.<init>() Starting empty call check with a timeout of PT30S
> 2021-01-12 14:20:53.373 FINE: [65] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.<init>() Detected os as OS: LINUX
> 2021-01-12 14:20:53.391 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   LambdaSupplier: 'JibriConfig::recordingDirectory'
>   ConfigSourceSupplier: key: 'jibri.recording.recordings-directory', type: 'kotlin.String', source: 'config'
> 2021-01-12 14:20:53.391 FINE: [65] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::recordingDirectory
> 2021-01-12 14:20:53.392 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::recordingDirectory': org.jitsi.metaconfig.C
> onfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
> 2021-01-12 14:20:53.393 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.recording.recordings-directory' from source 'config' as type kot
> lin.String
> 2021-01-12 14:20:53.395 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.recording.recordings-directory' from source 'config' as type
>  kotlin.String
> 2021-01-12 14:20:53.395 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.recording.recordings-directory', type: 'kotlin.S
> tring', source: 'config'
> 2021-01-12 14:20:53.396 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: checking for value via suppliers:
>   LambdaSupplier: 'JibriConfig::finalizeRecordingScriptPath'
>   ConfigSourceSupplier: key: 'jibri.recording.finalize-script', type: 'kotlin.String', source: 'config'
> 2021-01-12 14:20:53.397 FINE: [65] org.jitsi.jibri.config.debug() LambdaSupplier: Trying to retrieve value via JibriConfig::finalizeRecordingScriptPath
> 2021-01-12 14:20:53.397 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: failed to find value via LambdaSupplier: 'JibriConfig::finalizeRecordingScriptPath': org.jitsi.met
> aconfig.ConfigException$UnableToRetrieve$Error: class kotlin.KotlinNullPointerException
> 2021-01-12 14:20:53.398 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Trying to retrieve key 'jibri.recording.finalize-script' from source 'config' as type kotlin.S
> tring
> 2021-01-12 14:20:53.399 FINE: [65] org.jitsi.jibri.config.debug() ConfigSourceSupplier: Successfully retrieved key 'jibri.recording.finalize-script' from source 'config' as type kotl
> in.String
> 2021-01-12 14:20:53.400 FINE: [65] org.jitsi.jibri.config.debug() FallbackSupplier: value found via ConfigSourceSupplier: key: 'jibri.recording.finalize-script', type: 'kotlin.String
> ', source: 'config'
> 2021-01-12 14:20:53.400 INFO: [65] org.jitsi.jibri.service.impl.FileRecordingJibriService.<init>() Writing recording to /usr/local/eb/recordings/koyprbmljbysmyru, finalize script pat
> h /usr/local/bin/finalize_recording.sh
> 2021-01-12 14:20:53.409 FINE: [65] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: start:recording
> 2021-01-12 14:20:53.410 INFO: [65] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: IDLE -> BUSY
> 2021-01-12 14:20:53.411 FINE: [65] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:20:53.411 INFO: [65] org.jitsi.jibri.api.xmpp.XmppApi.updatePresence() Jibri reports its status is now JibriStatus(busyStatus=BUSY, health=OverallHealth(healthStatus=HE
> ALTHY, details={})), publishing presence to connections
> 2021-01-12 14:20:53.417 INFO: [65] org.jitsi.jibri.api.xmpp.XmppApi.handleStartJibriIq() Sending 'pending' response to start IQ
> 2021-01-12 14:20:56.800 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Visiting url https://mydomain.com/testemoura#config.iAmRecorder=true&config.
> externalConnectUrl=null&config.startWithAudioMuted=true&config.startWithVideoMuted=true&interfaceConfig.APP_NAME="Jibri"&config.analytics.disabled=true&config.p2p.enabled=false&confi
> g.prejoinPageEnabled=false&config.requireDisplayName=false
> 2021-01-12 14:20:58.741 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:20:59.272 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:20:59.791 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:00.308 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:00.828 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:01.348 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:01.877 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:02.397 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:02.916 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:03.585 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:04.104 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:04.619 FINE: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.apply() Not joined yet: Cannot read property 'isJoined' of undefined
> 2021-01-12 14:21:06.051 INFO: [77] org.jitsi.jibri.selenium.pageobjects.CallPage.visit() Waited 7411 milliseconds for call page to load
> 2021-01-12 14:21:06.120 INFO: [77] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Running
> 2021-01-12 14:21:06.290 INFO: [77] org.jitsi.jibri.service.impl.FileRecordingJibriService.invoke() Selenium joined the call, starting the capturer
> 2021-01-12 14:21:06.378 INFO: [77] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.launch() Starting ffmpeg with command ffmpeg -y -v info -f x11grab -draw_mouse 0 -r 30 -s 1280x720 -thr
> ead_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 /usr/local/eb/recordings/koyprbmljbysmyru/testemoura_2021-01-12-14-20-53.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, /usr/l
> ocal/eb/recordings/koyprbmljbysmyru/testemoura_2021-01-12-14-20-53.mp4])
> 2021-01-12 14:21:07.749 INFO: [80] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Starting up to Running
> 2021-01-12 14:21:07.752 INFO: [80] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Runnin
> g
> 2021-01-12 14:21:07.757 INFO: [80] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service started up successfully, sending on iq <iq to='jibribrewery@internal.auth.mydomain.com/focus' id='RfnUa-52' type='set'><jibri xmlns='http://jitsi.org/protocol/jibri' status='on'/></iq>
> 2021-01-12 14:21:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:21:21.149 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:21:36.266 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? true
> 2021-01-12 14:21:51.134 SEVERE: [26] org.jitsi.jibri.selenium.pageobjects.CallPage.numRemoteParticipantsMuted() error running numRemoteParticipantsMuted script: Cannot read property
> 'getParticipants' of undefined class java.lang.String
> 2021-01-12 14:21:51.150 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? true
> 2021-01-12 14:22:06.197 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:22:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:22:21.140 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? false
> 2021-01-12 14:22:36.154 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? true
> 2021-01-12 14:22:51.131 SEVERE: [26] org.jitsi.jibri.selenium.pageobjects.CallPage.numRemoteParticipantsMuted() error running numRemoteParticipantsMuted script: Cannot read property
> 'getParticipants' of undefined class java.lang.String
> 2021-01-12 14:22:51.149 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? true
> 2021-01-12 14:23:06.204 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:23:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:23:21.125 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? false
> 2021-01-12 14:23:36.176 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? true
> 2021-01-12 14:23:51.133 SEVERE: [26] org.jitsi.jibri.selenium.pageobjects.CallPage.numRemoteParticipantsMuted() error running numRemoteParticipantsMuted script: Cannot read property
> 'getParticipants' of undefined class java.lang.String
> 2021-01-12 14:23:51.148 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? true
> 2021-01-12 14:24:06.188 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:24:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:24:21.137 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? false
> 2021-01-12 14:24:36.147 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? true
> 2021-01-12 14:24:51.140 SEVERE: [26] org.jitsi.jibri.selenium.pageobjects.CallPage.numRemoteParticipantsMuted() error running numRemoteParticipantsMuted script: Cannot read property
> 'getParticipants' of undefined class java.lang.String
> 2021-01-12 14:24:51.156 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? true
> 2021-01-12 14:25:06.183 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:25:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:25:21.104 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? false
> 2021-01-12 14:25:36.168 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=0, upload=0, video={download=0,
>  upload=0}}, all clients muted? true
> 2021-01-12 14:25:51.210 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? false
> 2021-01-12 14:26:06.120 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=822, upload=0, video={download=
> 666, upload=0}}, all clients muted? false
> 2021-01-12 14:26:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:26:21.132 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=879, upload=0, video={download=
> 624, upload=0}}, all clients muted? false
> 2021-01-12 14:26:36.116 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=158, upload=0, video={download=
> 158, upload=0}}, all clients muted? false
> 2021-01-12 14:26:51.119 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=629, upload=0, video={download=
> 629, upload=0}}, all clients muted? false
> 2021-01-12 14:27:06.119 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=138, upload=0, video={download=
> 138, upload=0}}, all clients muted? false
> 2021-01-12 14:27:07.829 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
> 2021-01-12 14:27:21.124 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {audio={download=0, upload=0}, download=207, upload=0, video={download=
> 207, upload=0}}, all clients muted? false

EDIT:
These logs are after a disable and enable in the jibri-ephemeral-container service, and it seems to working fine now. I’ll do more tests and update the answer. Thanks again!

1 Like

Hello @emrah , the problem appeared again… I tried even to comment all finalize_recording script to see if it was causing the split, but the problem persist, even nwo inside the random-named folder.

I also tried to reduce the number of jibri instances to 4, but no success.

Each 30 seconds the jicofo logs show the following message:

Jicofo 2021-01-13 08:28:58.506 INFO: [1372] org.jitsi.jicofo.recording.jibri.JibriSession.log() Successfully resumed session with another Jibri

And it is the exact time when recording is split. Any ideas?

There may be an issue related in UDP/10000 access of jibri. Can you see the video and the audio in MP4?

1 Like

Yes, the audio and video of the recordings are ok. These Jibri nodes is communicating with JMS with the network inter-containers, right?

Yes if JMS and Jibri are on the same host

1 Like

Yes, they are.
It can be the JVB that is running on port 10001 in another machine?

I didn’t understand this. Is there an additional JVB?
If so, could you test the recording while it’s closed

1 Like

It recorded smoothly!
So it appears to be the communication with the JVB1 maybe?

I remember to do a NAT configuration in nftables to this additional JVB work (following the configs you recommended in replies on this post), is there any other configuration to do for Jibri?

Could you paste for the additional JVB
/etc/jitsi/videobridge/sip-communicator.properties

1 Like