BigBlueButton - Selbst gehostete Videokonferenzen

17.06.2020 | Thilo Mull in allgemein, howto

Spätestens seit Beginn der Coronapandemie ist der Bedarf an Software für das Abhalten von Videokonferenzen noch einmal deutlich gestiegen. Wer sich nach vorhandenden Möglichkeiten umsieht, trifft zunächst auf das prominente Angebot einiger Unternehmen aus den U.S.A.. Jedoch ist die Benutzung dieser Dienste nicht frei von Schattenseiten. Mit der Umstellung der Gesellschaft auf Telearbeit und Heimunterricht zu Beginn der Pandemie, stieg die Last bei den cloudbasierten Angeboten stark an. So stark, dass manche Dienste vorrübergehend nicht oder nur eingeschränkt erreichbar waren [1]. Doch selbst wenn die Dienste erreichbar und einsatzbereit sind, so stellt sich die Frage nach dem Umgang mit den anfallenden Daten. Wo werden diese wie gespeichert? Werden diese weitergereicht? Werden diese Prozesse transparent gehandhabt? Auch hier sind die Nutzer wohl oder übel gezwungen, dem jeweiligen Anbieter zu vertrauen, dass er mit den Daten korrekt umgehen wird. Dieses Vertrauen wurde teils schon ziemlich schnell und schwer enttäuscht [2]. Das Risiko eines Missbrauchs der Daten wiegt dann nochmal schwerer, wenn es sich bei den Daten um solche von Schutzbefohlenen, z.B. Kindern handelt, die weder selber entscheiden noch nachvollziehen können, was mit ihren Daten geschieht. Ist ein Erwachsener in der Lage für sich selbst eine Abschätzung zu machen, ob eine bestimmte Software im Arbeits- oder Universitätskontext verwendet werden sollte, so besteht diese Möglichkeit aus verschiedenen Gründen für Schüler nicht. Hier drohen die Verfehlung des Lernziels oder auch der Ausschluß aus dem sozialen Gefüge durch Fernbleiben, sofern dieses überhaupt möglich ist. In dieser scheinbaren Zwickmühle aus Datenschutz und der Notwendigkeit nach Software für Videokonferenzen und Online-Lernen erscheint ein Ausweg als besonders plausibel: Den benötigten Dienst selber zu hosten!

Videokonferenzen selbst gemacht

Das selbstverwaltete Aufsetzen von Diensten für Cloud- oder Kommunikationsdienste ermöglicht einen Ausweg aus dem Dilemma der Notwendigkeit der Nutzung kollaborativer Dienste und dem Aufgeben der eigenen Datensouveränität. Solche Dienste existieren schon seit längerem, z.B. mit Next- oder Owncloud, in denen das Teilen von Dateien oder das gemeinsame Arbeiten an Dokumenten ermöglicht wird. Mit Nextcloud Talk oder Jitsi Meet stehen auch schon seit längerem Möglichkeiten für das Abhalten von selbst gehosteten Videokonferenzen zur Verfügung. Bisher lagen die Probleme dieser Dienste allerdings in der schlechten Skalierbarkeit oder einer mangelnden Verwaltung der Teilnehmer. So sprossen zu Beginn der Coronapandemie die Jitsi-Instanzen wie Pilze aus dem Boden. Jedoch liefen diese Konferenzen ab einer bestimmten Teilnehmerzahl nicht mehr stabil, so dass es zu Störungen und Ausfällen kam. (Obwohl mir Gerüchte zugetragen wurden, dass es auch mit Jitsi möglich sei, Konferenzen mit mehr als 30 Teilnehmerinnen zu haben, kann ich dies nicht persönlich bestätigen.) Zudem bietet Jitsi zwar die Möglichkeit, schnell und einfach Konferenzen abzuhalten, jedoch fehlt es an bestimmten Funktionen, die für einen Lehrbetrieb wenn nicht gar unerlässlich, so doch von großem Vorteil sind.

BigBlueButton — Open Source Videokonferenzen für Lehre und Bildung

An diesem Punkt kommt BigBlueButton ins Spiel. BigBlueButton ist ein Videokonferenzsystem, das seit 2007 als Open-Source-Projekt entwickelt wird. Das Projekt steht unter der GNU Lesser General Public License [3], so dass es von jedem installiert und verwendet werden kann. Somit stellen sich die Fragen nach dem Verbleib der Daten nicht, weil die jeweilige Organisation, die die Instanz betreibt, selbst über diese verfügt. Auch kann ein Dienstleister per Auftragsdatenverarbeitung [4] mit dem Hosting beauftragt werden, so dass die notwendige Datenverarbeitung problemlos in Deutschland und DSGVO-konform stattfinden kann. BigBlueButton bietet eine Menge von Funktionen, die hauptsächlich für die Onlinelehre entwickelt wurden, sich jedoch auch für andere Gelegenheiten wunderbar einsetzen lassen. Hierzu gehören, neben dem selbstverständlichen Nutzen von Kamera und Mikrofon, das Hochladen und Anzeigen von Präsentationen, das granular einstellbare Aufzeichnen von Sitzungen (das — wie bei unserer Instanz https://b1-athome.de — auch ganz deaktiviert werden kann…), das Erstellen von Umfragen, das Einspielen von Videos, das Erstellen von Unterräumen oder eine Whiteboardfunktion.

Bild aus einer BigBlueButton Session
Bild aus einer BigBlueButton Session

Unter der Haube von BigBlueButton stecken eine Vielzahl von Komponenten, die nicht nur von Haus aus eine beeindruckende Anzahl von Funktionen bereistellen, sondern auch großen Spielraum für Erweiterungen und Anpassungen lassen.

Komponenten von BigBlueButton

BigBlueButton erscheint dem Anwender komplett als Webapplikation und läuft auf der Clientseite ausschließlich als HTML5 im Browser. Hier kommen React.js für die Darstellung des Interfaces und WebRTC für das Senden und Empfangen von Video und Audio zum Einsatz. Durch das responsive Design auf Geräten mit kleineren Bildschirmen wird der Einsatz von gesonderten Apps überflüssig, so dass BigBlueButton auf allen Plattformen, auf denen ein Webbrowser läuft, benutzt werden kann. Serverseitig kommen allerdings viele verschiedene Open-Source-Komponenten zum Einsatz, die es ermöglichen, diverse Funktionen zu nutzen [5]. Hierzu gehören eine Freeswitch-Telefonanlage, die für die Audioverarbeitung zuständig ist und die es ermöglicht, über dialplans beispielsweise Sip Provider zu integrieren, um die Einwahl über Telefonie oder VoIp in Konferenzen zu erreichen. Das Muster für solche Pläne wird direkt mitgeliefert und muss nur noch mit den richtigen Daten versehen werden:

<include>
  <gateway name="ANY-NAME-FOR-YOUR-PROVIDER">
    <param name="proxy" value="sip.example.net"/>
    <param name="username" value="PROVIDER-ACCOUNT"/>
    <param name="password" value="PROVIDER-PASSWORD"/>
    <param name="extension" value="EXTERNALDID"/>
    <param name="register" value="true"/>
    <param name="context" value="public"/>
  </gateway>
</include>

Zusätzlich laufen noch Komponenten wie Redis PubSub für die interne Kommunikation zwischen den Komponenten, eine RedisDB für das Speichern von Aufnahmen, Etherpad für gemeinsame Notizen, Kurento für Streams und Bildschirmfreigabe oder Libreoffice für das Handling von PDF für Präsentationen. Mit Apps akka werden die Funktionen in Echtzeit zusammengeführt und in Konferenzen zur Verfügung gestellt, so dass z.B. kollaborativ mit Whiteboards gearbeitet werden kann.

Mit dem Befehl bbb-conf lässt sich BigBlueButton bequem auf der Kommandozeile konfigurieren. Hier eine Übersicht der installierten Komponenten:

# bbb-conf --status
nginx —————————————————► [✔ - active]
freeswitch ————————————► [✔ - active]
redis-server ——————————► [✔ - active]
bbb-apps-akka —————————► [✔ - active]
bbb-transcode-akka ————► [✔ - active]
bbb-fsesl-akka ————————► [✔ - active]
red5 ——————————————————► [✔ - active]
mongod ————————————————► [✔ - active]
bbb-html5 —————————————► [✔ - active]
bbb-webrtc-sfu ————————► [✔ - active]
kurento-media-server ——► [✔ - active]
etherpad ——————————————► [✔ - active]
bbb-web ———————————————► [✔ - active]

Mit der in Java geschriebenen Anwendung bbb-web wird zusätzlich eine API zu Verfügung gestellt, mit der sich BigBlueButton in andere Anwendugen integrieren lässt oder die für die Verwendung von Frontends genutzt werden kann.

Frontends für BigBlueButton

Da es sich bei BigBlueButton zunächst ausschließlich um ein Videokonferenzprogramm handelt, das über die API kontrolliert wird, bietet es sich an ein Frontend zu nutzen, das diese Aufgabe übernimmt. Hierfür gibt es mehere Möglichkeiten:

Greenlight

Mit dem Frontend Greenlight, das ebenfalls von BigBlueButton entwickelt wird, liefern die Macher ein äußerst ausgereiftes und komfortables Frontend aus derselben Hand mit [6]. Greenlight kann über docker-compose gestartet oder direkt im System installiert werden. Es ist als RubyOnRails-Applikation designt und bietet zahlreiche Möglichkeiten zum Verwalten von Konferenzen, Räumen und Nutzern. In der Oberfläche von Greenlight können Räume erstellt, Nutzer verwaltet oder Servereinstellungen vorgenommen werden.

Screenshot vom Startraum in Greenlight
Screenshot vom Startraum in Greenlight
BigBlueButton Einstellungen in Greenlight
BigBlueButton Einstellungen in Greenlight

Über eine Konfigurationsdatei können einfach weitere Authentication Provider wie LDAP, Google OAuth2 oder Office 365 OAuth2 eingebunden werden. Zudem kann hier ein Email-Account eingetragen werden, der dann im Registrierungsverfahren verwendet wird. Auch hier sind die Einstellungen in der Konfigurationsdatei schon voreingetragen und müssen nur noch mit den korrekten Daten ausgefüllt werden:

LDAP_SERVER=host
LDAP_PORT=389
LDAP_METHOD=plain
LDAP_UID=uid
LDAP_BASE=dc=example,dc=org
LDAP_AUTH=simple
LDAP_BIND_DN=cn=admin,dc=example,dc=org
LDAP_PASSWORD=password
LDAP_ROLE_FIELD=userRole
LDAP_FILTER=(&(attr1=value1)(attr2=value2))
SMTP_SERVER=smtp.example.com
SMTP_PORT=587
SMTP_DOMAIN=example.com
SMTP_USERNAME=<youremail@example.com>
SMTP_PASSWORD=<yourpassword>
SMTP_AUTH=plain
SMTP_STARTTLS_AUTO=true

Durch Editieren des RubyOnRails Code lassen sich einfach Änderungen am Aussehen von Greenlight vornehmen. Die Dokumentation von Greenlight empfiehlt, Greenlight direkt zu installieren oder den Dockercontainer selber zu bauen. Jedoch können kleine Änderungen auch vorgenommen werden, indem die Dateien mit den Änderungen über die docker-compose.yml in den Container gemountet werden und dort den originalen Code überschreiben.

Bild einer angepassten Greenlight Landingpage
Bild einer angepassten Greenlight Landingpage

Weitere Frontends

Neben Greenlight können auch weitere Frontends anstelle oder zusätzlich zu diesem verwendet werden. Bei einer der bekanntesten Integrationen handelt es sich um die Einbindung von BigBlueButton in die Open-Source Unterrichtssoftware Moodle [7].

Moodle

Mit Moodle lassen sich ganze Kurse und Lehrpläne erstellen, mit denen Schuljahres- oder Semesterweise geplant werden kann. Sollen Videokonferenzen in diesen Veranstaltungen stattfinden, so kann BigBlueButton direkt in Moodle eingebunden und von dort aus gesteuert werden. Es können beispielsweise Dauer und Inhalt der Konferenzen festgelegt werden oder ob die Teilnehmerinnen in bestimmten Gruppen miteinander sprechen können sollen.

Mattermost

In der Open-Source Slack Alternative Mattermost [8] kann BigBlueButton ebefalls per Plugin eingebunden und gesteuert werden, so dass es möglich ist, einen Chat spontan zu einem Gespräch, einer Konferenz oder einer Präsentation zu erweitern.

Des Weiteren besteht die Möglichkeit, BigBlueButton in eine Vielzahl weiterer Anwendungen* zu integrieren:

  • Canvas
  • Chamilo
  • DoceboLMS
  • Drupa
  • ILIAS
  • OpenOLAT
  • Nextcloud
  • Sakei Project
  • Tiki Wiki CMS Groupware
  • Qwerteach
  • WordPress
  • KampüsProject

* Liste ohne Anspruch auf Vollständigkeit

Installation von BigBlueButton

Da Teile der von BigBlueButton verwendeten Komponenten bisher ausschließlich in Paket-Repositories von Ubuntu 16.04 existieren, besteht momentan nur die Möglichkeit, dieses für eine Serverinstallation zu nutzen. Da Ubuntu 16.04 LTS allerdings noch bis April 2021 offiziellen Support erhält und bereits an BigBlueButton-Versionen für Ubuntu 18 und Ubuntu 20 gearbeitet wird, ist davon auszugehen, dass BigBlueButton nicht auf veralteter Software ausgeführt werden muss [9]. Als Hardwareanforderungen werden im Minimum acht GB RAM und vier CPU-Kerne angegeben. Empfohlen werden jedoch 16 GB RAM und acht CPU-Kerne. Aus eigener Erfahrung genügen für bis zu 15 Teilnehmerinnen auch zwei 4 GB RAM und zwei CPU-Kerne.

Für die Installation stellen die Entwickler ein Bashskript zur Verfügung, in dem über Optionen der Installationsumfang angegeben werden kann. So kann beispielsweise ausgewählt werden, ob alle Komponenten installiert werden sollen, ob die Installation mit einer IP oder einer Domain stattfindet, ob es restriktive Firewalleinstellungen im Netzwerk gibt oder ob Greenlight mitinstalliert werden soll oder nicht. Das Skript installiert nach einer Reihe von Tests am System die einzelnen Komponenten und konfiguriert diese [10]. Je nach Leistung des Servers ist eine voll- und selbstständige Installation nach 20-30 Minuten abgeschlossen und die Instanz im Anschluss vollständig einsatzbereit.

Befehl für eine vollständige Installation samt Greenlightfrontend mit dem Skript:

wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s bbb.example.com -e info@example.com -w -g

Mit diesem Befehl installiert das Skript BigBlueButton mit allen Komponenten, einem konfigurierten Nginx, einem TLS-Zertifikat von Letsencrypt und dem Greenlightfrontend in einem Dockercontainer.

BigBlueButton im Einsatz

Ist die Installation abgeschlossen, können in Greenlight direkt Räume erstellt und Teilnehmer eingeladen werden. Nach Freigabe von Mikrofon und Kamera an den Browser können Nutzer direkt konferieren. Dies bietet sich nicht nur für Schulen an (Baden-Württemberg hat BigBlueButton bereits für Schulen zur Verfügung gestellt [11]), sondern ebenso für Unternehmen oder Vereine, die gerne reibungslos funktionierende, datensouveräne und unabhängig gehostete Videokonferenzen abhalten wollen. Mit BigBlueButton ist genau das in greifbare Nähe gerückt und erstaunlich einfach umzusetzen: Eine sehr gut dokumentierte [12] und selbst zu hostende Open-Source Videokonferenzlösung, die stetig weiterentwickelt und verbessert wird.

Sie können BigBlueButton gern auf unserer öffentlichen Instanz unter https://b1-athome.de ausprobieren und für Ihren Verein, Ihren Schul- oder Musikunterricht oder einfache Treffen mit Freunden benutzen.

Thilo Mull
Thilo Mull
Thilo Mull arbeitet seit 2019 als Technical Writer bei B1 Systems GmbH und verfasste seitdem unter anderem Schulungsunterlagen zu Themen wie Ansible, Salt und Kubernetes. Seit seiner Jugend ist er fasziniert von freier und Open-Source-Software und betreibt mit Begeisterung so viele Dienste wie möglich selber.

 


Haben Sie Anmerkungen oder Nachfragen? Melden Sie sich unter blog%b1-systems.de
Col 2