安装
欢迎使用BigBlueButton的安装指南。
本文档指导您安装BigBlueButton 2.2(以下简称为BigBlueButton)。
BigBlueButton不是您的一般Web应用程序。这是一个完全响应的单页Web应用程序,它使用浏览器的内置功能来发送/接收音频和视频。BigBlueButton服务器运行许多后端进程来处理媒体,传入的API调用,上载幻灯片的处理以及将捕获的媒体转换为录音的过程。
完整的HTML5客户端
BigBlueButton的界面使用完整的HTML5客户端。这意味着同一客户端可以在台式机,笔记本电脑,chromebook和您的移动设备(iOS 12.2+和Android 6.0+)上运行。我们建议使用Chrome和FireFox,因为这些浏览器为webRTC提供了最佳支持。
BigBlueButton客户端提供
您可以在https://test.bigbluebutton.org/上尝试最新版本的HTML5客户端。
安装选择
安装BigBlueButton时,有两个选择:bbb-install.sh和分步操作。
无论您选择哪种方式,要成功安装,都需要
下面介绍了这两个选择。
bbb-install.sh
如果要快速设置BigBlueButton服务器(或过去已经设置BigBlueButton服务器),则bbb-install.sh将在大约15分钟内通过单个命令启动并运行。
一步步
如果要了解BigBlueButton的更多组件,请使用本指南中的分步说明。
安装之前
为了成功安装BigBlueButton,我们建议从专用于BigBlueButton的“干净” Ubuntu 16.04 64位服务器开始。
“干净”是指服务器未安装任何绑定到端口80/443的 Web应用程序(例如plesk,webadmin或apache)。“专用”是指该服务器除了BigBlueButton(以及与BigBlueButton相关的应用程序,例如Greenlight)之外,不会用于其他任何用途。
最低服务器要求
BigBlueButton服务器的最低要求为
对于用于生产的服务器,我们另外建议:
为什么我们推荐裸机服务器?BigBlueButton使用FreeSWITCH处理传入的音频数据包,并且FreeSWITCH在非虚拟环境中效果最佳(请参阅FreeSWITCH推荐配置)。
如果要为工作站上的本地开发设置BigBlueButton,则可以稍微放宽服务器要求,因为您将是唯一使用该服务器的人。您应该可以使用运行BigBlueButton
但是,如果未在服务器上配置SSL,则不能使用Web实时通信(WebRTC)共享麦克风,网络摄像头或屏幕。换句话说,所有浏览器现在都要求通过HTTPS加载页面,然后才允许HTML5应用程序请求访问共享媒体。
如果要在Amazon EC2上安装BigBlueButton,我们建议在c5.xlarge(或更大CPU)实例上运行BigBlueButton。这些更新的计算密集型实例可提供非常接近裸机的性能。
对于最终用户的最低要求,我们建议使用最新版本的Firefox或Chrome,以及以下最低带宽要求。
安装前检查
准备安装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,请LC_ALL从删除条目/etc/default/locale并注销,然后再次登录。
接下来,执行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在输出中看到了。
接下来,使用命令检查服务器(至少)有4G内存free -h。这是我们其中一台测试服务器的输出。
$ free -h
total used free shared buff/cache available
Mem: 31G 5.9G 314M 1.8G 25G 21G
Swap: 31G 360M 31G
这里显示的是31G的内存(这是一台具有32 GB内存的服务器)。
如果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则在安装BigBlueButton之后,您需要修改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内核上运行(例如OpenVZ VPS上x86_64上的Linux 2.6.32-042stab133.2)。
有时我们会被问到“为什么只支持64位Ubuntu 16.04?”。答案是基于选择质量而不是数量。很久以前,我们得出的结论是,对于一个确实运行良好的特定版本的Linux,对项目进行可靠的,经过测试的良好记录的安装,这比尝试并支持可能的Linux变体而且没有一个运行良好的版本更好。 。
拥有主机名和SSL证书
我们建议为您的BigBlueButton服务器分配一个完全限定的域名(FQDN),例如bigbluebutton.example.com,并为服务器配置安全套接字层(SSL)证书。这样做将使已安装BigBlueButton的Web服务器nginx能够通过安全超文本传输协议(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软件包。
我们已经更改了ffmpeg的PPA。如果尚未这样做,请输入以下命令
$ 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
例如,如果您使用hostname配置了服务器bbb.example.com,则可以这样做
$ sudo bbb-conf --setip bbb.example.com
$ sudo bbb-conf --check
从BigBlueButton 2.0升级
如果您安装了BigBlueButton 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升级并自动为您完成升级。
安装
准备安装?这是一个快速的预安装清单:
如果您是开发人员,并使用FireFox设置BigBlueButton以便在本地VM上进行开发或测试,则可以跳过步骤(2),(3)和(4)。
至此,您可以开始安装了。拿起一杯您最喜欢的饮料,让我们开始吧!
1.更新您的服务器
首先,请确保您的服务器是最新的,具有最新的软件包和安全更新。
通过SSH登录到服务器。您需要具有一个可以以root用户身份(通过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
如果您的网址中的主机名与上面的主机名不同,请不要担心,重要的是您会看到包含的未注释链接multiverse。如果没有,请运行以下命令以将multiverse存储库添加到/etc/apt/sources.list文件中。
$ echo "deb http://archive.ubuntu.com/ubuntu/ xenial multiverse" | sudo tee -a /etc/apt/sources.list
如果您是在虚拟机上安装BigBlueButton进行测试和开发的开发人员,则在启动时,BigBlueButton的某些组件(例如Tomcat)需要一个熵源。在VM中,可用的熵可能会较低,而Tomcat可能会在完成启动之前长时间阻塞(有时是几分钟)。为了给虚拟机提供很多熵,请安装一个称为的打包haveged程序(一个简单的熵守护程序):
$ sudo apt-get install haveged
如果您对熵背后的细节感到好奇,请参阅此链接。
BigBlueButton需要两个应用程序:(ffmpeg创建记录)和yq(更新YAML文件)。ffmpegUbuntu 16.04中的默认版本较旧,yq默认存储库中不存在。因此,在安装BigBlueButton之前,需要将以下个人软件包档案(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是一种非常高效的数据库,用于同步客户端状态。要安装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。bbb-client在升级到BigBlueButton 2.2之前删除软件包将允许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的早期版本进行升级,并进行了任何自定义更改,例如
或using之外的任何其他更改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软件包的任何错误“无法下载额外的数据文件” 。这是Ubuntu 16.04的一个已知问题。
注2:如果在完成安装前退出并出现错误,请检查安装前的步骤。如果找到并解决任何配置错误,则可以尝试使用命令完成安装sudo apt-get install -f。
注意3:如果之后仍然出现错误sudo apt-get install -f,请在此处停止。安装尚未完成,BigBlueButton将无法运行。请参阅故障排除指南和其他选项以获取帮助。
安装完成后,可以将HTML5设置为默认客户端(除非需要Flash客户端,否则建议使用该客户端)。
最后,为确保所有软件包都是最新的,请执行最后一个 dist-upgrade
$ sudo apt-get dist-upgrade
安装完成后,可以将HTML5设置为默认客户端(推荐)。
接下来,重新启动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用来检查所有BigBlueButto进程是否已启动并正在运行。
$ 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来显示此信息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 Server Pages(JSP),它们实现了基于Web的界面来测试BigBlueButton API。
要安装API示例,请输入以下命令:
$ sudo apt-get install bbb-demo
安装后,您将可以在主页上输入您的姓名,然后单击“加入”。
这将使您加入名为“演示会议”的默认会议。这是使用FireFox进行连接,打开“共享便笺”面板,在白板上绘图以及共享网络摄像头的屏幕截图。
完成API示例后,可以使用以下命令将其删除
$ sudo apt-get remove bbb-demo
6.重新启动服务器
您可以随时使用以下命令重新启动并检查BigBlueButton服务器
$ sudo bbb-conf --restart
$ sudo bbb-conf --check
在bbb-conf --check扫描一些日志文件中的错误消息。同样,后面的任何输出都Potential problems 可能指示配置错误或安装错误。在许多情况下,这些消息将为您提供有关解决问题的建议。
请注意,sudo bbb-conf --check警告您已安装API演示,这将使任何有权访问服务器的人都可以启动会话(请参阅删除API演示)。
如果您看到其他警告消息,请检查故障排除安装。
7.最后步骤
如果此服务器用于生产,则应
我们提供了两个可用于测试的可公开访问的服务器:
要了解有关将BigBlueButton与您的应用程序集成的更多信息,请查看BigBlueButton API文档。要观看BigBlueButton HTML5客户端的视频,请参阅https://bigbluebutton.org/html5。
分配主机名
对于任何生产BigBlueButton服务器,您都需要为其分配一个主机名。
如果尚未这样做,则需要从域名服务(DNS)提供商处购买域名,然后使用提供商的Web界面配置一个,A record以指向服务器的IP地址(请参阅有关DNS提供商的文档,网址为如何执行此步骤)。
A record设置完成后,输入以下命令,并输入EXTERNAL_HOST_NAMEBigBlueButton服务器的主机名。
$ 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地址(或主机名)并响应API请求。但是,如果您尝试使用浏览器从服务器的默认页面登录,则会收到错误消息HTTP Status 404 - /demo/demo1.jsp。
为什么?BigBlueButton服务器已准备好列出API调用,但默认情况下未安装前端。您可以轻松安装API演示来测试服务器。下一步将介绍安装API演示。
但是,如果您打算对BigBlueButton服务器使用另一个前端,则不需要API演示,例如,如果您有Moodle服务器,并且想要配置BigBlueButton Moodle插件来访问BigBlueButton服务器。
在BigBlueButton服务器上配置SSL
您需要向BigBlueButton服务器添加SSL支持,以使其更加安全。另外,从Chrome 47开始,Chrome用户将无法通过WebRTC共享其麦克风,除非通过HTTPS加载了BigBlueButton。
配置BigBlueButton以使用域名
请以root身份运行本节中的所有命令。
为了获得服务器的有效SSL证书,您必须已经为BigBlueButton服务器分配了主机名。
出于文档目的,我们将使用域名“ example.com”,并将BigBlueButton服务器托管在“ bigbluebutton.example.com”。
拥有域名并为它配置DNS主机后,添加指向您服务器的A记录。然后,您可以使用bbb-conf setip命令将BigBlueButton配置为使用该域名,例如:
$ sudo bbb-conf --setip bigbluebutton.example.com
获取SSL证书
您必须具有有效的SSL证书,然后才能在BigBlueButton上配置nginx通过HTTPS服务器内容。当前建议的最低要求是带有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),您现在应该具有2个或更多文件,如下所示:
下一步是在服务器上安装文件。
创建目录/etc/nginx/ssl:
$ 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)提供支持。在Windows XP上不是IE6)。请注意,建议的SSL设置可能会随着发现新漏洞而更改。
配置FreeSWITCH以使用SSL
如果服务器上有防火墙并且已打开端口5066,请将规则更改为现在打开端口7443。
另外,如果BigBlueButton服务器在防火墙后面,则可能需要value使用外部IP地址指定,EXTERNAL_IP_ADDRESS:7443以避免在客户端出现错误1002。有关更多详细信息,请参阅在防火墙后面配置BigBlueButton。
接下来,nginx中的websocket转发地址。编辑文件/etc/bigbluebutton/nginx/sip.nginx并更改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
如果您需要还原此更改,则可以运行reverse命令:
$ 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并更改BigBlueButtonURLuse HTTPS 的值。
// 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/是一个受人尊敬的网站,可以执行一系列自动测试-只需输入服务器的主机名,如果您希望保留该主机名,可以选择选中“不显示结果”复选框私有,然后提交。
在撰写本文时,此页面上显示的配置在SSL Labs测试页面上应达到“ A”等级。
使用“让我们加密”
如果您已经为BigBlueButton服务器分配了域名(即bigbluebutton.example.com),并且该服务器位于Internet上,则可以使用Let's Encrypt获取免费的SSL证书。
首先,安装“让我们加密”配置工具。请在本节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工具从“加密”请求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
这两个指令将在certbot renew每个星期一的凌晨2:30 执行命令,然后在凌晨2:35重新加载Nginx(因此将使用更新的证书)。输出将通过管道传输到位于/var/log/le-renewal.log的日志文件中,因此您以后可以随时对其进行检查。
要完成SSL配置,请执行
故障排除
如果您在安装过程中遇到任何问题,请参阅故障排除。