欢迎来到BigBlueButton的安装指南。
本文档将指导您安装BigBlueButton 2.2(以下简称为BiqBlueButton)。
BigBlueButton不是一般的web应用程序。它是一个完全响应的单页web应用程序,使用浏览器的内置功能发送/接收音频和视频。BiqBlueButton服务器运行许多back-eno进程来处理媒体、传入API调用
、上传幻灯片的处理以及将捕获的媒体转换为录制。
BigBlueButton使用一个完整的HTML5客户端作为它的界面。这意味着相同的客户端可以在台式机、笔记本电脑、chromebook和移动设备(IOS12.2+和Android 6.0+)上运行。我们推荐谷歌浏览器和火狐浏览器能更好的支持这个webRTC(网页即时通信 )项目。
BigBlueButton客户端提供:
您可以在https://test.biqbluebutton.orq/上尝试最新版本的HTML5客户端。
当安装BigBlueButton时,你有两个选择: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服务器的最低要求是:
对于用于生产的服务器,我们还建议:
为什么我们推荐裸金属服务器? BigBlueButton使用FreeSWITCH来处理传入的音频包,FreeSWITCH在非虚拟化环境中工作得最好(参见FreeSWITCH推荐配置)。
如果您在工作站上为本地开发设置BigBlueButton,您可以稍微放松服务器需求,因为您将是唯一使用服务器的人。你应该能够运行BigBlueButton:
但是,如果不在服务器上配置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的许多变体,却没有一个能够很好地工作。
我们建议为您的BigBlueButton服务器分配一个完全限定的域名(FQDN),例如bigbluebutton.example.com
, 使用安全套接字层(SSL)证书配置服务器。这样做将使nginx(安装了BiqBlueButton的web服务器)能够通过安全超文本传输协议HTTPS提供内容。没有启用HTTPS的浏览器将不允许用户共享他们的网络摄像头或麦克风。另外,如果没有启用HTTPS,一些浏览器会抱怨内容不安全。
简而言之,在生产中使用的任何服务器上,都必须设置域名和有效的SSL证书。
要获得一个域名,有很多好的域名注册商,比如GoDadday和Network Solutions。
要获得SSL证书,有许多选项,请参见获得SSL证书。
你和你的用户之间有防火墙吗?如果是这样,请查看如何设置您的防火墙。
在升级之前,如果您已经通过修改配置文件对BigBlueButton进行了任何自定义更改,那么您需要首先备份这些更改,以便在升级之后重新应用它们。
如果您正在升级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
$ sudo bbb-conf --check
例如,如果您已经配置了服务器的主机名bbb.example.com
,你需要:
$ sudo bbb-conf --setip bbb.example.com
$ sudo bbb-conf --check
如果您安装了以前版本的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升级并自动为您执行。
准备好安装吗?这里有一个快速预装清单:
bigbluebutton.example.com
)能解析到您的BigBlueButton服务器的IP地址(或您的防火墙的IP地址)。如果您是一名使用火狐在本地VM上设置BigBlueButton进行开发或测试的开发人员,您可以在上面跳过步骤(2)、(3)和(4)。此时,您就可以开始安装了。
拿起一杯你最喜欢的饮料,让我们开始吧!
首先,确保您的服务器是最新的包和安全更新。
通过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
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
如果这是一个新安装,您可以跳过这一步。
如果您正在从BigBlueButon2.0或BigBlueButton 2.2的早期版本升级,并且已经进行了自定义的修改,例如:
/etc/nginx/sites-available/bigbluebutton
中设置您自己的SSL证书。/var/www/bigbluebutton-default/default.pdf
文件。或者使用bbb-conf
之外的任何更改,那么您现在就需要在升级BigBlueButton之前备份这些更改。升级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客户端成为默认客户端(并且不再加载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
API演示是一组Java服务器页面(JSP),它们实现了一个基于web的接口来测试BiqBlueButton API。
要安装这些API示例,请输入以下命令:
$ sudo apt-get install bbb-demo
一旦安装完毕,你就可以在主页上输入你的名字,然后点击“加入”。
这将使您加入到默认会议“演示会议”。这是一个使用火狐的屏幕截图,打开共享笔记面板,在白板上绘图,并共享一个网络摄像头。
当您完成API示例时,您可以使用以下命令删除它们:
$ sudo apt-get remove bbb-demo
您可以在任何时候使用这些命令重新启动并检查Bi该BlueButton服务器:
$ sudo bbb-conf --restart
$ sudo bbb-conf --check
bbb-conf --check
扫描一些日志文件以查找错误消息。再一次,所有的输出Potential problems
可能表明配置错误或安装错误。在许多情况下,这些消息将为您提供如何解决问题的建议。
注意,sudo bbb-conf --check
警告您APl演示已经安装,它使任何访问服务器的人都可以启动会话(请参阅删除API演示)。
如果您看到其他警告消息,请查看安装故障排除。
如果此服务器用于生产,则您应该使用它:
我们提供了两个可以公开访问的服务器,您可以使用它们进行测试:
要了解有关将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支持,以使其更加安全。此外,从Chrome 47开始,Chrome用户将无法通过WebRTC分享他们的麦克风,除非BigBlueButton通过HTTPS加载。
请以root身份运行本节中的所有命令。
为了为您的服务器获得有效的SSL证书,您必须已经为您的BigBlueButton服务器分配了一个主机名。
出于文档目的,我们将使用域名“example.com”,并在“biabluebutton.example.com”上托管一个BigBlueButton服务器。
一旦您有了一个域名并将其与一个DNS主机进行了配置,添加一个指向您的服务器的A记录。你然后使用bbb-conf setip command 命令配置BigBlueButton使用该域名,例如:
$ sudo bbb-conf --setip bigbluebutton.example.com
在通过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的安装程序。
根据您的证书颁发机构(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设置可能会更改。
如果您的服务器上有防火墙,并且已经打开了端口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;
}
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://www.ssllabs.com/ssltest/—只需输入您的服务器的主机名,如果您想保持它的私人性,那么可以选中“不显示结果”复选框,然后选择Subrmit。
在编写本文时,此页上显示的配置应该在SSL实验室测试页面中获得“A”级。
如果您的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配置,请执行以下操作:
如果在安装过程中遇到任何问题,请参阅故障排除。