BigBlueButton 2.2安装指南

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 
$ 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升级并自动为您执行。

安装

准备好安装吗?这里有一个快速预装清单:

  1. 您有一个满足最低规格的Ubuntu 16.04 64位服务器。
  2. 如果服务器在防火墙之后,您已经配置了防火墙,以便将适当的端口转发给BiqBlueButton服务器(并且已经通过一台外部计算机测试了连接通过防火墙到达您的BigBlueButton服务器)。
  3. 您有一个完全限定的域名(例如bigbluebutton.example.com )能解析到您的BigBlueButton服务器的IP地址(或您的防火墙的IP地址)。
  4. 您有一个有效的主机名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 设置attendeesJoinViaHTML5ClientmoderatorsJoinViaHTML5Clienttrue,如下:

# 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 grailsError: 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/并看到欢迎屏幕。
BigBlueButton 2.2安装指南_第1张图片

但是,除非安装了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

一旦安装完毕,你就可以在主页上输入你的名字,然后点击“加入”。
BigBlueButton 2.2安装指南_第2张图片

这将使您加入到默认会议“演示会议”。这是一个使用火狐的屏幕截图,打开共享笔记面板,在白板上绘图,并共享一个网络摄像头。
BigBlueButton 2.2安装指南_第3张图片
当您完成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 并将属性jnlpUrljnlpFile 更新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配置,请执行以下操作:

  • 配置FreeSWITCH到用户WebRTC
  • 配置BigBlueButton通过HTTPS加载会话
  • 测试您的HTTPS配置

故障排除

如果在安装过程中遇到任何问题,请参阅故障排除。

你可能感兴趣的:(BigBlueButton)