knb:meet-server

Dies ist eine alte Version des Dokuments!


Freifunk München Jitsi Server Setup

The setup consists of multiple Jitsi videobridges which can be added and removed on demand as well as one control server which does the loadbalancing decisions.

Each server has at least 2vCPUs, 4GB RAM and 10GB disc space. But the most important thing is bandwidth so a 1Gbit/s link is necessary for smooth operation.

We installed the first instance as described on https://jitsi.org/downloads and stopped the videobridge there, because the first server should only act as a control server. If you only a single instance skip the step of disabling the videobridge just set the settings, restart and be done.

Disable the videobridge:

# systemctl stop jitsi-videobridge.service
# systemctl mask jitsi-videobridge.service

Disable unnecessary and broken features on the control server: /etc/jitsi/meet/meet.ffmuc.net-config.js

defaultLanguage: 'de',
disableThirdPartyRequests: true,
enableLipSync: false

Most important thing is to get hostnames and DNS settings correct for each instance, otherwise your setup will fail.

Jitsi instances balance based on metrics published by the videobridges to jicofo. To allow the videobridges to publish those metrics we need to change some settings in the prosody settings.

In the Admin section you need to add all the bridges. /etc/prosody/prosody.cfg.lua

admins = {
        "jvb1.meet.ffmuc.net",
        "jvb2.meet.ffmuc.net",
        "jvb3.meet.ffmuc.net",
        "jvb4.meet.ffmuc.net",
        "jvb5.meet.ffmuc.net",
        "jvb6.meet.ffmuc.net",
        "jvb7.meet.ffmuc.net",
        "jvb8.meet.ffmuc.net",
        "jvb9.meet.ffmuc.net",
        "jvb10.meet.ffmuc.net",
        "jvb11.meet.ffmuc.net",
        "jvb12.meet.ffmuc.net",
        "jvb13.meet.ffmuc.net",
        "jvb14.meet.ffmuc.net",
        "jvb15.meet.ffmuc.net"
}

And you also need to assign a component to each videobridge in your site config. /etc/prosody/conf.d/meet.ffmuc.net.cfg.lua

Component "jvb1.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb2.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb3.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb4.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb5.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb6.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb7.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb8.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb9.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb10.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb11.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb12.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb13.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb14.meet.ffmuc.net"
    component_secret = "pass"
Component "jvb15.meet.ffmuc.net"
    component_secret = "pass"

On those servers only the jitsi-videobridge is installed there is no need for any other jitsi component.

Again watch your DNS and hostname setup!

First you need to change /etc/jitsi/videobridge/config to fit your install.

Settings may vary on other systems than Debian Buster

The „subdomain“ setting has to match first part of your hostname in this example the hostname is jvb1.meet.ffmuc.net.

We also enable statistics for later polling via Telegraf (–apis).

# Jitsi Videobridge settings

# sets the XMPP domain (default: none)
JVB_HOSTNAME=meet.ffmuc.net

# sets the hostname of the XMPP server (default: domain if set, localhost otherwise)
JVB_HOST=meet.ffmuc.net

# sets the port of the XMPP server (default: 5275)
JVB_PORT=5347

# sets the shared secret used to authenticate to the XMPP server
JVB_SECRET=pass

# extra options to pass to the JVB daemon
JVB_OPTS="--subdomain=jvb1 --apis=rest,xmpp"


# adds java system props that are passed to jvb (default are for home and logging config file)
JAVA_SYS_PROPS="-Dnet.java.sip.communicator.SC_HOME_DIR_LOCATION=/etc/jitsi -Dnet.java.sip.communicator.SC_HOME_DIR_NAME=videobridge -Dnet.java.sip.communicator.SC_LOG_DIR_LOCATION=/var/log/jitsi -Djava.util.logging.config.file=/etc/jitsi/videobridge/logging.properties --add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED"

Then we need to adjust the sip-communicator settings:

This is also important because we enable the stats on the videobridge here. If not activated there will be no loadbalancing decisions.

/etc/jitsi/videobridge/sip-communicator.properties

org.jitsi.videobridge.AUTHORIZED_SOURCE_REGEXP=focus@auth.meet.ffmuc.net/.*
org.jitsi.videobridge.ENABLE_STATISTICS=true
org.jitsi.videobridge.STATISTICS_INTERVAL=1000
org.jitsi.videobridge.STATISTICS_TRANSPORT=muc,colibri,pubsub
org.jitsi.videobridge.PUBSUB_SERVICE=meet.ffmuc.net
org.jitsi.videobridge.PUBSUB_NODE=sharedStatsNode

We use telegraf to poll the statistics of the videobridges. We just use the exec section of Telegraf, to get the data.

Example: https://stats.ffmuc.net/d/U6sKqPuZz/meet-stats?orgId=1&refresh=1m

/etc/telegraf/telegraf.conf

[[inputs.exec]]
   commands = [
     "curl localhost:8080/colibri/stats",
   ]
   name_suffix = "_meet"
  data_format = "json"

Use Chrome or it's derivates as client or the Mobile and Desktop Apps work as well.

Avoid using Firefox.

  • knb/meet-server.1584787206.txt.gz
  • Zuletzt geändert: 2020/06/09 17:01
  • (Externe Bearbeitung)