Jitsi-meet for school - self hosting field experience - feedback please

Hello Jitsi Team,
I watched your last community call and like to support you by self hosting jitsi meet for schools.
But I or we as the community may need a few more pointers or documentation, the forum is great, but hard to track down “pro-tips”.

Context:

  • A few friends and enthusiast want to help German schools to provide jitsi calls for classes (initially even just 1 class at a time) with a video call. German privacy guidelines are very prohibitive of US owned entities, even hosting in AWS … :wink:
  • I have been installing various jitsi meet’s now in AWS, more info below. And I happy to contribute to better documentation :wink:
  • We run jitsi on AWS on Ubuntu on c5.xlarge or c5.2xlarge, so far all modules on single server.
  • Participants join the conferences with everything you can imagine, mobile, iPad, Android, Laptop Win/Mac, Firefox, Chromium, Chrome on iPad, Safari on ipad(works just without cam), Jitsi app, …
  • Connectivity for participants ranges from pretty good, to 1 Mbit down/up or maybe even less.

Goal:

  • class with 30 participants
  • video can be low-res all the time
  • audio lag/sync issue doesnt matter
  • audio needs to be so that folks can understand each other
  • only the last 3 speaker videos are visible (thats ok)
  • at least the video of the moderator (teacher) should be visible to 80% of participants when she speaks
  • moderator needs to login, kids just get the link and join after moderator got in

Basically trying to get to a self hosted jitsi that allows for somewhat OK conferences with the soft limit size of 35 participants, as mentioned in the other post.

What we did

  1. Installed common Debian method with secure domain following
    https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md
    https://github.com/jitsi/jicofo#secure-domain
    And tested the domain with this that SSL is all green:
    https://www.sslshopper.com/ssl-checker.html

Our changes in configs (apart what is anyway needed according to secure domain)
#increase some limits
printf “DefaultLimitNOFILE=65000\nDefaultLimitNPROC=65000\nDefaultTasksMax=65000\n” >> /etc/systemd/system.conf
printf “net.core.rmem_max=10485760\nnet.core.netdev_max_backlog=100000” >> /etc/sysctl.conf
sudo sysctl -w net.core.rmem_max=10485760
sudo sysctl -w net.core.netdev_max_backlog=100000

#changes in /etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.DISABLE_AUTOLOGIN=true
org.jitsi.jicofo.MAX_SSRC_PER_USER=1000

#changes in /etc/jitsi/meet/-config.js
resolution: 320,
constraints: {
video: {
aspectRatio: 16 / 9,
height: {
ideal: 320,
max: 480,
min: 120
}
}
},
defaultLanguage: ‘de’,
startAudioMuted: 3,
startVideoMuted: 3,
channelLastN: 3,
enableLipSync: false,
requireDisplayName: true,
enableClosePage: true,

I also started an install for multi bridge, but with current goal, I stopped looking into this.

  1. Tried to follow this guide to get JVB2
    apt-get remove jitsi-meet
    apt-get install jitsi-videobridge2
  • had some issues to get this right and only get JVB2 from unstable
  • installed now all jitsi-meet from unstable
  • got the awesome feature that the moderator can mute all participants
  • but had initially a version where some mobile phones did not get the web page “follow to app” or so, an install a few hours later worked
  • noticed I did not need to do the NAT related public/private settings in video bridge here
  1. Install the docker version
  • Following: https://github.com/jitsi/docker-jitsi-meet
  • oh man this install was a breeze
  • not much testing yet, still need to get a sense, does this use already JVB2, does this set any of the recommended advanced configs? E.g. prosody0.11 epoll?

Results so far

  • JVB1 and 2 gave similar results, JVB maybe a bit better, maybe issues come from jicofo
  • some participants cant join, or drop out of calls (why?)
  • some participants can see others on video, while others cant see the speaker, audio drops, …
  • server shows little load (10-20% CPU), network is less than 100 Mbit, memory is very low and swap not touched

These parameters seemed to help the most

  • channelLastN: 3,
  • and all the limit changes on linux, got a lot of UDP errors in nginx log before

What we like to go for

  • I like to basically dumb down jitsi to very basic functionality, in the assumption this could help, especially with low or bad bandwith participants
  • maybe try to have jitsi-meet send only single low res video stream
  • need to find a way to tell mobile apps to set low res video, and 1 stream only …
  • ideally even find a way that participants maybe receive a single mixed video stream with audio stream, yes I know this is not the concept of jitsi

Questions / Asks
A) Does docker install use already JVB2?
How could I check this?

B) Can you share “all” the advanced configs you are currently trying and testing on meet.jit.si?

  • what instance types do you use to allow for 35 participant soft-limit?
  • do you think increasing to 16 vCPU would gain anything, even if CPU, network and mem seems not to bottleneck?
  • what jitsi meet,videbridge,jicofo config do you use? Can you share the actual files?
  • which settings for nginx and video bridge to set high file descriptors (where to set these, to what numbers)
  • how to install prosody0.11 and enable epoll in an already installed jitsi environment/sever

C) How can I configure a single video stream from jitsi-meet?
Would the following do the trick?
disableSimulcast: true,
resolution: 240,
constraints: {
video: {
aspectRatio: 16 / 9,
height: {
ideal: 240,
max: 240,
min: 240
}
}
},

D) What other configs make sense to reduce complexity or potentially allow for more consistent experience? Especially for the range of end users with potentially low end network

  • Someone mentioned a change here, what does ‘false’ for this setting mean, any impact on basic functionality?
    openBridgeChannel: false,
2 Likes

Quick update, we actually did on Friday 2 relatively ok video conferences with 2 classes each about 22 participants. All the above settings seem to make it ok.

We did notice the first conference was a lot better, kind of all participants could see the speaker video and so on.
In the second video was only visible to a few participants.

Attached the screenshot of the network traffic. Looks like the 2nd call had a lot more data (video) going to the server and less getting out.
I suspect there were more folks with mobile, could this affect the bridge handling the conference?

Is there a possibility to control mobile phones and their resolution that is sent to the bridge?
I read in previous post that this is supposed to be the case, but I dont think it is, mobile resolution is always higher than the contrains I define.

1 Like

One of the main culprits for problems in my setup has been Firefox. That’s why I am strongly thinking about blocking those for now. “A lot of data” might be a sign of someone not using a chromium based browser.

BTW: The jitsi-meet-electron client was just released as 2.0 version.