Installazione

Benvenuto nella guida all'installazione di BigBlueButton.

Questo documento guida l'utente attraverso l'installazione di BigBlueButton 2.2 (di seguito denominato semplicemente BigBlueButton).

BigBlueButton non è una normale applicazione web. È un'applicazione Web a pagina singola completamente reattiva che utilizza le funzionalità integrate del browser per inviare/ricevere audio e video. Il server BigBlueButton esegue una serie di processi di back-end per gestire i media, le chiamate API in entrata, l'elaborazione delle diapositive caricate e la conversione dei media catturati in registrazioni .

Client HTML5 completo

BigBlueButton utilizza un client HTML5 completo per la sua interfaccia. Ciò significa che lo stesso client funziona su desktop, laptop, Chromebook e dispositivi mobili (iOS 12.2+ e Android 6.0+). Consigliamo Chrome e FireFox poiché questi browser forniscono il miglior supporto per WebRTC.

Il client BigBlueButton offre:

  • Caricamento 2x più veloce rispetto alla versione precedente
  • Audio, video e condivisione dello schermo di alta qualità (utilizzando WebRTC)
  • Note condivise per l'editing multiutente (utilizzando l'eccellente progetto EtherPad )
  • Completamente accessibile agli screen reader
  • Condivisione video - durante la sessione - da vari provider (YouTube, Twitch, ecc.)

Puoi provare l'ultima versione del client HTML5 su https://test.bigbluebutton.org/ .

Scelte di installazione

Durante l'installazione di BigBlueButton hai tre scelte: bbb-install.shAnsible (per distribuzioni su larga scala) e passo dopo passo.

Indipendentemente dalla scelta che fai, per avere un'installazione di successo è necessario:

  • ottenere un server dedicato,
  • assicurarsi che il server soddisfi il set minimo di requisiti di BigBlueButton
  • assegnare un nome host (consigliato per configurare SSL)
  • configurare il firewall del server (se necessario).

Le tre scelte sono descritte di seguito.

bbb-install.sh

Se vuoi configurare rapidamente un server BigBlueButton (o hai già configurato i server BigBlueButton in passato), allora bbb-install.sh ti renderà operativo con un singolo comando in circa 15 minuti.

Ansible

Se stai cercando di distribuire un'installazione su larga scala di BBB utilizzando Scalelite, i tuoi server sono gestiti al meglio utilizzando strumenti come Ansible. Alcuni motivi per cui potresti scegliere questa configurazione sono:

  • facilmente personalizzabile: le tue configurazioni personalizzate verranno sostituite ogni volta che esegui l'aggiornamento automaticamente
  • parità tra le macchine: assicurati di distribuire la stessa identica versione di BBB su ogni server
  • eliminare l'errore umano nella configurazione: l'utilizzo di bbb-install.sh o metodi passo-passo sono altamente inclini all'errore umano poiché puoi facilmente dimenticare se hai abilitato un'impostazione, hai scelto di fare X su Y, ecc.
  • automatizza al massimo: automatizzando il processo, risparmi intrinsecamente tempo nella risoluzione dei problemi e ore perse nella configurazione manuale
  • facilmente scalabile su larga scala: avvia una replica identica del tuo server BBB in meno di 15 minuti senza input da parte dell'utente - preconfigurato e pronto all'uso

Scegli questo metodo se sei già a tuo agio con molte delle conoscenze tecniche dietro BigBlueButton, Scalelite e Greenlight o altri front-end. Fare riferimento ai seguenti esempi per creare la propria installazione:

Nota: questi non sono mantenuti o sviluppati dagli sviluppatori ufficiali di BigBlueButton. Questi sono interamente forniti dalla comunità, utilizzali a tua discrezione.

Questi primi due installano BigBlueButton sul tuo server in modo coerente. È possibile specificare variabili, ad esempio se installare anche Greenlight, quali porte utilizzare per TURN e altre. Funzionalmente abbastanza simile a bbb-install.sh ma altamente automatizzato.

Le distribuzioni su larga scala devono includere molti altri componenti oltre ai pacchetti principali di BigBlueButton. Questi includono Scalelite, Greenlight, un database, backup, configurazioni nginx e altro.

Passo dopo passo

Se vuoi comprendere meglio i componenti di BigBlueButton, usa le istruzioni passo passo in questa guida.

Prima di installare

Per configurare un'installazione corretta di BigBlueButton, ti consigliamo di iniziare con un server Ubuntu 16.04 a 64 bit "pulito" dedicato a BigBlueButton.

Con "clean" si intende che sul server non sono installate applicazioni Web precedenti (come plesk, webadmin o apache) che si legano alla porta 80/443 . Con "dedicato" si intende che questo server non verrà utilizzato per nient'altro oltre a BigBlueButton (e applicazioni correlate a BigBlueButton come Greenlight ).

Requisiti minimi del server

Per la produzione consigliamo i seguenti requisiti minimi

  • Ubuntu 16.04 Sistema operativo a 64 bit con kernel Linux 4.x
  • 16 GB di memoria con swap abilitato
  • 8 core della CPU
  • 500G di spazio libero su disco (o più) per le registrazioni
  • Le porte TCP 80 e 443  accessibili
  • UDP ports 16384 - 32768 accessibili
  • 250 Mbits/sec bandwidth (symmetrical) o più
  • Port 80 and 443 non usate da altre applicazioni web
  • Un hostname (come bbb.example.com) per configurare un certificato SSL
  • Indirizzi IPV4 e IPV6
  • Hardware Dedicato (bare metal)

Perché consigliamo un server bare metal? BigBlueButton utilizza FreeSWITCH per l'elaborazione dei pacchetti audio in entrata e FreeSWITCH funziona meglio in un ambiente non virtualizzato (vedi le configurazioni consigliate da FreeSWITCH).

Detto questo, se desideri installare BigBlueButton su Amazon EC2, ti consigliamo di eseguire BigBlueButton su un'istanza c5.2xlarge (o CPU superiore). Queste istanze intensive di calcolo più recenti offrono prestazioni molto vicine a quelle bare metal. Su Digital Ocean consigliamo le istanze a elaborazione intensiva c-8.

Se stai configurando BigBlueButton per lo sviluppo locale sulla tua workstation, puoi abbassare alcuni dei requisiti perché sarai l'unico a utilizzare il server. Partendo dai requisiti di cui sopra, è possibile ridurli come segue:

  • 4 core CPU / 8 GB di memoria
  • Installazione su una VM locale o un container LXC
  • 50G di spazio su disco
  • Solo indirizzo IPV4


È ancora necessario configurare SSL sul server; in caso contrario, non puoi utilizzare le comunicazioni web in tempo reale (WebRTC) per condividere microfono, webcam o schermo. In altre parole, tutti i browser ora richiedono che la pagina venga caricata tramite HTTPS prima di consentire a un'applicazione HTML5 di richiedere l'accesso per condividere i media.

Per i requisiti minimi per gli utenti finali, consigliamo la versione più recente di Firefox o Chrome e i seguenti requisiti minimi di larghezza di banda.

Controlli prima dell'installazione

Hai un server Ubuntu 16.04 a 64 bit pronto per l'installazione? Grande! Tuttavia, prima di iniziare l'installazione, eseguire alcuni rapidi controlli di configurazione per assicurarsi che il server soddisfi i requisiti minimi.

Prendersi un momento per eseguire questi controlli ridurrà significativamente le modifiche che incontrerai un problema durante l'installazione.

Per prima cosa, controlla che la lingua del server sia it_IT.UTF-8.

$ cat /etc/default/locale
LANG="it_IT.UTF-8"

Se non vedi LANG="en_US.UTF-8", inserisci i seguenti comandi per impostare il local su it_IT.UTF-8.

$ sudo apt-get install -y language-pack-it
$ sudo update-locale LANG=it_IT.UTF-8

quindi disconnettersi e accedere di nuovo alla sessione SSH: questo ricaricherà la configurazione locale per la sessione. Esegui  cat /etc/default/locale . Controlla che ci sia solo la riga singola LANG="it_IT.UTF-8".

Nota: se viene visualizzata una riga aggiuntiva LC_ALL=en_US.UTF-8, rimuovere la voce LC_ALL da /etc/default/locale , disconnettersi e quindi accedere nuovamente.

Quindi, sudo systemctl show-environmentassicurati per vedere LANG=it_IT.UTF-8 nell'output.

$ sudo systemctl show-environment
LANG=it_IT.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

Se non vedi questo, sudo systemctl set-environment LANG=it_IT.UTF-8 esegui nuovamente sudo systemctl show-environment e conferma di vedere LANG=it_IT.UTF-8 nell'output.

Quindi, controlla che il tuo server abbia (almeno) 4G di memoria usando il comando free -h. Ecco l'output di uno dei nostri server di prova.

$ free -h
              total        used        free      shared  buff/cache   available
Mem:            31G        5.9G        314M        1.8G         25G         21G
Swap:           31G        360M         31G

Qui mostra 31G di memoria (è un server con 32 gigabyte di memoria).

Se vedi un valore per Mem:nella colonna  total inferiore a 4G (l'esempio sopra mostra 31G), il tuo server non ha memoria sufficiente per eseguire BigBlueButton. È necessario aumentare la memoria del server ad (almeno) 4G.

Quindi, controlla che il server abbia Ubuntu  16.04.

$  cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.x LTS"

Quindi, controlla che sul tuo server sia in esecuzione la versione a 64 bit di Ubuntu 16.04.

$ uname -m
x86_64

Successivamente, verifica che il tuo server supporti IPV6.

$ ip addr | grep inet6
inet6 ::1/128 scope host
...

Se non vedi la riga, inet6 ::1/128 scope host dopo aver installato BigBlueButton dovrai modificare la configurazione di FreeSWITCH per disabilitare il supporto per IPV6 .

Quindi, controlla che il tuo server esegua il kernel Linux 4.x.

$ uname -r
4.15.0-38-generic

Quindi, controlla che il tuo server abbia (almeno) 4 core della CPU

$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l
4

Nota: BigBlueButton non funzionerà su un kernel 2.6 (come Linux 2.6.32-042stab133.2 su x86_64 su OpenVZ VPS).

A volte ci viene chiesto "Perché supporti solo Ubuntu 16.04 64-bit)?". La risposta si basa sulla scelta della qualità rispetto alla quantità. Molto tempo fa abbiamo concluso che è meglio per il progetto avere un'installazione solida, ben testata e ben documentata per una versione specifica di Linux che funziona davvero molto bene piuttosto che provare a supportare varianti di Linux e nessuna di esse funzionanti per bene.

Avere un nome host e un certificato SSL

Si consiglia di assegnare al server BigBlueButton un nome di dominio completo (FQDN), ad esempio bigbluebutton.example.com, e di configurare il server con certificato SSL (Secure Sockets Layer). Ciò consentirà a nginx, il server web che viene installato con BigBlueButton, di servire i contenuti tramite protocollo di trasferimento ipertestuale sicuro (HTTPS). Senza HTTPS i browser abilitati non consentiranno all'utente di condividere la webcam o il microfono. Inoltre, senza HTTPS abilitato, alcuni browser si lamenteranno di contenuti non sicuri.

In breve, su qualsiasi server utilizzato in produzione, la configurazione di un nome di dominio e un certificato SSL valido è un must.

Per ottenere un nome di dominio, ci sono molti buoni registrar di nomi di dominio come GoDadday e Network Solutions .

Per ottenere un certificato SSL ci sono molte opzioni, vedere ottenere un certificato SSL .

Configurare il firewall (se necessario)

Hai un firewall tra te e i tuoi utenti? In tal caso, vedere configurazione del firewall .

Aggiornamento

Prima di eseguire l'aggiornamento, se hai apportato modifiche personalizzate a BigBlueButton modificando i file di configurazione, devi prima eseguire il backup di tali modifiche in modo da poterle riapplicare dopo l'aggiornamento.

Aggiornamento da BigBlueButton 2.2

se stai aggiornando BigBlueButton 2.2, hai usato Let's Encrypt per impostare un certificato SSL / TLS e non hai apportato modifiche personalizzate alla configurazione, dovresti essere in grado di eseguire lo script bbb-install.sh per aggiornare alla versione più recente di BigBlueButton 2.2.

Se hai installato una versione precedente di BigBlueButton 2.2 utilizzando le istruzioni dettagliate, dovresti prima eseguire il backup di eventuali modifiche personalizzate (o configurare https://docs.bigbluebutton.org/2.2/customize.html#automatically-apply-configuration -changes-on-restart per applicare automaticamente gli aggiornamenti), quindi eseguire l'aggiornamento utilizzando i comandi seguenti.

Per prima cosa aggiorna tutti i pacchetti utilizzando dist-upgrade che installeranno le ultime versioni dei pacchetti BigBlueButton 2.2.

Abbiamo cambiato il PPA per ffmpeg e spostato per utilizzare l'ultima versione di LibreOffice (6.x). Se non lo hai già fatto, inserisci i seguenti comandi

$ sudo rm -f /etc/apt/sources.list.d/jonathonf-ubuntu-ffmpeg-4-xenial.list
$ sudo add-apt-repository ppa:bigbluebutton/support
$ sudo add-apt-repository ppa:libreoffice/ppa

Successivamente, aggiorna i pacchetti con i seguenti comandi

$ sudo apt-get update
$ sudo apt-get dist-upgrade

Dopo aver eseguito l'aggiornamento (e anche se si sta eseguendo un aggiornamento minore come l'aggiornamento da 2.2.24 a 2.2.25), è necessario eseguire un bbb-conf --setip per riassegnare l'indirizzo IP o il nome host del server ai file di configurazione di BigBlueButton.

$ sudo bbb-conf --setip <IP_or_hostname>
$ sudo bbb-conf --check

Ad esempio, se avessi configurato il tuo server con il nome host bbb.example.com,  faresti:

$ sudo bbb-conf --setip bbb.example.com
$ sudo bbb-conf --check

Aggiornamento da BigBlueButton 2.0

Se hai installato una versione precedente di BigBlueButton 2.0 e poi hai apportato modifiche personalizzate, devi prima eseguire il backup delle modifiche. Dopo aver eseguito il backup delle modifiche, è possibile utilizzare bbb-install.sh per eseguire l'aggiornamento o seguire i passaggi seguenti. Dopo l'aggiornamento, applica nuovamente le modifiche.

Per prima cosa, dovrai disinstallare bbb-client

$ sudo apt-get purge -y bbb-client

ed elimina i vecchi pacchetti per Kurento con il comando

$ sudo apt-get purge -yq kms-core-6.0 kms-elements-6.0 kurento-media-server-6.0
$ sudo bbb-conf --restart

È quindi possibile scegliere tra le due scelte di installazione per l'aggiornamento a BigBlueButton 2.2. Al termine dell'aggiornamento, è possibile riapplicare eventuali modifiche personalizzate.

Nota: se utilizzi bbb-install.sh per eseguire l'aggiornamento da BigBlueButton 2.0 non è necessario eliminare da  bbb-client i pacchetti Kurento poiché lo script di aggiornamento rileverà l'aggiornamento da BigBlueButton 2.0 e lo farà automaticamente per te.

Installazione

Pronto a installare? Ecco una rapida lista di controllo per la preinstallazione:

  1. Hai un server Ubuntu 16.04 a 64 bit che soddisfa le specifiche minime .
  2. Se il server si trova dietro un firewall, hai configurato il firewall per inoltrare le porte appropriate al server BigBlueButton (e hai testato da un computer esterno che le connessioni passano attraverso il firewall al tuo server BigBlueButton).
  3. Hai un nome di dominio completo (come bigbluebutton.example.com) che risolve nell'indirizzo IP del tuo server BigBlueButton (o nell'indirizzo IP del tuo firewall).
  4. Hai un certificato SSL valido per il nome host (o intendi ottenerne uno con Let's Encrypt, che è trattato in questi documenti)

Se sei uno sviluppatore che configura BigBlueButton per lo sviluppo o il test su una VM locale con e intendi utilizzare FireFox, puoi saltare i passaggi (2), (3) e (4).

A questo punto, sei pronto per l'installazione. Prendi una tazza della tua bevanda preferita e cominciamo!

1. Aggiorna il tuo server

Innanzitutto, assicurati che il tuo server sia aggiornato con i pacchetti e gli aggiornamenti di sicurezza più recenti.

Accedi al tuo server tramite SSH. È necessario disporre di un account in grado di eseguire comandi come root (tramite sudo). Una volta effettuato l'accesso, assicurati prima di aver inserito il xenail multiverse nel tuo  /etc/apt/sources.list in questo modo:

$ grep "multiverse" /etc/apt/sources.list

Dopo aver inserito il comando, dovresti vedere una riga non commentata per il repository multiverse, che potrebbe assomigliare a questa

deb http://archive.ubuntu.com/ubuntu xenial multiverse

o questo

deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse

Non preoccuparti se il tuo nome host nell'URL è diverso da quello sopra, l'importante è vedere un link non commentato che contiene multiverse. In caso contrario, eseguire il comando seguente per aggiungere il repository multiverse al file /etc/apt/sources.list.

$ echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list

Se sei uno sviluppatore che installa BigBlueButton su una VM per test e sviluppo, alcuni dei componenti di BigBlueButton, come Tomcat, necessitano di una fonte di entropia all'avvio. In una VM l'entropia disponibile può essere ridotta e  Tomcat può bloccarsi per lunghi periodi di tempo (a volte minuti) prima di terminare il suo avvio. Per dare alla VM molta entropia, installa un pacchetto chiamato haveged (un semplice demone entropico):

$ sudo apt-get install haveged

Se sei curioso dei dettagli dietro l'entropia, vedi questo link .

Ci sono tre applicazioni necessarie per BigBlueButton: ffmpeg (crea registrazioni), yq (aggiorna file YAML) e libreoffice (per conversione). La versione predefinita di ffmpeg in Ubuntu 16.04 è vecchia e yq non esiste nei repository predefiniti. Pertanto, prima di installare BigBlueButton, è necessario aggiungere i seguenti archivi di pacchetti personali (PPA) al server per assicurarsi di ottenere le versioni corrette installate.

$ sudo add-apt-repository ppa:bigbluebutton/support -y
$ sudo add-apt-repository ppa:rmescandon/yq -y
$ sudo add-apt-repository ppa:libreoffice/ppa

Successivamente, aggiorna il tuo server ai pacchetti più recenti (e correzioni di sicurezza).

$ sudo apt-get update
$ sudo apt-get dist-upgrade

Se non esegui l'aggiornamento da un po 'di tempo, apt-get potrebbe consigliarti di riavviare il server al dist-upgrade. Fai il riavvio ora prima di procedere al passaggio successivo.

Il client HTML5 di BigBlueButton utilizza MongoDB, un database molto efficiente utilizzato per sincronizzare lo stato dei client. Per installare MongoDB, procedi come segue

$ wget -qO - https://www.mongodb.org/static/pgp/server-3.4.asc | sudo apt-key add -
$ echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
$ sudo apt-get update
$ sudo apt-get install -y mongodb-org curl

Il client HTML5 BigBlueButton richiede un server nodejs. Per installare nodejs, procedi come segue

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs

2. Installa apt-get key per il repository BigBlueButton

Tutti i pacchetti per BigBlueButton sono firmati digitalmente con la chiave pubblica del progetto. Prima di installare BigBlueButton, devi aggiungere la chiave pubblica del progetto al portachiavi del tuo server. Per fare ciò, inserisci il seguente comando:

$ wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -

Se stai aggiornando il tuo server da BigBlueButton 2.0 (o versione precedente), devi prima rimuovere il pacchetto  bbb-client.

$ sudo bbb-conf --stop
$ sudo apt-get purge -y bbb-client

Questo perché alcuni file di proprietà di bbb-client sono stati spostati per essere di proprietà di bbb-web. L'eliminazione di bbb-client prima dell'aggiornamento a BigBlueButton 2.2 consentirà a bbb-web di creare questi file senza conflitti dalla versione precedente di bbb-client.

Successivamente, il tuo server deve sapere dove scaricare i pacchetti BigBlueButton 2.2. Per configurare il repository del pacchetto, immetti il ​​seguente comando:

$ echo "deb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list

Se sei in Europa, si consiglia di utilizzare i nostri mirrors europei.

$ echo "deb https://packages-eu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list

Quindi, esegui apt-get per visualizzare i collegamenti agli ultimi pacchetti BigBlueButton.

$ sudo apt-get update

3. Eseguire il backup delle configurazioni personalizzate

Se si tratta di una nuova installazione, puoi saltare questo passaggio.

Se stai eseguendo l'aggiornamento da BigBlueButon2.0 o da una versione precedente di BigBlueButton 2.2 e hai apportato modifiche personalizzate come:

  • impostazione del tuo certificato SSL in /etc/nginx/sites-available/bigbluebutton,
  • configurato FreeSWITCH per accettare le telefonate in arrivo ,
  • cambiato il /var/www/bigbluebutton-default/default.pdf predefinito

o qualsiasi altra modifica al di fuori dei bbb-conf, ti consigliamo di eseguire il backup di queste modifiche ora prima di aggiornare BigBlueButton. Dopo aver aggiornato BigBlueButton, puoi riapplicare le configurazioni personalizzate al tuo server.

4. Installa BigBlueButton

Nota: se stai aggiornando da BigBlueButton 2.0 (o precedente) esegui sudo apt-get purge bbb-client prima di installare questa versione più recente.

Ora siamo pronti per installare BigBlueButton. Immettere i seguenti due comandi:

$ sudo apt-get install bigbluebutton
$ sudo apt-get install bbb-html5

Per ogni comando, quando viene richiesto di procedere, digitare "Y" e premere INVIO.

Nota 1: è possibile ignorare eventuali errori "Impossibile scaricare file di dati aggiuntivi" per il pacchetto  ttf-mscorefonts-installer . Questo è un problema noto con Ubuntu 16.04.

Nota 2: se l'installazione termina con un errore prima di terminare, controllare i passaggi in Prima dell'installazione . Se trovi e risolvi eventuali errori di configurazione, puoi provare a completare l'installazione utilizzando il comando sudo apt-get install -f.

Nota 3: se si verificano ancora errori dopo sudo apt-get install -f, fermarsi qui. L'installazione non è terminata e BigBlueButton non verrà eseguito. Consulta la guida alla risoluzione dei problemi e altre opzioni per ottenere assistenza .

Al termine dell'installazione, puoi rendere HTML5 il client predefinito (consigliato a meno che non sia necessario il client Flash).

Infine, per assicurarti che tutti i pacchetti siano aggiornati, fai un'ultima volta dist-upgrade

$ sudo apt-get dist-upgrade

Al termine dell'installazione, puoi rendere HTML5 il client predefinito (consigliato).

Quindi, riavvia BigBlueButton:

$ sudo bbb-conf --restart

Ciò riavvierà tutti i componenti del server BigBlueButton nell'ordine corretto. Nota: non preoccuparti se vedi inizialmente # Not running: tomcat7 or grails o Error: Could not connect to the configured hostname/IP address quando l'avvio richiede alcuni istanti.

Al termine del riavvio, controllare l'installazione utilizzando bbb-conf --check. Quando esegui questo comando, dovresti vedere un output simile al seguente:

$ sudo bbb-conf --check

BigBlueButton Server 2.2.0 (1571)
                    Kernel version: 4.4.0-142-generic
                      Distribution: Ubuntu 16.04.6 LTS (64-bit)
                            Memory: 16432 MB

/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties (bbb-web)
       bigbluebutton.web.serverURL: http://178.128.233.105
                defaultGuestPolicy: ALWAYS_ACCEPT

/etc/nginx/sites-available/bigbluebutton (nginx)
                       server name: 178.128.233.105
                              port: 80, [::]:80
                    bbb-client dir: /var/www/bigbluebutton

/var/www/bigbluebutton/client/conf/config.xml (bbb-client)
                Port test (tunnel): rtmp://178.128.233.105
                              red5: 178.128.233.105
              useWebrtcIfAvailable: true

/opt/freeswitch/etc/freeswitch/vars.xml (FreeSWITCH)
                       local_ip_v4: 178.128.233.105
                   external_rtp_ip: stun:stun.freeswitch.org
                   external_sip_ip: stun:stun.freeswitch.org

/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)
                        ext-rtp-ip: $${local_ip_v4}
                        ext-sip-ip: $${local_ip_v4}
                        ws-binding: :5066
                       wss-binding: :7443

/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)
                     playback_host: 178.128.233.105
                 playback_protocol: http
                            ffmpeg: 4.1.1-0york1~16.04

/etc/bigbluebutton/nginx/sip.nginx (sip.nginx)
                        proxy_pass: http://178.128.233.105:5066


** Potential problems described below **

Qualsiasi output che segue Potential problems può indicare errori di configurazione o errori di installazione. In molti casi, i messaggi ti forniranno consigli su come risolvere il problema.

È inoltre possibile utilizzare sudo bbb-conf --status per verificare che tutti i processi di BigBlueButto siano stati avviati e siano in esecuzione.

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

A questo punto, il tuo server BigBlueButton è in ascolto suun indirizzo IPV4. Ad esempio, se il tuo server è all'indirizzo IP 178.128.233.105, puoi aprire http://178.128.233.105/ e vedere la schermata di benvenuto.

Schermata di benvenuto

Tuttavia, non puoi accedere da questa schermata a meno che non installi le demo API (riceverai un errore 404 se lo provi - il passaggio successivo mostra come aggiungere le demo API).

Se intendi utilizzare questo server con un altro front-end, non hai bisogno delle demo API. È possibile integrare BigBlueButton con una delle integrazioni di terze parti fornendo l'integrazione dell'indirizzo del server e del segreto condiviso. È possibile utilizzare bbb-conf per visualizzare queste informazioni utilizzando bbb-conf --secret.

$ sudo bbb-conf --secret

       URL: http://178.128.233.105/bigbluebutton/
    Secret: 330a8b08c3b4c61533e1d0c5ce1ac88f

      Link to the API-Mate:
      http://mconf.github.io/api-mate/#server=http://178.128.233.105/bigbluebutton/&sharedSecret=330a8b08c3b4c61533e1d0c5ce1ac88f

5. Installa demo API (opzionale)

Le demo API sono un insieme di Java Server Pages (JSP) che implementano un'interfaccia basata sul Web per testare l'API BigBlueButton.

Per installare gli esempi API, inserisci il seguente comando:

$ sudo apt-get install bbb-demo

Una volta installato, potrai inserire il tuo nome nella home page e fare clic su "Partecipa".

Unisciti a HTML5

Questo ti unirà alla riunione predefinita chiamata "Demo Meeting". Ecco una schermata che si ottiene utilizzando FireFox, apri il pannello Note condivise, disegna sulla lavagna e condividi una webcam.

Interfaccia BigBlueButton

Quando hai finito con gli esempi API, puoi rimuoverli con

$ sudo apt-get remove bbb-demo

6. Riavvia il tuo server

Puoi riavviare e controllare il tuo server BigBlueButton in qualsiasi momento utilizzando i comandi

$ sudo bbb-conf --restart
$ sudo bbb-conf --check

Con bbb-conf --check esegui la scansione di alcuni dei file di registro per i messaggi di errore. Anche in questo caso, qualsiasi output che segue Potential problems potrebbe indicare errori di configurazione o di installazione. In molti casi, i messaggi ti forniranno consigli su come risolvere il problema.

Si noti che sudo bbb-conf --check ti avvisa che le demo API sono installate, che consentono a chiunque abbia accesso al server di avviare una sessione (vedi rimozione delle demo API ).

Se vengono visualizzati altri messaggi di avviso, controllare l' installazione della risoluzione dei problemi .

7. Passaggi finali

Se questo server è destinato alla produzione, dovresti effettuare queste operazioni:

Forniamo due server accessibili pubblicamente che puoi utilizzare per i test:

Per ulteriori informazioni sull'integrazione di BigBlueButton con la tua applicazione, consulta la documentazione dell'API BigBlueButton . Per vedere i video del client HTML5 BigBlueButton, vedere https://bigbluebutton.org/html5 .

Assegna un nome host

Per qualsiasi server BigBlueButton di produzione, è necessario assegnargli un nome host.

Se non lo hai già fatto, devi acquistare un nome di dominio da un provider DNS (Domain Name Service) e, utilizzando l'interfaccia web del provider, configurare un A record in modo che punti all'indirizzo IP del tuo server (consulta la documentazione per il tuo provider DNS su come eseguire questo passaggio).

Dopo laconfigurazione del record A , inserisci il seguente comando e EXTERNAL_HOST_NAME con il nome host del tuo server BigBlueButton.

$ ping EXTERNAL_HOST_NAME

Ecco un esempio dell'output utilizzando demo.bigbluebutton.org:

$ ping demo.bigbluebutton.org
PING demo.bigbluebutton.org (146.20.105.32) 56(84) bytes of data.
64 bytes from 146.20.105.32: icmp_seq=1 ttl=44 time=27.5 ms

Nota: se il tuo server non consente il traffico ICMP, non verrà restituito alcun byte, ma dovresti vedere l'indirizzo IP del tuo server restituito tra parentesi ()dopo il nome host.

Se il nome host sta risolvendo l'indirizzo IP del server (o l'indirizzo IP del firewall), utilizzare successivamente l'utilità di configurazione BigBlueButton bbb-conf per aggiornare i file di configurazione di BigBlueButton per utilizzare questo nome host.

$ sudo bbb-conf --setip HOSTNAME

Ad esempio, se il tuo nome host fosse bigbluebutton.example.com, il comando sarebbe

$ sudo bbb-conf --setip bigbluebutton.example.com

A questo punto, il server BigBlueButton ascolta un indirizzo IP (o nome host) e risponde alle richieste API. Tuttavia, se provassi ad accedere dalla pagina predefinita del server con un browser, riceverai un errore HTTP Status 404 - /demo/demo1.jsp.

Perché? Il server BigBlueButton è pronto per elencare le chiamate API, ma non ha un front-end installato per impostazione predefinita. È possibile installare facilmente le demo API per testare il server. Tratteremo l'installazione delle demo API nel passaggio successivo.

Tuttavia, non hai bisogno delle demo API se intendi utilizzare un altro front-end per il server BigBlueButton, ad esempio, se hai un server Moodle e desideri configurare il plug-in Moodle BigBlueButton per accedere al server BigBlueButton.

Configura SSL sul tuo server BigBlueButton

Ti consigliamo di aggiungere il supporto SSL al tuo server BigBlueButton per renderlo più sicuro. Inoltre, a partire da Chrome 47, gli utenti Chrome non saranno in grado di condividere il proprio microfono tramite WebRTC a meno che BigBlueButton non venga caricato tramite HTTPS.

Configura BigBlueButton per utilizzare un nome di dominio

Si prega di eseguire tutti i comandi in questa sezione come root .

Per ottenere un certificato SSL valido per il tuo server, devi aver già assegnato un nome host al tuo server BigBlueButton.

Ai fini della documentazione, utilizzeremo il nome di dominio "example.com", con un server BigBlueButton ospitato in "bigbluebutton.example.com".

Dopo aver ottenuto un nome di dominio e averlo configurato con un host DNS, aggiungi un record A che punta al tuo server. È quindi possibile utilizzare il comando bbb-conf setip per configurare BigBlueButton per utilizzare quel nome di dominio, ad esempio:

$ sudo bbb-conf --setip bigbluebutton.example.com

Ottieni un certificato SSL

Prima di poter configurare nginx su BigBlueButton per il contenuto del server tramite HTTPS, è necessario disporre di un certificato SSL valido. Un certificato convalidato dal dominio (a volte chiamato "classe 1") con una chiave RSA a 4096 bit e un checksum SHA-256 è il minimo attualmente consigliato e dovrebbe essere sufficiente.

Esistono numerosi provider da cui è possibile ottenere un certificato. Molte società di vendita di nomi di dominio offrono anche certificati.

Alcuni noti grandi fornitori di certificati SSL includono Comodo, Symantec, GoDaddy, GlobalSign e DigiCert. Inoltre, i certificati SSL gratuiti sono disponibili da StartSSL e CACert, con alcune avvertenze: i certificati StartSSL non possono essere revocati senza pagare una tariffa di servizio e la maggior parte delle persone non ha la radice per CACert installata nel proprio browser web.

Ogni provider fornirà una serie di passaggi per la generazione del certificato, ma normalmente includeranno la generazione di una chiave privata e una richiesta di certificato in locale, l'invio della richiesta di certificato da firmare e quindi la ricezione del certificato firmato dopo aver eseguito qualsiasi verifica richiesta passi.

Per installare il certificato in BigBlueButton, sarà necessario disporre di file per il certificato, la chiave privata e qualsiasi certificato intermedio in formato PEM.

Se non hai ancora un certificato SSL e il tuo server è su Internet, puoi utilizzare Let's Encrypt per ottenere un certificato SSL rinnovabile gratuito (scade dopo 90 giorni, ma è automaticamente rinnovabile). Se desideri utilizzare Let's Encrypt, passa alla configurazione utilizzando Let's Encrypt .

Configura nginx per utilizzare HTTPS

A seconda dell'autorità di certificazione (CA), ora dovresti avere 2 o più file, come segue:

  • Certificato
  • Chiave privata
  • Certificato intermedio (potrebbe essercene più di uno o nessuno)

Il passaggio successivo consiste nell'installare i file sul server.

Crea la directory /etc/nginx/ssl:

$ sudo mkdir /etc/nginx/ssl

E ora crea il file della chiave privata per nginx da utilizzare (sostituisci il nome host nel nome del file con il tuo). Inoltre, correggi le autorizzazioni in modo che solo root possa leggere la chiave privata:

# cat >/etc/nginx/ssl/bigbluebutton.example.com.key <<'END'
Paste the contents of your key file here
END
chmod 0600 /etc/nginx/ssl/bigbluebutton.example.com.key

E il file del certificato. Nota che nginx necessita del certificato del tuo server e dell'elenco dei certificati intermedi insieme in un unico file (sostituisci il nome host nel nome del file con il tuo):

# cat >/etc/nginx/ssl/bigbluebutton.example.com.crt <<'END'
Paste (in order) the contents of the following files:
  1. The signed certificate from the CA
  2. In order, each intermediate certificate provided by the CA (but do not include the root).
END

Inoltre, genereremo un set di parametri diffie-hellman a 4096 bit per migliorare la sicurezza per alcuni tipi di crittografia. Questo passaggio può richiedere diversi minuti per essere completato, in particolare se eseguito su una macchina virtuale.

sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

Ora possiamo modificare la configurazione di nginx per utilizzare SSL. Modifica il file /etc/nginx/sites-available/bigbluebutton per aggiungere le linee contrassegnate. Assicurati di utilizzare i nomi file corretti per abbinare il certificato e i file chiave che hai creato sopra.

server {
  server_name bigbluebutton.example.com;
  listen 80;
  listen [::]:80;
  listen 443 ssl;
  listen [::]:443 ssl;

  ssl_certificate /etc/nginx/ssl/bigbluebutton.example.com.crt;
  ssl_certificate_key /etc/nginx/ssl/bigbluebutton.example.com.key;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;
  

Per riferimento, si noti che le impostazioni SSL utilizzate sopra si basano su quelle proposte in https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ e forniscono supporto per tutti i browser moderni (incluso IE8, ma non IE6, su Windows XP). Tieni presente che le impostazioni SSL consigliate sono soggette a modifiche non appena vengono rilevate nuove vulnerabilità.

Configura FreeSWITCH per l'utilizzo di SSL

Se hai un firewall sul tuo server e hai aperto la porta 5066, modifica la regola in modo che ora apra la porta 7443.

Inoltre, se il tuo server BigBlueButton è protetto da un firewall, potresti dover specificare il value con un indirizzo IP esterno EXTERNAL_IP_ADDRESS:7443 per evitare di ottenere un errore 1002 nel client. Per ulteriori dettagli, vedere Configurare BigBlueButton dietro un firewall .

Successivamente, l'indirizzo di inoltro websocket in nginx. Modifica il file /etc/bigbluebutton/nginx/sip.nginxe cambia il protocollo e la porta sulla riga proxy_pass come mostrato:

location /ws {
  proxy_pass https://203.0.113.1:7443;
  proxy_http_version 1.1;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
  proxy_read_timeout 6h;
  proxy_send_timeout 6h;
  client_body_timeout 6h;
  send_timeout 6h;
}

Configura BigBlueButton per caricare la sessione tramite HTTPS

Con nginx ora configurato per utilizzare SSL, il passaggio successivo è configurare FreeSWITCH per utilizzare HTTPS per avviare una connessione audio.

Modifica /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.propertiese aggiorna la proprietà bigbluebutton.web.serverURLper utilizzare HTTPS:

#----------------------------------------------------
# This URL is where the BBB client is accessible. When a user successfully
# enters a name and password, she is redirected here to load the client.
bigbluebutton.web.serverURL=https://bigbluebutton.example.com

Successivamente, modifica il file /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties e aggiorna la proprietà jnlpUrle jnlpFilesu HTTPS:

streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare
jnlpUrl=https://bigbluebutton.example.com/screenshare
jnlpFile=https://bigbluebutton.example.com/screenshare/screenshare.jnlp

È inoltre necessario aggiornare il file /var/www/bigbluebutton/client/conf/config.xml per indicare al client BigBlueButton di caricare i componenti tramite HTTPS. Puoi eseguire l'aggiornamento con un solo comando

$ sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml

Se hai bisogno di annullare questa modifica, puoi eseguire il comando inverso:

$ sudo sed -e 's|https://|http://|g' -i /var/www/bigbluebutton/client/conf/config.xml

Apri /usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml e modifica:

  kurento:
    wsUrl: ws://bbb.example.com/bbb-webrtc-sfu

in

  kurento:
    wsUrl: wss://bbb.example.com/bbb-webrtc-sfu

Cambia anche:

  note:
    enabled: true
    url: http://bbb.example.com/pad

in

  note:
    enabled: true
    url: https://bbb.example.com/pad

Successivamente, modifica la creazione delle registrazioni in modo che vengano servite tramite HTTPS. Modifica /usr/local/bigbluebutton/core/scripts/bigbluebutton.yml e cambia il valore per playback_protocol come segue:

playback_protocol: https

Se hai installato le demo dell'API nel passaggio 5 , modifica /var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp e cambia il valore di BigBlueButtonURL per l'utilizzo di HTTPS.

// This is the URL for the BigBlueButton server
String BigBlueButtonURL = "https://bigbluebutton.example.com/bigbluebutton/";

Infine, per applicare tutte le modifiche alla configurazione apportate, è necessario riavviare tutti i componenti di BigBlueButton:

$ sudo bbb-conf --restart

Verifica la tua configurazione HTTPS

Per assicurarti di non aver commesso errori che potrebbero compromettere la sicurezza, prova la tua configurazione HTTPS. Un sito che può eseguire una serie di test automatizzati è https://www.ssllabs.com/ssltest/ : inserisci semplicemente il nome host del tuo server, facoltativamente seleziona la casella di controllo "Non mostrare i risultati" se desideri mantenerlo privato, quindi Invia.

Al momento della scrittura, la configurazione mostrata in questa pagina dovrebbe raggiungere un punteggio "A" nella pagina di test di SSL Labs.

Utilizzando Let's Encrypt

Se hai un nome di dominio assegnato al tuo server BigBlueButton (cioè bigbluebutton.example.com) e il server è su Internet, puoi usare Let's Encrypt per ottenere certificati SSL gratuiti.

Innanzitutto, installa lo strumento di configurazione Let's Encrypt. Si prega di eseguire tutti i comandi in questa sezione root .

$ sudo apt-get update
$ sudo apt-get install software-properties-common
$ sudo add-apt-repository universe
$ sudo add-apt-repository ppa:certbot/certbot
$ sudo apt-get install certbot

Successivamente, genera un set di parametri diffie-hellman a 4096 bit per migliorare la sicurezza per alcuni tipi di crittografia.

sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096

Prima di poter generare un certificato sul tuo server, devi configurare BigBlueButton per utilizzare il nome host previsto. Se non lo hai già fatto, usa il seguente comando (sostituisci bigbluebutton.example.com con il tuo nome DNS), per configurare il server BigBlueButton con il tuo nome host.

$ sudo bbb-conf --setip bigbluebutton.example.com

Successivamente, richiedi un certificato SSL da Let's Encrypt utilizzando lo strumento  certbot. Di nuovo, sostituisci bigbluebutton.example.com con il tuo nome host.

$ sudo certbot --webroot -w /var/www/bigbluebutton-default/ -d bigbluebutton.example.com certonly

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at
   /etc/letsencrypt/live/bigbluebutton.example.com/fullchain.pem. Your cert will
   expire on 20XX-YY-ZZ. To obtain a new version of the certificate in
   the future, simply run Let's Encrypt again.
 - If you like Let's Encrypt, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Questo genererà i seguenti file:

$ ls /etc/letsencrypt/live/bigbluebutton.example.com/
cert.pem  chain.pem  fullchain.pem  privkey.pem

Successivamente, modifica il file di configurazione nginx /etc/nginx/sites-available/bigbluebutton e aggiungi le righe contrassegnate di seguito. Assicurati di utilizzare i nomi file corretti per abbinare il certificato e i file chiave che hai creato sopra (di nuovo, sostituisci bigbluebutton.example.com con il tuo nome host).

server {
  server_name bigbluebutton.example.com;
  listen 80;
  listen [::]:80;
  listen 443 ssl;
  listen [::]:443 ssl;
  ssl_certificate /etc/letsencrypt/live/bigbluebutton.example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/bigbluebutton.example.com/privkey.pem;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 10m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS:!AES256";
  ssl_prefer_server_ciphers on;
  ssl_dhparam /etc/nginx/ssl/dhp-4096.pem;
  

I certificati Let's Encrypte sono validi per 90 giorni e possono essere rinnovati automaticamente. Per richiedere automaticamente un rinnovo una volta alla settimana, modifica il file crontab per root.

$ sudo crontab -e

E aggiungi le seguenti due righe in basso:

30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx

Queste due direttive eseguiranno il comando certbot renew  ogni lunedì alle 2:30, quindi ricaricheranno Nginx alle 2:35 (quindi verrà utilizzato il certificato rinnovato). L'output verrà reindirizzato a un file di registro situato in /var/log/le-renewal.log, quindi puoi sempre controllarlo in seguito.

Per completare la configurazione SSL, fai

Risoluzione dei problemi

In caso di problemi durante l'installazione, vedere risoluzione dei problemi .