Kontakt

Carsten Rieger IT Services
Am Danglfeld 8 | 83132 Pittenhart
Telefon: 08624.9009794
E-Mail: info@c-rieger.de

BigBlueButton Installationsanleitung (Version 2.5)

Diese BigBlueButton Installationsanleitung (Version 2.5) beschreibt alle notwendigen Installationsschritte inkl. der Einrichtung des Greenlight-Frontends zur einfachen Benutzerverwaltung auf Basis des Ubuntu 20.04.x LTS Betriebssystems inkl. weiterer Optimierungen Ihres BigBlueButton-Servers.

Die neue BigBlueButton Version 2.5 hat lange auf sich warten lassen, kommt dafür aber mit sehr tollen und neuen Features.

Die minimalen Servervoraussetzungen für einen BigBlueButton Server sind:

  • Ubuntu 20.04 64-bit OS running Linux kernel 5.x
  • Latest version of docker installed
  • 16 GB of memory with swap enabled
  • 8 CPU cores, with high single-thread performance
  • 500 GB of free disk space (or more) for recordings, or 50GB if session recording is disabled on the server.
  • TCP ports 80 and 443 are accessible
  • UDP ports 16384 – 32768 are accessible
  • 250 Mbits/sec bandwidth (symmetrical) or more
  • TCP port 80 and 443 are not in use by another web server or reverse proxy
  • A hostname (such as bbb.example.com) for setup of a SSL certificate
  • IPV4 and IPV6 addres

Serverempfehlungen:
netcup: https://www.netcup.de/vserver/#root-server-details
hetzner: https://www.hetzner.com/de/dedicated-rootserver/matrix-ax

Installationsquellen (Stand 24. November 2022):
Ubuntu: https://releases.ubuntu.com/focal/ubuntu-20.04.5-live-server-amd64.iso
BigBlueButton: https://docs.bigbluebutton.org/2.5/install.html
Greenlight: https://docs.bigbluebutton.org/greenlight/gl-overview.html

Freies Benutzerhandbuch: Praxishandbuch

102 Questions on BigBlueButton: The Definitive Guide (2022)


Für diese Installationsanleitung setzen wir folgende Bedingungen voraus:

* ein eigener Server für BigBlueButton 2.5.x auf Basis von Ubuntu 20.04.xLTS
* ein coturn-Server, betrieben auf einem separaten Server (Best-Practice mit Port 443)
* DNS-Einträge (A/AAA-Records) für BigBlueButton
* IPv4 und IPv6

Möchten Sie einen bestehenden BigBlueButton-Server von Version 2.4 auf 2.5 aktualisieren, so folgen Sie dieser Anleitung.

Sofern der Server mit dem Betriebssystem Ubuntu 18.04.x installiert wurde müssen ein paar Systemeinstellungen sichergestellt werden. Überprüfen wir also zuerst die Spracheinstellungen am Server, erwartet wird die Collation „en_US.UTF-8“:

sudo -s
cat /etc/default/locale

Das Ergebnis sollte wie folgt aussehen:

LANG="en_US.UTF-8"

Andernfalls korrigieren Sie diese Einstellungen mittels der nachfolgenden Befehle

apt install language-pack-en
update-locale LANG=en_US.UTF-8

und überprüfen dann, ob noch weitere Einträge in der Datei „/etc/default/locale“ vorhanden sind. Wenn ja, dann entfernen Sie diese bitte, melden sich vom System ab, dann wieder am System an und überprüfen die Ausgabe mittels des nachfolgenden Befehls erneut.

systemctl show-environment

Nun setzen wir den Hostnamen in der hosts-Datei:

nano /etc/hosts
[...]
127.0.1.1       bbb.ihredomain.de
::1             bbb.ihredomain.de
123.345.567.789 bbb.ihredomain.de
2a03:.....:wxyz bbb.ihredomain.de
[...]

Nach der hosts-Datei setzen wir noch den FQDN in der hostname-Datei:

nano /etc/hostname

Tragen Sie den Domänennamen (FQDN) ein:

bbb.ihredomain.de

Starten Sie nun den Server neu

reboot now

und fahren mit der Installation fort. Für die Installation nutzen wir ein Installationsskript, welches wir herunterladen und direkt ausführen. Wechseln Sie nach dem Neustart zuerst in den priviligierten Benutzermodus:

sudo -s

und bereiten das Installationsskript vor. Ersetzen Sie bbb.ihredomain.de mit ihrer gewünschten Domain und die Emailadresse mail@ihredomain.de mit einer für die Let’sEncrypt Zertifikatserstellung benötigten, gültigen Emailadresse.

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install-2.5.sh | bash -s -- -v focal-250 -s bbb.ihredomain.de -e mail@ihredomaine.de -w

Wenn Sie auch Greenlight mitinstallieren lassen wollen, dann könnten Sie den Parameter „-g“ ergänzen

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install-2.5.sh | bash -s -- -v focal-250 -s bbb.ihredomain.de -e mail@ihredomaine.de -w -g

oder folgen dem weiteren Verlauf dieser Anleitung, um Greenlight und Docker manuell zu installieren.

Die Installation startet und installiert Ihnen das aktuelle BigBlueButton 2.5 in wenigen Minuten (ca. 10 bis 20 Minuten), abhängig von der Bandbreite am Server. Nach Abschluss der Installation überprüfen Sie das BBB-System mittels

bbb-conf --check

Starten wir BBB neu und kontrollieren die Funktionsfähigkeit:

bbb-conf --restart

Um Problemen mit Verbindungen über verschiedene Netzwerke (bspw. verursacht durch NAT o. Ä.) zu verhindern, sollten Sie Ihren eigenen Coturn-Server nutzen. Die Funktionsfähigkeit des coturn-Servers lässt sich hier überprüfen. Sofern Ihr coturn-Server erfolgreich überprüft wurde (srflx-Einträge mit OK quittiert), bearbeiten Sie die Datei apply-config.sh

mv /etc/bigbluebutton/bbb-conf/apply-config.sh /etc/bigbluebutton/bbb-conf/apply-config.sh.bak
touch /etc/bigbluebutton/bbb-conf/apply-config.sh
nano /etc/bigbluebutton/bbb-conf/apply-config.sh

Kopieren Sie den Inhalt hinein und passen den stun/turn-Server an:

GitHub: https://codeberg.org/criegerde/bigbluebutton/src/branch/master/apply-config.sh

#
#!/bin/bash
# v. 2.5.1x+
/usr/bin/clear
echo ""
echo "...::: BigBlueButton :::..."
echo ""
source /etc/bigbluebutton/bbb-conf/apply-lib.sh

# Variablen 
COTURN_URL="coturn.ihredomain.de"
COTURN_PORT="443"
COTURN_PASSWORD="DasCoturn-Secret!"

# enableUFWRules
enableMultipleKurentos
echo ""

echo "  - Logging"
sed -i 's/appLogLevel=.*/appLogLevel=Error/g' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed -i 's/level:.*/level: error/g' /usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml
sed -i 's/loglevel =.*/loglevel = "OFF"/g' /etc/bbb-fsesl-akka/application.conf
sed -i 's/stdout-loglevel =.*/stdout-loglevel = "OFF"/g' /etc/bbb-fsesl-akka/application.conf
echo ""

echo "  - Analyzing off"
sed -i 's/#disabledFeatures=.*/disabledFeatures=learningDashboard/g' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
grep -qxF "learningDashboardEnabled=false" /etc/bigbluebutton/bbb-web.properties || echo "learningDashboardEnabled=false" >> /etc/bigbluebutton/bbb-web.properties
echo ""

echo "  - Disable recordings"
sed -i 's/disableRecordingDefault=.*/disableRecordingDefault=true/' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed -i 's/breakoutRoomsRecord=.*/breakoutRoomsRecord=false/g' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed -i 's/allowStartStopRecording=.*/allowStartStopRecording=false/' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed -i 's/autoStartRecording=.*/autoStartRecording=false/' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
echo ""

echo "  - DefaultMessages"
sed -i 's/defaultWelcomeMessage=.*/defaultWelcomeMessage=Konferenz: \<b\>\%\%CONFNAME\%\%\<\/b\>/' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
sed -i 's/defaultWelcomeMessageFooter=.*/defaultWelcomeMessageFooter=Die Datenschutzerkl\&auml\;rung finden Sie \<a href\=\"https\:\/\/www\.ihredomain\.de\/dsgvo\" target\=\"\_blank\"\>hier\<\/a\>\./' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
echo ""

echo "  - Set default logout URL"
sed -i 's/bigbluebutton.web.logoutURL=.*/bigbluebutton.web.logoutURL=https:\/\/www\.c\-rieger\.de/g' /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
echo ""

echo "  - SIP-Setting"
sed -i s/sipjsHackViaWs: .*/sipjsHackViaWs: true/' /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
echo ""

echo "  - Setting camera defaults"
#yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==low).bitrate' 50
#yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==medium).bitrate' 100
#yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==high).bitrate' 200
#yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==hd).bitrate' 300
yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==low).default' false
yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==medium).default' false
yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==high).default' true
yq w -i $HTML5_CONFIG 'public.kurento.cameraProfiles.(id==hd).default' false
echo ""

echo "  - Set guest app window title"
sed -i 's/"app.guest.windowTitle":.*/"app.guest.windowTitle": "Your Name - Guest Lobby",/g' /usr/share/meteor/bundle/programs/web.browser/app/locales/en.json
sed -i 's/"app.guest.windowTitle":.*/"app.guest.windowTitle": "Ihr Name - Wartebereich",/g' /usr/share/meteor/bundle/programs/web.browser/app/locales/de.json
echo ""

echo "  - Set default presentations"
cp /var/www/bigbluebutton-default/default.pdf /var/www/bigbluebutton-default/default.pdf.bak
cp /home/<user>/default.pdf /var/www/bigbluebutton-default/default.pdf
cp /var/www/bigbluebutton-default/default.pptx /var/www/bigbluebutton-default/default.pptx.bak
cp /home/<user>/default.pptx /var/www/bigbluebutton-default/default.pptx
cp /var/www/bigbluebutton-default/favicon.ico /var/www/bigbluebutton-default/favicon.ico.bak
cp /home/<user>/favicon.ico /var/www/bigbluebutton-default/favicon.ico
echo ""

echo "  - Custom settings"
sed -i 's/startClosed:.*/startClosed: true/' /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
sed -i 's/hidePresentation:.*/hidePresentation: false/' /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
echo ""

chown meteor:meteor $HTML5_CONFIG

echo "  - Update TURN server configuration turn-stun-servers.xml"
  cat <<HERE > /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="stun0" class="org.bigbluebutton.web.services.turn.StunServer">
        <constructor-arg index="0" value="stun:$COTURN_URL:$COTURN_PORT"/>
    </bean>


    <bean id="turn0" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="$COTURN_PASSWORD"/>
        <constructor-arg index="1" value="turns:$COTURN_URL:$COTURN_PORT?transport=tcp"/>
        <constructor-arg index="2" value="86400"/>
    </bean>

    <bean id="turn1" class="org.bigbluebutton.web.services.turn.TurnServer">
        <constructor-arg index="0" value="$COTURN_PASSWORD"/>
        <constructor-arg index="1" value="turn:$COTURN_URL:$COTURN_PORT?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="stun0"/>
            </set>
        </property>
        <property name="turnServers">
            <set>
                <ref bean="turn0"/>
                <ref bean="turn1"/>
            </set>
        </property>
    </bean>
</beans>
HERE
echo ""
echo "(c) Carsten Rieger IT-Services"

Starten und überprüfen Sie nun Ihren BigBlueButton-Server erneut:

bbb-conf --restart

Um BigBlueButton einfach administrieren und eine Benutzerverwaltung nutzen zu können bedienen wir uns des Greenlight-Frontends. Dazu gehen wir wie folgt vor:

apt update && apt install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt update && apt install -y docker-ce docker-ce-cli containerd.io

Testen Sie nun, dass docker auf ihrem Server installiert ist:

docker -v

Legen Sie den ~/greenlight Ordner an und wechseln in diesen Ordner hinein:

mkdir ~/greenlight && cd ~/greenlight

Um greenlight zu starten muss der Docker geladen und die Konfiguration erstellt werden:

docker run --rm bigbluebutton/greenlight:v2 cat ./sample.env > .env

Um greenlight einrichten und konfigurieren zu können erstellen wir das notwendige Secret (SECRET_KEY_BASE):

docker run --rm bigbluebutton/greenlight:v2 bundle exec rake secret

Notieren Sie sich die Ausgabe des vorigen Befehls als SECRET_KEY_BASE. Lassen Sie sich dann die weiteren Secret-Informationen (BIGBLUEBUTTON_ENDPOINT und BIGBLUEBUTTON_SECRET) ausgeben

bbb-conf --secret

und tragen alle drei SECRETS in die Datei ~/.greenlight/.env ein.

cd ~/greenlight
nano .env

Unterhalb der SECRETS finden Sie noch den Parameter SAFE_HOSTS, der ebenfalls gesetzt werden muss. Hier wird der FQDN verwendet, ohne https, also bspw: ihre.domain.de.

Überprüfen Sie dann die Greenlightkonfiguration mittels:

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

Ohne SMTP-Konfiguration in der .env-Datei müssen alle drei Tests erfolgreich (passed) dargestellt werden. Haben Sie SMTP konfiguriert

nano ~/greenlight/.env
[…]
ALLOW_MAIL_NOTIFICATIONS=true
[…]
SMTP_SERVER=smtp.domäne.de
SMTP_PORT=587
SMTP_DOMAIN=ihredomäne.de
SMTP_USERNAME=smtpbenutzer@ihredomäne.de
SMTP_PASSWORD=IhrPasswort
SMTP_AUTH=plain
SMTP_STARTTLS_AUTO=true
SMTP_SENDER=email@ihredomäne.de
[…]

so müssen alle vier Tests als erfolgreich (passed) dargestellt werden.

Greenlight wird nun nach <https://bbb.ihredomäne.de/b> installiert.

docker run --rm bigbluebutton/greenlight:v2 cat ./greenlight.nginx | sudo tee /etc/bigbluebutton/nginx/greenlight.nginx

Prüfen Sie, ob die nachfolgende Datei Inhalt aufweist:

cat /etc/bigbluebutton/nginx/greenlight.nginx

Die Administrationsoberfläche wäre technisch schon unter https://<ihredomäne.de>/b erreichbar, doch wir wollen BBB zukünftig direkt in greenlight unter https://<ihredomäne.de> starten. Aus diesem Grund fügen wir am Ende der vHost-Datei (/etc/nginx/sites-available/bigbluebutton) folgende Zeilen vor der letzten Klammer ‚}‚ ein:

cp /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-available/bigbluebutton.bak
nano /etc/nginx/sites-available/bigbluebutton
[...]
location = / {
return 307 /b;
}
}

Überprüfen Sie die Webserverkonfiguration mittels

nginx -t

und starten, einen fehlerfreien Test mit nginx -t vorausgesetzt, letztmalig den Webserver nginx neu:

systemctl restart nginx

Um Greenlight zu starten wird docker-compose benötigt.

curl -L "https://github.com/docker/compose/releases/download/1.26.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

Kopieren Sie die docker-compose.yml Datei aus dem Greenlight image nach ~/greenlight:

docker run --rm bigbluebutton/greenlight:v2 cat ./docker-compose.yml > docker-compose.yml

Erzeugen Sie mit dem nachfolgenden Befehl ein zufälliges Passwort für PostgreSQL und ersetzen es in den .env- und .docker-compose.yml-Dateien:

export pass=$(openssl rand -hex 8); sed -i 's/POSTGRES_PASSWORD=password/POSTGRES_PASSWORD='$pass'/g' docker-compose.yml;sed -i 's/DB_PASSWORD=password/DB_PASSWORD='$pass'/g' .env

Nun starten Sie die Administrationsanwendung greenlight

docker-compose up -d

und rufen dann BigBlueButton und greenlight erstmalig auf. Bitte haben Sie Geduld, es kann bis 30 bis 60 Sekunden dauern, bis der Greenlight-Docker ordnungsgemäß hochgefahren ist:

https://<bbb.ihredomain.de>

Wie sie der Adresszeile im Browser entnehmen können wurden Sie nach /b, also zu Greenlight weitergeleitet. Für mögliche Analysen finden Sie die Logdateien unter:

~/greenlight/log

Richten Sie sich noch einen BBB-Administratoraccount ein

docker exec greenlight-v2 bundle exec rake user:create["name","email","password","admin"]

um sich am Webfrontend anmelden zu können. Ersetzen Sie dabei die Werte „name„, „email“ und „password“ mit realen Werten. Zudem können Sie auch einen „normalen“ Benutzer, ohne Administratorenberechtigungen, erzeugen:

docker exec greenlight-v2 bundle exec rake user:create["name","email","password","user"]

Auch hier gilt es, die Werte „name„, „email“ und „password“ mit den „echten“ Werten des BBB-Benutzers zu ersetzen.

Starten Sie dann BigBlueButton neu:

bbb-conf --restart

Somit nutzen Sie ihren eigenen coturn-Server und keine Drittanbieterdienste wie bspw. Googles stun-Server. Die ausgezeichnete Integration in Ihre Nextcloud beschreibt der folgende Artikel.

Zudem lohnt sich auch der ein oder andere Blick hinter die BBB-Kulissen:
* drei parallele Kurento-server
* Audioeinstellungen
* „Komfort Lärm“ (comfort noise)
* Standardpräsentation
* Greenlight Customizing
* u.v.m.

Die aktuellen Versionen ermitteln Sie durch

bbb-conf --version

Haben Sie weitere Anpassungen wie beispielsweise die Erhöhung der Kurrento-Server (s. apply-config.sh) durchgeführt, so lassen sich diese bspw. per

netstat -antp | grep kurento

ermitteln. Zum Abschluss erweitern wir crontab, um sowohl die Logfiles turnusmäßig zu bereinigen, als auch die SSL-Zertifikate regelmäßig automatisch zu erneuern:

crontab -e

Fügen Sie am Ende diese Zeilen hinzu:

@daily /bin/journalctl --vacuum-size=1G > /dev/null 2>&1
@daily find  /var/log/nginx/*.log -mtime +14 -delete
@daily find  /var/log/bbb-webrtc-sfu/*.log -mtime +14 -delete
@daily find  /var/log/bigbluebutton/*.log -mtime +14 -delete
@daily find  /var/log/*.log -mtime +14 -delete
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx

Sollte es zu Problemen bei der Verwendung im Firefox Browser kommen, so wäre folgende Einstellung ein Versuch wert: about:config » media.peerconnection.ice.relay_only » true

Quelle: https://docs.bigbluebutton.org/admin/setup-turn-server.html#test-your-turn-server

Weitere BBB-Befehle (bbb-conf) finden Sie hier.

Sofern Sie eine Nextcloud-Instanz betreiben können Sie hier erfahren, wie Sie BigBlueButton in Ihre Nextcloud integrieren.

Die Installation wurde erfolgreich abgeschlossen und so wünsche ich Ihnen viel Spaß mit Ihrer eigenen BigBlueButton-Instanz. Über Ihre Unterstützung (diese wird ordnungsgemäß versteuert!) würden sich meine Frau, meine Zwillinge und ich sehr freuen!

Unterstützen Sie uns?