Benutzer-Werkzeuge

Webseiten-Werkzeuge


infrastruktur:container:bbb

Dies ist eine alte Version des Dokuments!


Big Blue Button

Verantwortung Malte
Container keine, dedizierter Root-Server
W. Ports keine, dedizierter Root-Server
OS Ubuntu 20.04.6 LTS
Server skaro
Zustand Produktiv

Hier findet sich die technische Dokumentation des Chaotikum Big Blue Buttons. Diese Dokumentation beinhaltet alle Konfigurationen, die nicht direkt mit dem Datenschutz in Verbindung stehen.

Alle für den Datenschutz relevanten Konfigurationen stehen hier.

Die allgemeine Nutzungshinweise finden sich hier.

Services

Serviceübersicht Version
BigBlueButton BigBlueButton Server 2.7.1 (425)
Greenlight release-3.0.7.1
BigBlueButton Exporter 0.6.1 ???

BigBlueButton ist eine Sammlung sehr vieler verschiedener Dienste. Die Versionsnummer von BigBlueButton beschreibt eine aufeinander abgestimmte Sammlung von Diensten.

BBB installieren und aktualisieren

wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v2.7.x-release/bbb-install.sh | bash -s -- -v focal-270 -s plaudern.chaotikum.org -e infrastruktur@chaotikum.org -g -w

BBB neustarten

Nach Änderungen an der Config muss BBB neugestartet werden:

bbb-conf --restart

Greenlight wird im Ordner /root/greenlight-v3 neugestartet mit

docker-compose down
docker-compose up -d

BBB-Version auslesen

bbb-conf --version

gibt sehr viele verschiedenen Versionen von allem möglichen aus, aber nicht die Gesamt-Version von BBB. Die kriegt man am Anfang als Ausgabe von

bbb-conf --check

ALT: LDAP-Authentifizierung

LDAP-Authentifizierung in Greenlight-Konfiguration /root/greenlight-v3/.env aktivieren:

LDAP_SERVER=ldap.chaotikum.net
LDAP_PORT=636
LDAP_METHOD=ssl
LDAP_UID=uid
LDAP_BASE=dc=chaotikum,dc=org
LDAP_AUTH=simple
LDAP_BIND_DN=uid=bigbluebutton,ou=users,ou=internal,dc=chaotikum,dc=org
LDAP_PASSWORD=PASSWORD
LDAP_ATTRIBUTE_MAPPING=uid=dn;name=displayName;email=mail;nickname=uid;image=jpegPhoto
LDAP_FILTER=(memberOf=cn=freigeschaltet,ou=groups,ou=internal,dc=chaotikum,dc=org)

In der gleichen Konfigurationsdatei wird die Registrierung von Accounts über Greenlight deaktiviert:

ALLOW_GREENLIGHT_ACCOUNTS=false

NEU: LDAP-Authentifizierung

Es gibt keine LDAP-Unterstützung in Greenlight 3 mehr. Deswegen machen wir jetzt Open ID Connect.

Nachteil: Wir können aktuell noch nicht dafür sorgen, dass nur freigegebene User sich anmelden können. Deswegen können das jetzt erstmal alle. Das ist so mittelgut, aber bei BBB auch nicht sehr schlimm.

Open ID Connect in Greenlight-Konfiguration /root/greenlight-v3/.env aktivieren:

### EXTERNAL AUTHENTICATION METHODS

OPENID_CONNECT_CLIENT_ID=greenlight
OPENID_CONNECT_CLIENT_SECRET=SECRET
OPENID_CONNECT_ISSUER=https://me.chaotikum.org/auth/realms/Chaotikum
OPENID_CONNECT_REDIRECT=https://plaudern.chaotikum.org

Mail-Benachrichtigungen

E-Mail-Benachrichtigung in Greenlight-Konfiguration /home/linadmin/greenlight/.env aktivieren:

ALLOW_MAIL_NOTIFICATIONS=true

SMTP-Server in Greenlight-Konfiguration /home/linadmin/greenlight/.env einrichten:

SMTP_SERVER=mail.chaotikum.net
SMTP_PORT=587
SMTP_DOMAIN=chaotikum.org
SMTP_USERNAME=bigbluebutton@chaotikum.org
SMTP_PASSWORD=PASSWORD
SMTP_AUTH=plain
SMTP_STARTTLS_AUTO=true


# Specify the email address that all mail is sent from
SMTP_SENDER=bigbluebutton@chaotikum.org

Konfiguration testen im Verzeichnis /home/linadmin/greenlight:

docker run --rm --env-file .env bigbluebutton/greenlight:v2 bundle exec rake conf:check

Greenlight neustarten im Verzeichnis /home/linadmin/greenlight:

docker-compose down
docker-compose up -d

ALT: SSL-Zertifikate von Let's Encrypt mit Certbot

Wir verwenden Let's Encrypt gemäß der Anleitung Using Let’s Encrypt von BBB.

Damit der Certbot den Nginx neustartet, wenn ein Zertifikat erneuert wurde, muss die Zeile

deploy-hook = systemctl reload nginx

in der Datei /etc/letsencrypt/cli.ini ergänzt werden.

NEU: Let's Encrypt ist integriert und passiert automatisch.

HTTPS-Weiterleitung

Am Anfang von /etc/nginx/sites-available/bigbluebutton einen weiteren Server für HTTPS ergänzen:

server {
  listen *:80;
  listen [::]:80;
  server_name plaudern.chaotikum.org;
  server_tokens off; ## Don't show the nginx version number, a security best practice

  location / {
    return 301 https://plaudern.chaotikum.org:443$request_uri;
  }

  error_log /var/log/nginx/bigbluebutton.error.log;
  access_log /dev/null;
}

Im folgenden Server listen 80; und listen [::]:80; auskommentieren.

Außerdem kann /etc/nginx/sites-available/default gelöscht werden.

Töne statt Ansagen für Mute / Unmute

Die Ansagen You are now muted. und You are now unmuted sind zu lang und nerven, wenn man sich mal schnell muten will.

In der Konfiguration /opt/freeswitch/etc/freeswitch/autoload_configs/conference.conf.xml die Parameter muted-sound und unmuted-sound in allen Profilen anpassen:

<!-- File to play to acknowledge muted -->
<param name="muted-sound" value="tone_stream://%(100,0,500)"/> <!-- was conference/conf-muted.wav -->
<!-- File to play to acknowledge unmuted -->
<param name="unmuted-sound" value="tone_stream://%(100,0,700)"/> <!-- was conference/conf-unmuted.wav -->

Präsentation am Anfang verbergen

In /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml wird der Client konfiguriert. Alle Optionen befinden sich unter dem Wurzelnknoten public. Dort im Knoten layout die Option autoSwapLayout auf true setzen, damit die Präsentation initial ausgeblendet wird. Sie kann dann von allen Teilnehmern individuell eingeblendet werden.

Im Knoten presentation die Option restoreOnUpdate auf true setzen, damit bei allen die Präsentation automatisch eingblendet wird, sobald jemand etwas mit der Präsentation tut.

Schlechtere Qualität der Webcams

Um die Bandbreite zu verringern, die Qualität der Webcams reduzieren.

In /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml wird der Client konfiguriert. Alle Optionen befinden sich unter dem Wurzelnknoten public.

Im Knoten kurento werden die Profile konfiguriert. Nach der Installation gab es folgende relevante Profile:

    cameraProfiles:
    - id: low
      name: Low quality
      default: false
      bitrate: 100
    - id: medium
      name: Medium quality
      default: true
      bitrate: 200
    - id: high
      name: High quality
      default: false
      bitrate: 500
    - id: hd
      name: High definition
      default: false
      bitrate: 800

Hier kann man einfach den default von medium auf low verschieben.

Die Doku sagt

The settings for bitrate are in kbits/sec (i.e. 100 kbits/sec). The lowest setting allowed for WebRTC is 30 Kbits/sec.

Begrüßungstext

Anpassung des Begrüßungstexts im Chat in der Datei /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties folgende Konfigurationen anpassen:

defaultWelcomeMessage=Willkommen im Raum <b>%%CONFNAME%%</b>
defaultWelcomeMessageFooter=auf dem <a href="https://wiki.chaotikum.org/hackspace:infrastruktur:bbb" target="_blank"><u>BigBlueButton des Chaotikums</u></a>

NEU: Aufzeichnungen deaktivieren

In der /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties:

  • disableRecordingDefault=true
  • autoStartRecording=false
  • allowStartStopRecording=false
  • breakoutRoomsRecord=false

ALT: Aufzeichnungen aktivieren

In der /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties:

  • disableRecordingDefault=false
  • autoStartRecording=false
  • allowStartStopRecording=true
  • breakoutRoomsRecord=false

Damit die Aufzeichnungen nicht auf der SSD, sondern auf einem externen NFS-Laufwerk landen, ist dies über /etc/fstab eingebunden:

# netcup storage
46.38.248.210:/voln101829a1/bbb /mnt/bbb             nfs     rw      0 0

Damit NFS funktioniert:

apt-get install nfs-utils

Folgende Symlinks:

/var/bigbluebutton/recording -> /mnt/bbb/bigbluebutton/recording
/var/freeswitch/meetings -> /mnt/bbb/freeswitch/meetings
/var/kurento/recordings -> /mnt/bbb/kurento/recordings
/var/kurento/screenshare -> /mnt/bbb/kurento/screenshare

Rechte der Symlinks richtig setzen:

chown -h bigbluebutton:bigbluebutton /var/bigbluebutton/recording
chown -h freeswitch:freeswitch /var/freeswitch/meetings
chown -h kurento:kurento /var/kurento/screenshare /var/kurento/recordings

IPv6-Support

Anleitung

Datei /etc/nginx/conf.d/bigbluebutton_sip_addr_map.conf:

map $remote_addr $freeswitch_addr {
    "~:"    [2a03:4000:37:6fe::3];
    default    91.132.145.214;
}

In /etc/bigbluebutton/nginx/sip.nginx das vorhandene proxy_pass durch

proxy_pass http://$freeswitch_addr:5066;

ersetzen.

In /opt/freeswitch/etc/freeswitch/sip_profiles/external-ipv6.xml ergänzen:

<param name="enable-3pcc" value="proxy"/>

Unser coturn verwenden

Wir betreiben unter stun.chaotikum.org einen coturn Server. Siehe alderaan.

Anleitungen:

In /opt/freeswitch/etc/freeswitch/vars.xml anpassen:

<X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.chaotikum.org"/>
<X-PRE-PROCESS cmd="set" data="external_sip_ip=stun:stun.chaotikum.org"/>

Datei /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
            ">

    <bean id="stun1" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:stun.chaotikum.org"/>
    </bean>
    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="SECRET"/>
        <constructor-arg index="1" value="turns:stun.chaotikum.org:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="turn2" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="SECRET"/>
        <constructor-arg index="1" value="turn:stun.chaotikum.org:443?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="stunTurnService" class="org.bigbluebutton.web.services.turn.StunTurnService">
        <property name="stunServers">
            <set>
                <ref bean="stun1" />
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn1"/>
                <ref bean="turn2"/>
            </set>
        </property>
    </bean>
</beans>

SECRET ist das static-auth-secret das im coturn konfiguriert ist.

BigBlueButton Exporter

Anleitung

Wir verwenden die Docker Installation.

Datei /home/linadmin/bbb-exporter/docker-compose.yaml und /home/linadmin/bbb-exporter/secrets.env nach Anleitung.

Datei /etc/bigbluebutton/nginx/monitoring.nginx:

location /metrics/ {
    proxy_pass http://127.0.0.1:9688/;
    include proxy_params;
}

Läuft unter https://plaudern.chaotikum.org/metrics/

prometheus-node-exporter

Die Version aus Paketquellen

apt install prometheus-node-exporter

ist leider viel zu alt. Deswegen müssen wir selber installieren. Dazu

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
tar xvf node_exporter-1.1.2.linux-amd64.tar.gz
mv node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin/node_exporter

User anlegen:

useradd -rs /bin/false node_exporter

Datei /lib/systemd/system/node_exporter.service:

[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
systemctl enable node_exporter
systemctl start node_exporter

Läuft nur über IPv6 unter http://plaudern.chaotikum.org:9100/metrics

Default-Präsentation anpassen

Wir haben eine eigene Default-Präsentation unter

/var/www/bigbluebutton-default/chaotikum.pdf

Damit diese verwendet wird, muss in der Datei

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties

folgende Zeile angepasst werden:

# Default Uploaded presentation file
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/chaotikum.pdf

Anleitung: Change the default presentation

Webcam-Hintergrund-Bilder anpassen

Wir haben eigene Hintergrundbilder unter

/usr/share/meteor/bundle/programs/web.browser/app/resources/images/virtual-backgrounds

Damit diese verwendet werden, muss in der Datei

/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml

folgende Information angepasst werden:

public:
  virtualBackgrounds:
    enabled: true
    storedOnBBB: true
    showThumbnails: true
    imagesPath: /resources/images/virtual-backgrounds/
    thumbnailsPath: /resources/images/virtual-backgrounds/thumbnails/
    fileNames:
      - sofaecke.jpg
      - werkstatt.jpg
      - chaotikum-logo.jpg
      - chaotikum.jpg
      - home.jpg
      - coffeeshop.jpg
      - board.jpg

Anleitung: Use custom images for virtual background

Die Beschreibungen der Hintergründe könnte man in den Dateien

/usr/share/meteor/bundle/programs/web.browser/app/locales/en.json
/usr/share/meteor/bundle/programs/web.browser/app/locales/de.json

anpassen. Dafür muss man aber die SHA1 der angepasste Dateien neu generieren. Siehe GitHub Issue #12937

Mehr Breakout-Räume erlauben

Wir haben das

breakoutRoomLimit

in der Datei

/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml 

von 8 auf 20 erhöht:

    # Warning: increasing the limit of breakout rooms per meeting
    # can generate excessive overhead to the server. We recommend
    # this value to be kept under 12.
    breakoutRoomLimit: 20

Das ist damit deutlich höher als die Empfehlung in dieser Datei. Ich verstehe allerdings das Risiko nicht so ganz. Wieso sollte ein Breakout-Raum mehr Ressourcen brauchen, als ein normaler Raum? Mit unseren Ressourcen können wir auch in 20 normalen Räumen parallele Konferenzen nur ab, wenn dort die Teilnehmer größtenteils auf ihre Webcam verzichten. Das wird in Breakout-Räumen natürlich nicht anders sein.

bbbstatus

pip3 install uwsgi requests flask flask-caching flask-cors
git clone https://git.chaotikum.org/chaotikum/bbbstatus.git

Datei /home/linadmin/bbbstatus/config.py:

url = 'https://plaudern.chaotikum.org/bigbluebutton/api/'
action = 'getMeetingInfo'
meetingID = 'sb5cz439t1u5cxgflyehsqszzvv23arldqe7qxsz'
secret = 'SECRET_SECRET_SECRET'

Secret übernehmen aus bbb-conf --secret

Datei /etc/bigbluebutton/nginx/bbbstatus.nginx:

location /status {
    proxy_pass http://127.0.0.1:9009/status;
    include proxy_params;
}

Datei /lib/systemd/system/bbbstatus.service:

[Unit]
Description=uWSGI BBB Status
After=syslog.target

[Service]
ExecStart=/usr/local/bin/uwsgi --socket localhost:9009 --protocol=http --chdir /home/linadmin/bbbstatus -w status

# Requires systemd version 211 or newer
RuntimeDirectory=uwsgi
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target
systemctl enable bbbstatus
systemctl start bbbstatus

Läuft unter https://plaudern.chaotikum.org/status

Wartung

In das Textfeld einfach das Datum der Wartung eintragen, am besten in der Form yyyy-mm-dd.

Du besitzt nicht die Benutzerrechte um Seiten hinzuzufügen.
Wartung Big Blue ButtonWartung Big Blue Button Wann 07.10.2023 10:00 Warum Update System bbb Ansprechperson schmitz wartungsfenster bbb done Agenda * Server komplett neu aufsetzen und aktuelles BBB 2.7 mit Greenlight 3 neu installieren
Wartung Big Blue ButtonWartung Big Blue Button Wann 20.07.2023 22:00 Warum Update und Aufzeichnungen deaktivieren System bbb Ansprechperson Malte wartungsfenster bbb done Agenda
Wartung Big Blue ButtonWartung Big Blue Button Wann 08.03.2022 23:00 Warum Update System bbb Ansprechperson Malte wartungsfenster bbb done Agenda * Update auf BigBlueButton Server 2.4.4 (2965)
Wartung Big Blue ButtonWartung Big Blue Button Wann 15.01.2022 11:00 Warum Update auf 2.4 System bbb Ansprechperson Malte wartungsfenster done bbb
Wartung Big Blue ButtonWartung Big Blue Button Wann 07.11.2021 11:00 Warum Update System bbb Ansprechperson Malte wartungsfenster bbb done Agenda * Update
Wartung Big Blue ButtonWartung Big Blue Button Wann 19.09.2021 11:00 Warum Update System bbb Ansprechperson Malte wartungsfenster done bbb Agenda * Update auf BBB 2.3.13 und Greenlight 0.9.2
BBB Wartung (01.08.2021)BBB Wartung (01.08.2021) Wann 01.08.2021 11:00 bis 13:00 Warum Wartung System BBB Ansprechperson Malte wartungsfenster done bbb Agenda * Updates * Eventuell Partitionen aufräumen und alte Installation löschen
BBB Wartung (13.07.2021)BBB Wartung (13.07.2021) Wann 13.07.2021 19:00 bis 23:53 Warum Wartung System BBB Ansprechperson Malte wartungsfenster done bbb Agenda * Update auf (oder eher Neuinstallation von) BBB 2.3
BBB Wartung (03.05.2021)BBB Wartung (03.05.2021) Wann 03.05.2021 15:00 bis 16:00 Warum Wartung System BBB Ansprechperson Malte wartungsfenster done bbb Agenda * Serverausfall laut Monitoring seit 03:30 Uhr heute Nacht. Ursache unklar.
BBB Wartung (28.03.2021)BBB Wartung (28.03.2021) Wann 28.03.2021 13:00 bis 14:00 Warum Wartung System BBB Ansprechperson Malte wartungsfenster done bbb Agenda * System aktualisieren * Greenlight aktuaisieren
BBB Wartung (21.02.2021)BBB Wartung (21.02.2021) Wann 21.02.2021 12:11 bis 13:32 Warum Wartung System BBB Ansprechperson Malte wartungsfenster done bbb Agenda * System aktualisieren * Greenlight aktuaisieren
BBB Wartung (10.01.2021)BBB Wartung (10.01.2021) Wann 10.01.2021 19:00 bis 22:30 Warum Wartung und Experimente System BBB Ansprechperson Malte wartungsfenster done bbb
infrastruktur/container/bbb.1696679980.txt.gz · Zuletzt geändert: 07.10.2023 11:59 von Malte