BigBlueButton 2.2安裝指南
歡迎來到BigBlueButton的安裝指南。
本文檔將指導您安裝BigBlueButton 2.2(以下簡稱爲BiqBlueButton)。
BigBlueButton不是一般的web應用程序。它是一個完全響應的單頁web應用程序,使用瀏覽器的內置功能發送/接收音頻和視頻。BiqBlueButton服務器運行許多back-eno進程來處理媒體、傳入API調用
、上傳幻燈片的處理以及將捕獲的媒體轉換爲錄製。
完整的HTML5的客戶端
BigBlueButton使用一個完整的HTML5客戶端作爲它的界面。這意味着相同的客戶端可以在臺式機、筆記本電腦、chromebook和移動設備(IOS12.2+和Android 6.0+)上運行。我們推薦谷歌瀏覽器和火狐瀏覽器能更好的支持這個webRTC(網頁即時通信 )項目。
BigBlueButton客戶端提供:
- 加載速度比前一個版本快2倍
- 高質量的音頻、視頻和屏幕共享(使用WebRTC)
- 用於多用戶編輯的共享註釋(使用優秀的EtherPad項目)
- 完全可訪問屏幕閱讀器
- 在會議期間分享YouTube視頻
您可以在https://test.biqbluebutton.orq/上嘗試最新版本的HTML5客戶端。
安裝選擇
當安裝BigBlueButton時,你有兩個選擇:bbb-install.sh
和分步執行,無論你選擇哪一個,要想成功安裝,你需要:
- 獲得一個專用的服務器
- 確保服務器滿足BiqBlueButton的最低要求集
- 分配一個主機名(建議設置SSL)
- 配置服務器的防火牆(如果需要)
下面將介紹這兩個選擇。
bbb-install.sh
如果您想快速安裝一個BigBlueButton服務器(或者在過去已經安裝了BigBlueButton服務器),那麼bbb-install.sh
將在大約15分鐘內讓您啓動並運行一個命令。
分步執行
如果您想了解BigBlueButton的更多組件,可以使用本指南中的分步說明。
安裝之前
爲了成功安裝BigBlueButton,我們建議從一個“乾淨”的Ubuntu 16.04 64位服務器開始安裝BiaBlueButton。
這裏的“乾淨”指的是服務器沒有安裝任何以前綁定到端口80/443的web應用程序(如plesk、webadmin或apache)。這裏的“專用”指的是除了BigBlueButton(以及與biqbluebutton相關的應用程序,如Greenlight)之外,該服務器不會用於其他任何東西。
最小的服務器需求
BigBlueButton服務器的最低要求是:
- 運行在4核Linux上64位Ubuntu16.04
- 支持交換的8G內存( 16G更好)
- CPU 4核(8核更好)
- 可以訪問TCP端口80、443
- 可以訪問UDP端C 116384-32768
- 80端口不能被其他程序佔用
對於用於生產的服務器,我們還建議:
- 500G的可用磁盤空間(或者更多)
- 250Mbits/s的帶寬(或者更多)
- 專屬(裸金屬)硬件
- 用於設置SSL證書的主機名(例如bbb.example.com )
- 支持IPV4和IPV6
爲什麼我們推薦裸金屬服務器? BigBlueButton使用FreeSWITCH來處理傳入的音頻包,FreeSWITCH在非虛擬化環境中工作得最好(參見FreeSWITCH推薦配置)。
如果您在工作站上爲本地開發設置BigBlueButton,您可以稍微放鬆服務器需求,因爲您將是唯一使用服務器的人。你應該能夠運行BigBlueButton:
- 2 核CPU
- 安裝在本地虛擬機或LXC容器
- 僅需要IPV4地址(不需要主機名)
但是,如果不在服務器上配置SSL,就不能使用web實時通信(WebRTC)來共享麥克風、網絡攝像頭或屏幕。換句話說,現在所有的瀏覽器都需要先通過HTTPS加載頁面,然後才允許HTML5應用程序請求訪問共享媒體。
如果您想在Amazon EC2上安裝BigBlueButton,我們建議在c5.xlarge實例上運行BigBlueButton(或更大的CPU)。這些新的計算實例提供了非常接近於裸金屬的性能對於終端用戶的最低要求。
我們推薦最新版本的火狐或谷歌以及以下最低帶寬要求。
安裝前檢查
準備好安裝Ubuntu 16.04 64位服務器了嗎?太棒了!但是,在開始安裝之前,進行一些快速配置檢查,以確保您的服務器滿足最低要求。
花點時間做這些檢查將大大減少您在安裝過程中遇到問題時所做的更改。首先,檢查服務器的語言環境是否爲en_US.UTF-8
。
$ cat /etc/default/locale
LANG="en_US.UTF-8"
如果你沒有發現LANG="en_US.UTF-8"
輸入以下命令將本地設置爲en_US.UTF-8
。
$ sudo apt-get install language-pack-en
$ sudo update-locale LANG=en_US.UTF-8
接下來,註銷,然後重新登錄到SSH會話 - 這將重新加載您的會話的區域設置 。並在cat/etc/default/locale
再次運行上述命令。驗證您只看到單行LANG="en_US.UTF-8"
。
注意:如果你看到一個額外的行LC_ALL=en_US.UTF-8
,然後從/etc/default/locale
刪除條目LC_ALL
,然後註銷重新登錄一次。
接下來,運行 sudo systemctl show-environment
,並確保您看到輸出爲:LANG="en_US.UTF-8"
。
$ sudo systemctl show-environment
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
如果您沒有看到這一點,請執行sudo systemctl set-environment LANG=en_US.UTF-8
。再次運行上面的sudo systemctl show-environment
並確認您看到的輸出爲LANG="en_US.UTF-8"
。
接下來,使用free-h
命令檢查服務器是否有(至少)4G內存。這是我們的一個測試服務器的輸出。
$ free -h
total used free shared buff/cache available
Mem: 31G 5.9G 314M 1.8G 25G 21G
Swap: 31G 360M 31G
這裏顯示了31G的內存(它是一個擁有32G內存的服務器)。
如果您看到Mem:
的值在total
列中小於4G(上面的例子顯示爲31G),那麼您的服務器沒有足夠的內存來運行BigBlueButton。您需要將服務器的內存增加到(至少)4G。
接下來,檢查服務器是否爲 Ubuntu 16.04。
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=16.04
DISTRIB_CODENAME=xenial
DISTRIB_DESCRIPTION="Ubuntu 16.04.x LTS"
接下來,檢查您的服務器是否運行64位版本的Ubuntu 16.04。
$ uname -m
x86_64
接下來,檢查您的服務器是否支持IPV6:
$ ip addr | grep inet6
inet6 ::1/128 scope host
...
如果你沒有看到inet6 ::1/128 scope host
,那麼在你安裝BiqBlueButton之後,你需要修改FreeSWITCH的配置來禁用對IPV6的支持。
接下來,檢查您的服務器是否爲運行的Linux內核4.x。
$ uname -r
4.15.0-38-generic
接下來,檢查您的服務器是否有(至少)4 核 CPU。
$ cat /proc/cpuinfo | awk '/^processor/{print $3}' | wc -l
4
注意:BigBlueButton不會在2.6內核上運行(比如Linux 2.6.32-042stab133.2 on x86_64 on OpenVZ VPS )。
有時候我們會被問到“爲什麼你只支持Ubuntu 16.04 64位?”答案在於選擇質量而不是數量。很久以前,我們就得出結論,對於項目來說,最好是爲一個工作非常非常好的特定版本的Linux提供可靠的、經過良好測試的、文檔完整的安裝,而不是嘗試和支持Linux的許多變體,卻沒有一個能夠很好地工作。
擁有主機名和SSL證書
我們建議爲您的BigBlueButton服務器分配一個完全限定的域名(FQDN),例如bigbluebutton.example.com
, 使用安全套接字層(SSL)證書配置服務器。這樣做將使nginx(安裝了BiqBlueButton的web服務器)能夠通過安全超文本傳輸協議HTTPS提供內容。沒有啓用HTTPS的瀏覽器將不允許用戶共享他們的網絡攝像頭或麥克風。另外,如果沒有啓用HTTPS,一些瀏覽器會抱怨內容不安全。
簡而言之,在生產中使用的任何服務器上,都必須設置域名和有效的SSL證書。
要獲得一個域名,有很多好的域名註冊商,比如GoDadday和Network Solutions。
要獲得SSL證書,有許多選項,請參見獲得SSL證書。
配置防火牆(如果需要)
你和你的用戶之間有防火牆嗎?如果是這樣,請查看如何設置您的防火牆。
升級
在升級之前,如果您已經通過修改配置文件對BigBlueButton進行了任何自定義更改,那麼您需要首先備份這些更改,以便在升級之後重新應用它們。
從BigBlueButton 2.2升級
如果您正在升級BigBlueButton 2.2,讓我們使用加密來設置SSL/TLS證書,並且您沒有對配置進行任何自定義更改,那麼您應該能夠運行bbb-install.sh
腳本來升級到最新版本的BigBlueButto 2.2。
如果您使用逐步說明安裝了BigBlueButton 2.2的先前版本,那麼您應該返回任何自定義更改,然後使用下面的命令進行升級。首先,使用 dist-upgrade
命令對所有包進行升級爲最新版本BigBlueButton 2.2的包。
我們把PPA換成了ffmpeg。如果您還沒有這樣做,請輸入以下命令:
$ sudo rm -f /etc/apt/sources.list.d/jonathonf-ubuntu-ffmpeg-4-xenial.list
$ sudo add-apt-repository ppa:bigbluebutton/support
接下來,使用以下命令更新包:
$ sudo apt-get update
$ sudo apt-get dist-upgrade
接下來,使用bbb-conf --setip
將您的服務器IP地址或主機名重新分配給BigBlueButton的配置文件。
$ sudo bbb-conf --setip <IP_or_hostname>
$ sudo bbb-conf --check
例如,如果您已經配置了服務器的主機名bbb.example.com
,你需要:
$ sudo bbb-conf --setip bbb.example.com
$ sudo bbb-conf --check
從BigBlueButton 2.0升級
如果您安裝了以前版本的BiqBlueButton 2.0,然後進行了自定義更改,那麼您需要首先備份您的更改。備份更改之後,可以使用bbb-install.sh
進行升級或執行以下步驟。升級之後,重新應用您的更改。
首先,您需要卸載bbb-client
:
$ sudo apt-get purge -y bbb-client
並使用該命令清除Kurento的舊包:
$ sudo apt-get purge -yq kms-core-6.0 kms-elements-6.0 kurento-media-server-6.0
$ sudo bbb-conf --restart
然後,您可以在升級到BigBlueButton 2.2的兩個安裝選項中進行選擇。升級完成後,您可以重新應用任何自定義更改。
注意:如果您使用bbb-install.sh
從BigBlueButton 2.0升級,則不需要清除bbb-client
和Kurento包,因爲升級腳本將檢測到您從BigBlueButton 2.0升級並自動爲您執行。
安裝
準備好安裝嗎?這裏有一個快速預裝清單:
- 您有一個滿足最低規格的Ubuntu 16.04 64位服務器。
- 如果服務器在防火牆之後,您已經配置了防火牆,以便將適當的端口轉發給BiqBlueButton服務器(並且已經通過一臺外部計算機測試了連接通過防火牆到達您的BigBlueButton服務器)。
- 您有一個完全限定的域名(例如
bigbluebutton.example.com
)能解析到您的BigBlueButton服務器的IP地址(或您的防火牆的IP地址)。 - 您有一個有效的主機名SSL證書(或者打算獲得一個Let’s Encrypt證書,該證書在這些文檔中有介紹)。
如果您是一名使用火狐在本地VM上設置BigBlueButton進行開發或測試的開發人員,您可以在上面跳過步驟(2)、(3)和(4)。此時,您就可以開始安裝了。
拿起一杯你最喜歡的飲料,讓我們開始吧!
1.更新您的服務器
首先,確保您的服務器是最新的包和安全更新。
通過SSH登錄到服務器。您需要有一個可以作爲根用戶(通過sudo
)執行命令的帳戶。登錄後,首先確保你有xenail multiverse
在 /etc/apt/sources.list
目錄中,按照下面做:
$ grep "multiverse" /etc/apt/sources.list
輸入上面的命令後,您應該看到multiverse存儲庫的未註釋行,看起來可能像這樣:
deb http://archive.ubuntu.com/ubuntu xenial multiverse
或者是這樣:
deb http://archive.ubuntu.com/ubuntu xenial main restricted universe multiverse
如果URL中的主機名與上面的不同,不要擔心,重要的是看到一個未註釋的鏈接multiverse
。如果沒有,運行以下命令將multiverse存儲庫添加到您的文件列表/etc/apt/sources.list
。
$ echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list
如果您是一名在VM上安裝BigBlueButton以進行測試和開發的開發人員,那麼BigBlueButton的一些組件(比如Tomcat)在啓動時需要一個熵源。在VM中,可用的熵可以低運行,並導致Tomcat在完成啓動前阻塞很長一段時間(有時是幾分鐘)。爲了給VM提供更多的熵,安裝一個名爲naveged的軟件包(一個簡單的熵守護進程):
$ sudo apt-get install haveged
如果你對熵背後的細節感興趣,請看這個鏈接。
BigBlueButton需要兩個應用程序:ffmpeg
(創建記錄)和yq
(更新YAML文件)。Ubuntu 16.04中的ffmpeg
的默認版本是舊的,yq
在默認存儲庫中不存在。因此,在安裝BiqBlueButton之前,需要向服務器添加以下個人包存檔(PPA),以確保安裝了正確的版本。
$ sudo add-apt-repository ppa:bigbluebutton/support -y
$ sudo add-apt-repository ppa:rmescandon/yq -y
接下來,將您的服務器升級到最新的包(以及安全修復程序)。
$ sudo apt-get update
$ sudo apt-get dist-upgrade
如果您還沒有更新,apt-get
可能會建議您在 dist-upgrade
後重新啓動服務器。現在進行下一步。
BigBlueButton HTML5客戶端使用MongoDB,這是一個非常高效的數據庫,用於同步客戶端狀態。要安裝MongoDB,請執行以下操作:
$ 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
BigBlueButton HTML5客戶端需要一個nodejs服務器。要安裝nodejs,請執行以下操作:
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
2. 爲BigBlueButton存儲庫安裝apt-get密鑰
BigBlueButton的所有包都使用項目的公鑰進行數字簽名。在安裝BigBlueButton之前,需要將項目的公鑰添加到服務器的密鑰鏈中。爲此,輸入以下命令:
$ wget https://ubuntu.bigbluebutton.org/repo/bigbluebutton.asc -O- | sudo apt-key add -
如果要從BigBlueButton 2.0(或更早的版本)更新服務器,則需要首先刪除bbb-client
包。
$ sudo bbb-conf --stop
$ sudo apt-get purge -y bbb-client
這是因爲bbb-client
擁有的一些文件已經轉移到bbb-web
所擁有。在升級到BigBlueButton 2.2之前刪除bbb-client
包將允許bbb-web
創建這些文件,而不會與舊版本的bbb-client
產生衝突。
接下來,服務器需要知道在哪裏下載BigBlueButton 2.2包。要配置包存儲庫,請輸入以下命令:
$ echo "deb https://ubuntu.bigbluebutton.org/xenial-22/ bigbluebutton-xenial main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
接下來,運行apt-get
來獲取最新BigBlueButton包的鏈接。
$ sudo apt-get update
3.備份自定義配置
如果這是一個新安裝,您可以跳過這一步。
如果您正在從BigBlueButon2.0或BigBlueButton 2.2的早期版本升級,並且已經進行了自定義的修改,例如:
- 在
/etc/nginx/sites-available/bigbluebutton
中設置您自己的SSL證書。 - 配置FreeSWITCH接受來電。
- 修改了默認的
/var/www/bigbluebutton-default/default.pdf
文件。
或者使用bbb-conf
之外的任何更改,那麼您現在就需要在升級BigBlueButton之前備份這些更改。升級BigBlueButton之後,可以將自定義配置重新應用到服務器。
4.安裝BigBlueButton
注意:如果您正在從BigBlueButton 2.0(或更早版本)進行更新,請在安裝新版本之前執行sudo apt-get purge bbb-client
來卸載bbb-client
。
我們現在準備安裝BigBlueButton。輸入以下兩個命令:
$ sudo apt-get install bigbluebutton
$ sudo apt-get install bbb-html5
對於每個命令,當提示繼續時,鍵入“Y”並按ENTER。
注意1:對於ttf-mscorefonts-installer
包,您可以忽略錯誤“Failure to download extra data files” 。這是Ubuntu 16.04的一個已知問題。
注意2:如果安裝在完成之前出現了錯誤,請在安裝之前檢查步驟。如果發現並解決了任何配置錯誤,可以嘗試使用sudo apt-get install -f
命令完成安裝。
注意3:如果在sudo apt-get install -f
之後仍然出現錯誤,請在這裏停止。安裝尚未完成,BiqBlueButton將不運行。請參閱故障排除指南和其他獲得幫助的選項。
安裝完成後,可以將HTML5作爲默認客戶端(除非需要Flash客戶端)。
最後,爲了確保所有包都是最新的,進行最後一次 dist-upgrade
$ sudo apt-get dist-upgrade
安裝完成後,可以將HTML5設置爲默認客戶端(推薦)
將HTML5設置爲默認客戶端
要使HTML5客戶端成爲默認客戶端(並且不再加載Flash客戶端),請進行編輯/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
設置attendeesJoinViaHTML5Client
和moderatorsJoinViaHTML5Client
爲true
,如下:
# Force all attendees to join the meeting using the HTML5 client
attendeesJoinViaHTML5Client=true
# Force all moderators to join the meeting using the HTML5 client
moderatorsJoinViaHTML5Client=true
在BigBlueButton 2.2-beta-10中,還可以通過設置swfSlidesRequired=false
來禁用創建SWF文件,從而減少幻燈片轉換時間。
#----------------------------------------------------
# Conversion of the presentation slides to SWF to be
# used in the Flash client
swfSlidesRequired=false
HTML5客戶端不需要SWF文件。
接下來,啓動BigBlueButton:
$ sudo bbb-conf --restart
這將按適當的順序重新啓動BigBlueButton服務器的所有組件。注意:如果您最初看到# Not running: tomcat7 or grails
或Error: Could not connect to the configured hostname/IP address
請不要擔心。
重啓完成後,使用bbb-conf --check
檢查設置。當你運行這個命令,你應該看到輸出類似如下:
$ 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 **
任何在Potential problems
之後的輸出都可能指示配置錯誤或安裝錯誤。在許多情況下,這些消息將爲您提供如何解決問題的建議。
還可以使用sudo bbb-conf --status
檢查所有BigBlueButton進程是否已經啓動並正在運行:
$ 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]
此時,您的BigBlueButton服務器正在監聽IPV4地址。例如,如果您的服務器位於IP地址178.128.233.105,您可以打開http://178.128.233.105/並看到歡迎屏幕。
但是,除非安裝了API演示程序,否則無法從該屏幕登錄(如果嘗試,將會得到404錯誤,下一步將演示如何添加API演示程序)。
如果您打算將此服務器與另一個前端一起使用,則不需要API演示。您可以將BigBlueButton與第三方集成集成在一起,方法是提供集成服務器的地址和共享機密。您可以使用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. 安裝API演示(可選)
API演示是一組Java服務器頁面(JSP),它們實現了一個基於web的接口來測試BiqBlueButton API。
要安裝這些API示例,請輸入以下命令:
$ sudo apt-get install bbb-demo
一旦安裝完畢,你就可以在主頁上輸入你的名字,然後點擊“加入”。
這將使您加入到默認會議“演示會議”。這是一個使用火狐的屏幕截圖,打開共享筆記面板,在白板上繪圖,並共享一個網絡攝像頭。
當您完成API示例時,您可以使用以下命令刪除它們:
$ sudo apt-get remove bbb-demo
6.重啓服務器
您可以在任何時候使用這些命令重新啓動並檢查Bi該BlueButton服務器:
$ sudo bbb-conf --restart
$ sudo bbb-conf --check
bbb-conf --check
掃描一些日誌文件以查找錯誤消息。再一次,所有的輸出Potential problems
可能表明配置錯誤或安裝錯誤。在許多情況下,這些消息將爲您提供如何解決問題的建議。
注意,sudo bbb-conf --check
警告您APl演示已經安裝,它使任何訪問服務器的人都可以啓動會話(請參閱刪除API演示)。
如果您看到其他警告消息,請查看安裝故障排除。
7.最後的步驟
如果此服務器用於生產,則您應該使用它:
- 爲服務器分配一個主機名
- 安裝SSL證書以支持HTTPS
- 保護您的系統——限制對特定端口的訪問
- 確保服務器在防火牆後工作(如果需要)
- 刪除API演示(如果您安裝它們是爲了測試)
- 設置一個TURN server(如果您的服務器在Internet上,並且有用戶從限制防火牆後面訪問它)
我們提供了兩個可以公開訪問的服務器,您可以使用它們進行測試:
- https://demo.bigbluebutton.org 運行着最新穩定的構建BigBlueButton與Greenlight前端。
- https://test.bigbluebutton.org 運行BigBlueButton的最新開發版本。
要了解有關將BigBlueButton與應用程序集成的更多信息,請參閱BigBlueButton API文檔。要查看BigBlueButton HTML5客戶端的視頻,請參見https://bigbluebutton.org/html5。
分配一個主機名
對於任何生產BigBlueButton服務器,都需要爲其分配一個主機名。
如果你已經沒有這麼做,你需要購買一個域名的域名服務(DNS)提供者,使用提供者的web界面,配置A record
指向您的服務器的IP地址(參見文檔DNS提供商如何做這一步)。
在設置了A record
之後,輸入以下命令和EXTERNAL_HOST_NMAE
是您BigBlueButton服務器的主機名
$ ping EXTERNAL_HOST_NAME
下面是使用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
注意:如果您的服務器不允許ICMP通信,那麼不會返回任何字節,但是您應該看到服務器的IP地址在主機名後面的括號()中返回。
如果主機名解析服務器的IP地址(或防火牆的IP地址),接下來使用BigBlueButton實用工具 bbb-conf
更新BigBlueButton的配置文件使用這個主機名。
$ sudo bbb-conf --setip HOSTNAME
例如,如果您的主機名是 bigbluebutton.example.com
,命令是
$ sudo bbb-conf --setip bigbluebutton.example.com
此時,BigBlueButton服務器監聽一個IP地址(或主機名)並響應APl請求。
但是,如果您試圖使用瀏覽器從服務器的默認頁面登錄,則會出現錯誤:HTTP Status 404 - /demo/demo1.jsp
爲什麼?BigBlueButton服務器可以列出API調用,但默認情況下沒有安裝前端。您可以輕鬆地安裝API演示程序來測試服務器。我們將在下一步介紹API演示的安裝。
但是,如果您打算爲BigBlueButton服務器使用另一個前端,例如,如果您有一個Moodle服務器,並且您想配置BigBlueButton Moodle插件來訪問BigBlueButton服務器,則不需要API演示。
在BigBlueButton服務器上配置SSL
您需要向BigBlueButton服務器添加SSL支持,以使其更加安全。此外,從Chrome 47開始,Chrome用戶將無法通過WebRTC分享他們的麥克風,除非BigBlueButton通過HTTPS加載。
配置BigBlueButton以使用域名
請以root身份運行本節中的所有命令。
爲了爲您的服務器獲得有效的SSL證書,您必須已經爲您的BigBlueButton服務器分配了一個主機名。
出於文檔目的,我們將使用域名“example.com”,並在“biabluebutton.example.com”上託管一個BigBlueButton服務器。
一旦您有了一個域名並將其與一個DNS主機進行了配置,添加一個指向您的服務器的A記錄。你然後使用bbb-conf setip command 命令配置BigBlueButton使用該域名,例如:
$ sudo bbb-conf --setip bigbluebutton.example.com
獲得SSL證書
在通過HTTPS將BigBlueButton上的nginx配置爲服務器內容之前,需要有一個有效的SSL證書。使用4096位RSA密鑰和SHA-256校驗和的域驗證(有時稱爲“類1”)證書是當前推薦的最小值,它應該足夠了。
您可以從許多提供程序獲得證書。許多域名銷售公司也提供域名轉讓。
一些知名的大型SSL證書供應商包括Comodo 、Symantec 、GoDaddy、GlobalSign和Digicert。此外,StartSSL和CACert還提供免費的SSL證書,但有一些需要注意的地方:在不支付服務費的情況下,無法撤銷StartSSL證書,而且大多數人的web瀏覽器中都沒有安裝用於CACert的根證書。
每個提供程序將爲您提供生成證書的一系列步驟,但是它們通常包括在本地生成私鑰和證書請求,發送要簽名的證書請求,然後在執行任何必需的驗證步驟後接收回已簽名的證書.
要將證書安裝在BigBlueButton中,您需要有證書、私鑰和PEM格式的任何中間證書的文件。
如果您還沒有SSL證書,並且您的服務器在Internet上,那麼您可以使用Let’s Encrypt來獲得一個免費的可更新SSL證書(90天后過期,但可以自動更新)。如果您想使用Let’s Encrypt,請跳到使用Let’s Encrypt的安裝程序。
配置nginx使用HTTPS
根據您的證書頒發機構(CA),您現在應該有兩個或更多的文件,如下所示:
- 證書
- 私鑰
- 中級證書(可能有一個以上,也可能沒有)
下一步是在服務器上安裝文件。
創建目錄/etc/nginx/ss1
:
$ sudo mkdir /etc/nginx/ssl
現在創建nginx要使用的私鑰文件(用自己的私鑰替換文件名中的主機名)。此外,修改權限,使只有root可以讀取私鑰:
# 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
證書文件。注意nginx需要你的服務器證書和中間證書的列表一起放在一個文件中(用你自己的文件替換文件名中的主機名):
# 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
此外,我們將生成一組4096位diffie-hellman參數,以提高某些類型密碼的安全性。完成此步驟可能需要幾分鐘,特別是在虛擬機上運行時。
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
現在我們可以編輯nginx配置來使用SSL。編輯文件/etc/nginx/sites-available/bigbluebutton
來添加標記的行。確保使用正確的文件名來匹配您在上面創建的證書和密鑰文件。
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;
作爲參考,請注意上面使用的SSL設置是基於https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ 中建議的設置,併爲所有現代瀏覽器(包括IE8, 不包括IE6, on Windows XP )提供支持。請注意,當發現新的漏洞時,推薦的SSL設置可能會更改。
配置FreeSWITCH以使用SSL
如果您的服務器上有防火牆,並且已經打開了端口5066,那麼將規則改爲現在打開端口7443。
此外,如果您的BigBlueButton服務器位於防火牆之後,您可能需要使用外部IP地址來指定值:7443,以避免在客戶端得到錯誤1002。有關詳細信息,請參見BigBlueButton服務器位於防火牆之後配置。
接下來是nginx中的websocket轉發地址。編輯文件/etc/bigbluebutton/nginx/sip
,改變proxy_pass線上的協議和端口,如下圖所示:
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;
}
配置BigBlueButton通過HTTPS加載會話
nginx現在配置爲使用SSL,下一步是配置FreesWITCH使用HTTPS啓動音頻連接。
編輯/usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties
並更新bigbluebutton.web.serverURL
以使用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
接下來,編輯文件 /usr/share/red5/webapps/screenshare/WEB-INF/screenshare.properties
並將屬性jnlpUrl
和jnlpFile
更新HTTPS:
streamBaseUrl=rtmp://bigbluebutton.example.com/screenshare
jnlpUrl=https://bigbluebutton.example.com/screenshare
jnlpFile=https://bigbluebutton.example.com/screenshare/screenshare.jnlp
您還必須更新文件/var/www/bigbluebutton/client/conf/config.xml
,以告訴BigBlueButton客戶端通過HTTPS加載組件。您可以使用一個命令進行更新:
$ sudo sed -e 's|http://|https://|g' -i /var/www/bigbluebutton/client/conf/config.xml
如果您需要還原此更改,您可以運行反向命令:
$ sudo sed -e 's|https://|http://|g' -i /var/www/bigbluebutton/client/conf/config.xml
打開/usr/share/meteor/bundle/programs/server/assets/app/config/settings.yml
並編輯:
把
kurento:
wsUrl: ws://bbb.example.com/bbb-webrtc-sfu
改爲:
kurento:
wsUrl: wss://bbb.example.com/bbb-webrtc-sfu
也可以修改:
把
note:
enabled: true
url: http://bbb.example.com/pad
改爲:
note:
enabled: true
url: https://bbb.example.com/pad
接下來,修改錄製的創建,使它們通過HTTPS提供服務。編輯/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml
改變playback_protocol
的值如下:
playback_protocol: https
如果您已經在步驟5中安裝了API演示,編輯/var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp
修改BigBlueButtonURL
的值:
// This is the URL for the BigBlueButton server
String BigBlueButtonURL = "https://bigbluebutton.example.com/bigbluebutton/";
最後,要應用所有的配置更改,您必須重新啓動BigBlueButton的所有組件:
$ sudo bbb-conf --restart
測試您的HTTPS配置
爲了確保您沒有犯任何可能導致安全損害的錯誤,請測試您的HTTPS配置。一個很受人尊敬的可以進行一系列自動化測試的站點是https://www.ssllabs.com/ssltest/—只需輸入您的服務器的主機名,如果您想保持它的私人性,那麼可以選中“不顯示結果”複選框,然後選擇Subrmit。
在編寫本文時,此頁上顯示的配置應該在SSL實驗室測試頁面中獲得“A”級。
使用Let’s Encrypt
如果您的BigBlueButton服務器(即bigbluebutton.example.com)分配了一個域名,並且該服務器位於Internet上,那麼可以使用Let’s Encrypt來獲得一個免費的SSL證書。
首先,安裝Let’s Encrypt配置工具。請使用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
接下來,生成一組4096位diffie-hellman參數,以提高某些類型密碼的安全性。
sudo mkdir -p /etc/nginx/ssl
sudo openssl dhparam -out /etc/nginx/ssl/dhp-4096.pem 4096
在可以在服務器上生成證書之前,需要確定BigBlueButton以使用預期的主機名。如果您還沒有這樣做,請使用以下命令(替換bigbluebutton.example.com
使用您自己的DNS名稱),以使用您的主機名來配置BigBlueButton服務器。
$ sudo bbb-conf --setip bigbluebutton.example.com
接下來,使用certbot
工具從Let’s Encrypt請求一個SSL證書。再次用您的主機名取代bigbluebutton.example.com
。
$ 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
這將生成以下文件:
$ ls /etc/letsencrypt/live/bigbluebutton.example.com/
cert.pem chain.pem fullchain.pem privkey.pem
接下來,編輯nginx配置文件/etc/nginx/sites-available/bigbluebutton
,並添加下面標記的行。確保您使用了正確的文件名來匹配您在上面創建的證書和密鑰文件(使用你的主機名替換bigbluebutton.example.com
)。
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;
Let’s Encrypte證書有效期爲90天,可以自動更新。若要每週自動請求一次更新,請編輯root的crontab文件。
$ sudo crontab -e
並在底部添加以下兩行:
30 2 * * 1 /usr/bin/certbot renew >> /var/log/le-renew.log
35 2 * * 1 /bin/systemctl reload nginx
這兩個指令將在每週一凌晨2:30執行certbot renew
命令,然後在2:35am重新加載Nginx(因此將使用更新後的證書)。輸出將通過管道傳輸到位於/var/log/le-renewal.log
。記錄日誌,以便以後可以隨時檢查。
要完成SSL配置,請執行以下操作:
故障排除
如果在安裝過程中遇到任何問題,請參閱故障排除。