HowTo: BBB installieren und in NC einbinden

Vorwort:
ich musste für ein kleines Nachhilfeinstitut wegen der Corona-Krise auf die Schnelle eine Chat-Lösung bereitstellen. Da ich selbst eine Nextcloud-Installation habe, lag die Idee nahe, hierfür Nextcloud und Talk zu verwenden. - Dies scheiterte aber daran dass bei Talk in der kostenfreien Version i.d.R. nicht mehr als 3-4 Personen Talk verwenden können, anderen falls bricht die Verbindung zusammen bzw. stockt das Video.
Momentan arbeiten die Mitarbeiter mit einer selbstgehosteten Jitsi-Lösung parallel mit Nextcloud und das funktioniert soweit auch ganz gut. Letztlich sollte aber eine für den Lehrunterricht geeignetere Lösung gefunden werden und deshalb kam mir der Gedanke, BigBlueButton (BBB) zu installieren.
Mittlerweile gibt es auch eine App, die BBB in Nextcloud integriert.

Zum Thema:
BigBlueButton (BBB) muß auf einem separatem Server laufen. Es muss (Stand: 03.05.2020) tatsächlich Ubuntu 16.04 in der 64-bit-Version installiert sein. Auf dem Server sollte sonst nichts anderes laufen.
Ich bin kein Experte, bitte seht mir daher die eine oder andere Unzulänglichkeit in diesem HowTo nach. Bei mir hat es so sehr gut funktioniert und ich hoffe, hiermit etwas helfen zu können.

Da ich Kunde bei Netcup bin, habe ich dort einen Server mit 4 Kernen und ausreichend RAM für kleines Geld (VPS 1000 G8, 7,49 €) gemietet. Dies ist keine Werbung sondern soll ggf. eine Hilfestellung bieten.
Auf dem Server habe ich Ubuntu 16.04, 64-bit in der Minimal-Variante installiert.

Doch nun zu BBB-Installation. Auf der BBB-Seite gibt es zahlreiche Hinweise zu Installation, diese sind aber für mich als Nicht-Muttersprachler im Englischen teilweise etwas verwirrend. Deshalb hier nun mein HowTo. Wenn euch etwas fehlt, schaut auf der Seite von BBB nach.

Ich gehe in meinem Beispiel davon aus dass ihr Nextcloud ebenfalls auf einem entsprechend leistungsstarken (gemieteten) Server (Raspi reicht i.d.R. nicht) installiert habt und auf diesem Server zusätzlich auch coturn als TURN-Server für Talk installiert habt.

## BBB installieren: ###
########################

## Vorweg: Es muss tatsächlich Ubuntu 16.04 in der 64 Bit-Version installiert sein!
## Sofern nicht schon während der Systeminstallation geschehen, sollte neben dem root-User ein weiterer
## User erstellt werden um anschließend den root-User aus Sicherheitsgründen vom ssh-Login auszusperren.
## Um einen neuen Benutzer mit sudo-Rechten zu erstellen, könnt ihr folgende Befehle ausführen. Bei
## folgenden Befehlen müsst ihr 'willi' (USERNAME) durch euren gewünschten Benutzernamen austauschen.

## Neuen Benutzer erstellen:
## Logge dich als root per ssh ein (root@deine_IP)
	
adduser willi

##USERNAME sudo-Rechte verleihen:
	
usermod -aG sudo willi

##Login als USERNAME:
	
su - willi

## Alle weiteren Schritte sollten dann mit diesem Benutzer erfolgen.


## SSH Root Login unter Debian/Ubuntu verbieten
==============================================


## Editiere die Datei /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

## und setze

PermitRootLogin yes

## auf

PermitRootLogin no

## Starte anschließend den SSH-Dienst neu:

sudo /etc/init.d/ssh restart

## (alternativ: service ssh restart)
## Nun darf sich Benutzer Root nicht mehr direkt am System anmelden. 

## Und jetzt kommen wir zum eigentlichen Thema:
## logge dich auf deinem Server per ssh ein und mach dich dann zu root:
sudo -i

## Hinweis: Du kannst den root-Modus am Schluss durch 'exit' wieder verlassen

## Dann prüfen wir, ob die Domain erreichbar ist:
dig deine-domain.de @8.8.8.8

## Außerdem prüfen wir, ob die Sprache richtig ist: 
cat /etc/default/locale

## es sollte 'LANG="en_US.UTF-8"' ausgegeben werden. Ist dies nicht der Fall, muss es geändert werden.
## Desweiteren prüfen wir, ob er Server auch über IPv6 erreichbar ist:
ip addr | grep inet6

## Es sollte sowas wie 
## inet6 ::1/128 scope host
## ...
## ausgegeben werden.

## Installiere nun BBB incl. Greenlight, dies dauert etwas:
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -g

## Eigentlich sollte man auch gleich seine Domain angeben und ein Zertifikat
## beziehen können, dies führte bei mir aber zu Problemen.
## Rufe nun deine IP-Adresse im Browser auf, du solltest BBB sehen können.
## Im nächsten Schritt muss ggf. die Konfiguration von Nginx bearbeitet/geprüft werden.
nano /etc/nginx/nginx.conf

## Suche nach dem Eintrag '#server_names_hash_bucket_size 64;' und entferne
## das Kommentarzeichen (#) - sofern vorhanden.
## Speichere die Datei (Strg + Shift + X) und lade die Konfiguration neu:
nginx -s reload

## Prüfe nun, ob alles in Ordnung bei Nginx ist:
nginx -t

## Es sollten keine Fehler angezeigt werden.
## Beziehe nun ein Zertifikat von let's encrypt:
wget -qO- https://ubuntu.bigbluebutton.org/bbb-install.sh | bash -s -- -v xenial-22 -s deine-domain.de -e deine@mailadresse.de

## Jetzt musst du noch Nginx neu starten:
systemctl start nginx

## Jetzt sollte deine BBB-Installation auch über deine Domain erreichbar sein. Prüfe es.

## Im nächsten Schritt richten wir die Firewall ein:

ufw allow ssh
ufw allow http
ufw allow https
ufw allow in 16384:32768/udp

## Starte die Firewall:
ufw enable

## Prüfe, ob alle OK ist:
ufw status

## Künftig sollte die BBB-Installation nur noch über https://... aufgerufen werden können
## Da sonst z.B. Videochat ggf. nicht funktioniert. Rufe folgende Datei auf:
nano /etc/nginx/sites-available/bigbluebutton

## Ersetze...
server {
  listen 80;
  listen [::]:80;
  server_name deine-domain.de;

  listen 443 ssl;
  listen [::]:443 ssl;

## durch...
server {
  listen 80;
  listen [::]:80;
  server_name deine-domain.de;
  # enforce https
  return 301 https://$server_name:443$request_uri;
}

server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name deine-domain.de;

## Jetzt mußt du Nginx neu starten:
systemctl restart nginx

## Abschließend prüfe die Konfiguration der BBB-Installation:
bbb-conf --check

## Hier sollte unter '# Potential problems described below' nichts weiter stehen.
## Wenn alles OK ist, muss noch ein Administratorkennwort für Greenlight vergeben werden.
## Führe folgende Befehle aus:
cd greenlight/
docker exec greenlight-v2 bundle exec rake admin:create

## Du erhältst folgende Ausgabe:
Account succesfully created.
'Email: admin@example.com'
'Password: administrator'
'Role: admin'
'PLEASE CHANGE YOUR PASSWORD IMMEDIATELY'

## Melde dich mit den angegeben Daten auf der Website an. Im oberen Bereich
## ist im rot unterlegten Bereich ein Link mit dem du deine Daten ändern kannst.
## Speichere deine Zugangsdaten sicher ab und vergesse sie nicht!!

## Jetzt ist es an der Zeit, deine Installation ein erstes Mal zu sichern bzw. einen Snapshot zu erstellen.

## Nun muss noch BBB für den Zugriff auf den Turnserver konfiguriert werden.
## Der Turnserver muss mindestens auf Ubuntu 18.04 laufen, ich verwende dabei den Turnserver (coturn), den ich 
## bereits auf dem Server meiner Nextcloud installiert habe. Ich gehe hier davon aus, dass das bei dir genauso ist.
## Bei BBB (!) musst du folgende Datei konfigurieren:
sudo nano /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml

## Ersetze 'turn.example.com' und 'stun.example.com' mit dem Hostnamen deines Turnservers, bei mir also
## die Domain meiner Nextcloud.
## Außerdem änderst du den Port 443 jeweils auf 3478 ab.
## Bei value="secret" ersetzt du secret mit dem geheimen Schlüssel aus deiner turnserver.conf (siehe 'static-auth-secret=')

## In der turnserver.conf (also bei mir auf dem Nextcloud-Server !!) änderst du die folgenden Einträge:
'listening-port=3478'
'tls-listening-port=3478'

## Prüfe die Portfreigaben deiner Firewall (Nextcloud-Server) ob der Port 3478 freigegeben ist.
## Zusätzlich gibst du noch folgende Ports frei:
sudo ufw allow in 49152:65535/udp

## Nimm einen Restart deines coturn-Servers vor:
sudo systemctl restart coturn

## Jetzt meldest du dich in deiner Nextcloud an, gehst im Adminbereich zur Talk-Konfiguration,
## sofern vorhanden, und prüfst, ob dort ebenfalls der Port 3478 angegeben ist.

## Hurra!! - Dein BBB-Server sollte nun startklar sein. Teste ihn und mache ggf. wieder eine Sicherung,
## vorsichtshalber auch gleich von deiner Nextcloud-Installation.
## Im nächsten - und letzten Schritt -  wollen wir nun BBB in Nextcloud einbinden:

## Führe auf deinem BBB-Server folgenden Befehl aus:
sudo bbb-conf --secret

## Du bekommst dann in etwa Folgendes angezeigt:
URL: https://deine-domain.de/bigbluebutton/
    Secret: abcdefghaijklmnop123456789

    Link to the API-Mate:
    https://mconf.github.io/api-mate/#server=https://deine-domain.de/bigbluebutton/&sharedSecret=abcdefghaijklmnop123456789

## Kopiere dir die Ausgabe und speichere sie sicher ab. Als nächstes installierst du 
## die 'BigBlueButton Intergration'-App in deiner Nextcloud (aus dem App-Store).
## Gehe dann in den Administrationsbereich und wähle den Menüpunkt
## 'Zusätzliche Einstellungen' (ganz unten...) und gibst dort die generierten BBB-Angaben ein:
## Bei API URL: https://deine-domain.de/bigbluebutton/
## Und bei Secret eben den geheimen Schlüssel... - Den 'Link to the API-Mate:' brauchst du nicht!

=======================
== DU BIST FERTIG !! ==
=======================

## Jetzt kannst du in deinen persönlichen Einstellungen Räume erstellen...

BBB ist wirklich für meinen Verwendungszweck geeignet und Nextcloud auch! - Ob die Einbindung in der Form, wie sie jetzt vorliegt, einen echten Mehrwert bringt, muss jeder für sich selbst entscheiden.

Ich hoffe, ich konnte ein wenig helfen.

1 Like

Quelle ist wohl: https://docs.bigbluebutton.org/2.2/install.html

Liegt aber wohl auch am Script:

https://ubuntu.bigbluebutton.org/bbb-install.sh

Hallo Shopmin,
ich habe ein Frage zu BBB in Nextcloud, die sie mir hoffentlich beantworten können. Wir (mittelgroßes Gymnasium) nutzen zur Zeit ein Nextcloud als Lernplatform. Hier integriert ist BBB. Wenn man nun einen Raum erstellt und diesen per internal link mit seinen Schülern teilen möchte gelangen diese leider nicht in den BBB Raum sondern in die Dateiablage der Nextcloud. Per internal + Password Räume geht es. Allerdings müssen sich die Kinder erst aus der Nextcloud ausloggen und das kryptische Passwort für den Raum eingeben. Hierdurch vergeht extrem viel Zeit und es ist sehr umständlich. Die IT-Firma, welche uns bei dem Projekt unterstützt weis leider keine Abhilfe und wir möchten in jedem Fall sichergehen, dass wir die BBB Räume nur mit “internal link” nutzen. Also nur für Mitglieder der Schulgemeinschaft zugänglich sind.
Hätten Sie eine Idee. Das würde uns viel weiterhelfen.
Herzlichen Dank + Grüße
Jörg D.

Hallo Jörg,

habt ihr die App “Auf Gruppen beschränkt”? Die App muss für alle Nutzer verfügbar sein, sonst klappt das nicht, wenn man eingeloggt ist. Um zu vermeiden, dass Schüler einen Raum erstellen können, kannst du als Admin in der Verwaltung -> Zusätzliche Einstellungen unter BigBlueButton -> Restrictions für “All Users” die max. Räume auf 0 setzen. Dann die Gruppen eintragen, welche Räume erstellen sollen und diese auf -1 (beliebig viele) setzen.

Hier kannst du auch festlegen, dass neue Räume nur “internal restricted” erzeugt werden können.

Ich hoffe das löst dein Problem.

Viele Grüße
Sebastian

@nervnet Vielen Dank für die Hinweise, genauso haben wir das bei uns auch gelöst. Das erspart mir etwas Tipp-Arbeit.

Nur ist generell die Lösung zum teilen des Links aus meiner Sicht nicht ganz glücklich gelöst - Vielleicht geht es ja auch nicht besser…

Wir haben uns damit beholfen den Schülern den Link via Talk bereitzustellen. Dies hat sich als akzeptabeler “Workaround” herauskristallisiert. Die Schüler sind in Gruppen eingeteilt und man kann dann ganz einfach einen neuen Raum erstellen und den Link mit der Gruppe teilen.