Easy way to create a Jitsi cluster

org.ice4j.ice.harvest.DISABLE_AWS_HARVESTER=true
org.ice4j.ice.harvest.STUN_MAPPING_HARVESTER_ADDRESSES=meet-jit-siturnrelay.jitsi.net:443
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc
org.jitsi.videobridge.xmpp.user.shard.HOSTNAME=mydomain.com
org.jitsi.videobridge.xmpp.user.shard.DOMAIN=auth.mydomain.com
org.jitsi.videobridge.xmpp.user.shard.USERNAME=jvb
org.jitsi.videobridge.xmpp.user.shard.PASSWORD=4qWpXOba
org.jitsi.videobridge.xmpp.user.shard.MUC_JIDS=JvbBrewery@internal.auth.mydomain.com
org.jitsi.videobridge.xmpp.user.shard.MUC_NICKNAME=113d4a45-c09e-4d82-8c3e-c9a23af7803d
org.jitsi.videobridge.xmpp.user.shard.DISABLE_CERTIFICATE_VERIFICATION=true
org.jitsi.videobridge.SINGLE_PORT_HARVESTER_PORT=10001
#org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=172.22.22.15
#org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=192.168.120.11
org.jitsi.videobridge.rest.private.jetty.port=8080
org.jitsi.videobridge.rest.private.jetty.host=0.0.0.0

If JMS and the additional JVB are on the same network, could you uncomment the harvester lines

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=172.22.22.15
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=192.168.120.11

Assuming 192.168.120.11 is the right private IP

1 Like

It seemed to work! Many Thanks!!

I’ll extend the tests and if it fails, I reply here again.

1 Like

Hello @emrah ,
It is working okay now, but I wanted to remove the all-muted timeout in jibri.conf:

call-status-checks {
   no-media-timeout = 30 seconds
   all-muted-timeout = 10 minutes
   default-call-empty-timeout = 30 seconds
}

I tried to comment the timeout lines and also let 0 in “all-muted timeout” but it still does not work. How can I change this? Yes, I made the changes in the jibri-template and restart the service after.

yes, this is the correct way but I don’t know what jibri does when there are no default values in the config file. Probably jibri will set the hardcoded defaults when these lines are commented.

How did you check the result?

1 Like

If I start a room and left only a youtube video running, the record only last 10min, as defined in configuration. As not exist any errors in log, the recording terminates “clean”, it seems to be some configuration that stops the record indeed.

Could you check /var/log/jitsi/jibri/log.0.txt while recording?

lxc-attach -n eb-jibri-1
tail -f /var/log/jitsi/jibri/log.0.txt

Especially all clients muted

1 Like

2021-01-14 14:25:01.358 INFO: [326] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Starting up to Running
2021-01-14 14:25:01.358 INFO: [326] org.jitsi.jibri.service.impl.FileRecordingJibriService.invoke() Selenium joined the call, starting the capturer
2021-01-14 14:25:01.594 INFO: [326] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.launch() 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 /usr/local/eb/recordings/wissnkjyrimcipsw/testemoura_2021-01-14-14-24-48.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/local/eb/recordings/wissnkjyrimcipsw/testemoura_2021-01-14-14-24-48.mp4])
2021-01-14 14:25:02.990 INFO: [330] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Starting up to Running
2021-01-14 14:25:02.992 INFO: [330] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Starting up to Running
2021-01-14 14:25:02.992 INFO: [330] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service started up successfully, sending on iq
2021-01-14 14:25:16.403 INFO: [26] org.jitsi.jibri.selenium.JibriSelenium.run() Jibri client receive bitrates: {}, all clients muted? true
2021-01-14 14:25:31.272 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-14 14:25:40.373 FINE: [26] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2021-01-14 14:25:46.278 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-14 14:26:01.276 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

After the 10min:

2021-01-14 14:35:31.269 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.onSeleniumStateChange() Transitioning from state Running to Finished
2021-01-14 14:35:31.270 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.onServiceStateChange() File recording service transitioning from state Running to Finished
2021-01-14 14:35:31.270 INFO: [352] org.jitsi.jibri.api.xmpp.XmppApi.invoke() Current service finished, sending off iq
2021-01-14 14:35:31.270 FINE: [352] org.jitsi.jibri.statsd.JibriStatsDClient.incrementCounter() Incrementing statsd counter: stop:recording
2021-01-14 14:35:31.272 INFO: [352] org.jitsi.jibri.JibriManager.stopService() Stopping the current service
2021-01-14 14:35:31.272 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Stopping capturer
2021-01-14 14:35:31.272 INFO: [352] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() Stopping ffmpeg process
2021-01-14 14:35:31.712 INFO: [352] org.jitsi.jibri.util.JibriSubprocess.ffmpeg.stop() ffmpeg exited with value 255
2021-01-14 14:35:31.713 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Quitting selenium
2021-01-14 14:35:31.714 INFO: [330] org.jitsi.jibri.capture.ffmpeg.FfmpegCapturer.onFfmpegStateMachineStateChange() Ffmpeg capturer transitioning from state Running to Finished
2021-01-14 14:35:31.733 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Participants in this recording:
2021-01-14 14:35:31.748 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving call and quitting browser
2021-01-14 14:35:31.749 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Recurring call status checks cancelled
2021-01-14 14:35:31.761 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 18 log entries for type browser
2021-01-14 14:35:31.942 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 4588 log entries for type driver
2021-01-14 14:35:33.220 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Got 0 log entries for type client
2021-01-14 14:35:33.220 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Leaving web call
2021-01-14 14:35:33.558 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Quitting chrome driver
2021-01-14 14:35:33.702 INFO: [352] org.jitsi.jibri.selenium.JibriSelenium.leaveCallAndQuitBrowser() Chrome driver quit
2021-01-14 14:35:33.702 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.stop() Finalizing the recording
2021-01-14 14:35:33.735 INFO: [352] org.jitsi.jibri.service.impl.FileRecordingJibriService.finalize() Recording finalize script finished with exit value 0
2021-01-14 14:35:33.737 INFO: [352] org.jitsi.jibri.status.JibriStatusManager.log() Busy status has changed: BUSY -> IDLE
2021-01-14 14:35:33.738 FINE: [352] org.jitsi.jibri.webhooks.v1.WebhookClient.invokeSuspend() Updating 0 subscribers of status
2021-01-14 14:35:33.739 INFO: [352] org.jitsi.jibri.api.xmpp.XmppApi.updatePresence() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections

it seems that jibri stopped because of “all clients muted? true
I tried to change all-muted-timeout and it worked for me (I decreased to 10 seconds). I didn’t try to increase…

Does the decreasing work for you?

1 Like

I wanted to increase this timeout to infinity, but it didn’t work; I tried to put 120 minutes, but it didn’t work too.

But no problem, it is a very small problem, as in real environment probably it won’t happen (10 minutes of all muted).

Thank you very much!

1 Like