bigbluebutton-安装

时间:2024-02-25 15:01:03

欢迎来到BigBlueButton 1.1的安装指南

BigBlueButton是用于在线学习的开源网络会议系统。该项目的目标是使教师能够让远程学生参与高质量的在线学习体验。

BigBlueButton 1.1,我们的最新版本,提供更快的桌面共享,隐藏字幕和分组房间(详见BigBlueButton 1.1)。

本文档适用于希望安装和安装BigBlueButton 1.1的系统管理员和开发人员。具体来说,它涵盖了在Ubuntu 16.04 64位服务器上安装BigBlueButton,配置BigBlueButton使用主机名和SSL证书,如果BigBlueButton运行在防火墙后面,请配置防火墙将特定端口上的连接传递到BigBlueButton服务器。

对于开发人员,当在本地网络上运行的虚拟机(VM)或Linux容器(LXD)上安装BigBlueButton时,通常可以跳过配置主机名,SSL证书和防火墙。使用FireFox进行测试,因为此浏览器不需要SSL证书以用于WebRTC。

对于管理员,如果要在公共服务器上设置BigBlueButton供其他人使用,则需要使用有效的主机名和SSL证书(而不是自行生成的证书)配置BigBlueButton。此外,如果您在防火墙后面安装BigBlueButton,还需要将防火墙配置为通过特定连接到BigBlueButton服务器(详细信息在本文档中给出)。

我们建议在新的Ubuntu 16.04 64位服务器上安装BigBlueButton 1.1; 具体而言,还没有安装Web应用程序(如plesk)。这样的应用程序与安装和运行BigBlueButton有很大的冲突,很难解决。

如果要升级BigBlueButton 1.0(或更早版本)的服务器,建议您使用单独的干净的Ubuntu 16.04 64位服务器,在其上安装BigBlueButton 1.1,然后在现有的录像上传输

如果您在安装过程中遇到困难,请参阅http://bigbluebutton.org/support,了解如何将BigBlueButton社区联系到为BigBlueButton提供商业支持和托管的公司。

安装前

在输入之前sudo apt-get install BigBlueButton,请仔细阅读本节,确保您的服务器满足最低要求。

最低服务器要求

安装BigBlueButton 1.1的最低服务器要求是

  • Ubuntu 16.04 64位操作系统
  • 4 GB内存,启用交换(8 GB内存更好)
  • 四核2.6 GHZ CPU(或更快)
  • 可以访问TCP端口80,443和1935
  • 如果您打算配置SSL(推荐),可以访问TCP端口7443,否则可以访问端口5066
  • 可以访问UDP端口16384 - 32768
  • 80端口未被其他应用程序使用

其他建议是

  • 500G的可用磁盘空间(或更多)用于录制
  • 100 Mbits / sec带宽(对称)
  • 专用(裸机)硬件(未虚拟化)

为什么我们推荐一个裸机服务器?BigBlueButton使用FreeSWITCH处理传入音频数据包,FreeSWITCH在非虚拟化环境中工作效果最好(请参阅FreeSWITCH推荐的配置)。您仍然可以在虚拟服务器上运行BigBlueButton(如安装视频中显示的),但是您可以在专用硬件上获得最佳性能。

如果您是开发人员设置用于开发和测试的BigBlueButton服务器,那么您不需要500G免费进行此类录音(40G就足够了)。

如果要在Amazon EC2上安装BigBlueButton,请从Canonical的受支持AMI列表列表启动64位Xenial实例我们建议在c4.xlarge(或更高的CPU)实例上运行BigBlueButton。

用户的带宽怎么样?对于最终用户访问BigBlueButton服务器,我们建议(至少)1.0 Mbits / sec下载速度和0.5 Mbits / sec上传速度。如果主持人打算分享他的桌面,那么我们推荐(至少)1.0 Mbits / sec上传速度。

检查服务器规格

有Ubuntu 16.04 64位服务器设置?好的,我们来看一下快速的配置检查,以确保服务器准备好进行无错误的安装。做这些快速步骤将节省时间。

首先,检查服务器的区域设置en_US.UTF-8要检查区域设置,请输入以下命令并检查其输出匹配LANG="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和注销,然后重新登录一次。

接下来,检查您的服务器是否具有(至少)使用该命令的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

如果您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

我们(核心开发人员)在Ubuntu:16.04 64位(Xenial Xerus)上设计,开发,安装和测试了BigBlueButton 1.1。这就是我们建议您使用的。我们还没有在任何其他版本的Ubuntu(或Linux)上测试BigBlueButton 1.1。

为什么重点放在Ubuntu 16.04?这是质量超过数量的选择。很久以前,我们得出结论,该项目对于特定版本的Linux进行实际的,经过良好测试的文档安全性更好,它的工作真的非常好,而不是尝试和支持操作系统,并且没有一个可以正常工作。

拥有主机名和SSL证书

(如果您是开发人员仅在本地虚拟机上设置BigBlueButton,则可以跳过本节。)

我们建议您为BigBlueButton服务器分配一个完全限定的域名(FQDN)bigbluebutton.example.com,并将该服务器配置为安全套接字层(SSL)证书。这样做将使得能够使用BigBlueButton安装的Web服务器nginx通过安全的超文本传输​​协议(HTTPS)来提供内容。如果没有启用HTTPS,某些浏览器(如Chrome)将无法让用户分享其网络摄像头或麦克风。另外,没有启用HTTPS,一些浏览器会抱怨不安全的内容。

总之,在生产中使用的任何服务器上,都必须设置域名和有效的SSL证书。

要获得一个域名,有很多好的域名注册商,如GoDadday网络解决方案

要获得SSL证书,安装BigBlueButton后,获取SSL证书一节将提供更详细的信息

配置防火墙(如果需要)

(再次,如果您是开发人员在本地VM上设置BigBlueButton进行测试,则可能跳过本节)。

BigBlueButton服务器的最简单的网络配置是服务器具有单个外部IP地址,服务器位于公共Internet上(因此可由用户直接访问),并且在用户之间没有防火墙(虚拟或物理)服务器。以下是BigBlueButton服务器具有主机名(虚构)IP地址为203.0.113.1的这种设置的示例bigbluebutton.example.com

安装

在这个简单的网络配置中,BigBlueButton应该在安装后开箱即用。这是因为打包脚本使用第一个非环回IP地址自动配置BigBlueButton。

当服务器具有多个网络接口,但外部IP仍然是由安装脚本拾取的第一个网络接口(如eth0)时,会发生此设置的变体。

安装

再次,在这种情况下,包装脚本将正确配置BigBlueButton以使用外部IP地址,您可以跳过本节的剩余部分,然后继续安装BigBlueButton

如果您的服务器的IP地址发生更改,BigBlueButton配有一个配置实用工具bbb-conf,可以让BigBlueButton的所有配置文件更改为使用任何IP地址或主机名,不用担心

如果您的用户和BigBlueButton服务器之间存在防火墙,则需要首先配置防火墙以将外部客户端的特定连接转发到内部BigBlueButton服务器; 否则,用户将无法访问BigBlueButton。

下图给出了使用外部防火墙的典型设置(当然,您的设置将具有不同的IP地址和主机名)。

安装

在此示例中,所有用户必须通过统一资源定位符(URL)连接到BigBlueButton服务器https://bigbluebutton.example.com/该主机名解析为防火墙的IP地址203.0.113.1。防火墙必须将特定连接(如下所述)转发到运行在IP地址为10.0.2.12的BigBlueButton服务器。

配置防火墙

当BigBlueButton受防火墙后保护时,您需要配置防火墙以将以下传入连接转发到BigBlueButton:

  • TCP端口80,443,1935和7443
  • UDP端口范围为16384 - 32768

在Amazon EC2上安装BigBlueButton的情况下,您需要向服务器的关联安全组(作为防火墙)添加规则,以允许上述TCP和UDP连接。

进行更改后,在进行安装之前,请花一点时间测试已配置防火墙以正确转发上述连接。

测试防火墙

要测试BigBlueButton所需的各种端口上的连接,您将使用一个名为“ netcat侦听BigBlueButton服务器上特定端口上的连接” 的工具您将在防火墙外部的服务器上使用相同的工具来生成连接。如果连接丢失,则防火墙正在转发数据包。

要测试,首先netcat使用以下命令在BigBlueButton上安装

$ sudo apt-get install netcat

接下来,使用命令停止BigBlueButton sudo bbb-conf --stop我们现在可以运行netcat在端口上侦听并尝试从外部计算机连接。以root身份运行以下命令:

# netcat -l 7443

netcat 现在将向终端回显任何在端口7443上接收的文本(您可以稍后使用Ctrl-c退出命令)。

接下来,在防火墙外部的第二台计算机上,也就是说,它必须通过防火墙访问BigBlueButton服务器 - 也可以安装netcat替换EXTERNAL_HOST_NAME防火墙的主机名,运行以下命令

# netcat EXTERNAL_HOST_NAME 7443

并键入类型“test”,然后按ENTER键。

如果防火墙将端口7443上的传入连接转发到内部BigBlueButton服务器,则应在netcat -l 7443命令后面看到“test”一词,如

# netcat -l 7443
test

如果该字test未出现,请仔细检查防火墙配置,以确保其端口7443上的转发连接,然后再次测试。test在继续安装BigBlueButton之前,您希望看到该词出现。

端口80,443和1935重复这些测试。

这覆盖了TCP / IP端口。接下来,我们需要测试这个UDP连接的范围是16384-32768也被转发。在您的BigBlueButton服务器上,运行以下netcat命令通过端口17000上的UDP监听传入数据(这里,我们正在选择范围为16384-32768的端口)。

# netcat -u -l 17000

接下来,在防火墙外的计算机上,用防火墙EXTERNAL_HOST_NAME的主机名替换并运行命令

# netcat -u EXTERNAL_HOST_NAME 17000

在终端中键入\'test2\',然后按ENTER键。您应该看到“test2”一词出现在BigBlueButton服务器的终端上,如同

# netcat -u -l 17000
test2

如上所述,上述测试失败,请仔细检查防火墙的设置,以确保其正确地处理16384-32768范围内的UDP数据包,并再次测试。

当BigBlueButton在服务器上运行时,BigBlueButton的各种组件需要使用外部主机名连接到自身。在BigBlueButton服务器中运行的尝试连接到外部主机名的程序应该会达到BigBlueButton本身。

要使BigBlueButton服务器使用外部主机名连接到自身,请编辑文件/etc/hosts并添加该行

EXTERNAL_IP_ADDRESS EXTERNAL_HOST_NAME

其中,EXTERNAL_IP_ADDRESS与你的防火墙的外部IP,并EXTERNAL_HOST_NAME与您的防火墙的外部主机名。例如,使用上述图中的结构中,除了/etc/hosts

172.34.56.78 bigbluebutton.example.com

再次尝试上述测试,以确保他们在继续工作之前工作。

安装视频

为了帮助您快速入门,我们组织了一个安装视频,其中包括:

  • 在新安装的16.04 64位服务器上安装BigBlueButton 1.1,
  • 分配一个主机名,和
  • 使用我们加密的SSL证书配置服务器

要查看视频,请点击下面的图片。

BigBlueButton 1.1-安装视频

注意:如果您的BigBlueButton服务器将在防火墙后面运行,则还需要配置防火墙和BigBlueButton以启用和访问外部用户的其他步骤。

安装BigBlueButton 1.1

在开始安装之前,以下是一个快速清单,以确保您准备好了:

  1. 您有一个符合最低规格的Ubuntu 16.04 64位服务器
  2. 如果服务器位于防火墙后面,则已配置防火墙将适当的端口转发到BigBlueButton服务器(并测试了连接正在通过)。
  3. 您有一个完全合格的域名(如bigbluebutton.example.com),可以解析为您的BigBlueButton服务器的IP地址(或防火墙的IP地址)。
  4. 您拥有主机名的有效SSL证书。

如果您是开发人员在本地虚拟机上设置BigBlueButton进行开发或测试,则可以跳过(2),(3)和(4)。在这种情况下,使用FireFox进行测试,因为FireFox支持WebRTC,而不需要SSL连接。

好的,让我们开始安装!

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

不要担心,如果您的主机名与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大量的熵,安装一个打包的call haveged(一个简单的熵守护进程):

$ sudo apt-get install haveged

如果您对熵的细节好奇,请参阅此链接

接下来,将服务器升级到最新的软件包(和安全修复程序)。

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

如果您还没有更新,apt-get建议您在dist-upgrade完成后重新启动服务器在进行下一步之前,请重新启动。

2.为BigBlueButton存储库安装apt-get密钥

BigBlueButton的所有包都使用项目公钥进行数字签名。在安装BigBlueButton之前,您需要将项目的公钥添加到服务器中,以便apt-get验证签名的包。为此,请输入以下命令:

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

接下来,您的服务器需要知道从哪里下载BigBlueButton包。要配置软件包存储库,请输入以下命令:

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

最后,运行apt-get下拉链接到最新的BigBlueButton包。

$ sudo apt-get update

3.安装BigBlueButton

我们现在可以安装BigBlueButton了。

$ sudo apt-get install bigbluebutton

而已。一个命令。这个单一命令将安装所有 BigBlueButton的核心组件以及所有必要的依赖项。

安装

当提示您继续操作时,键入“Y”并按ENTER键。

注意:在安装过程中,您可能会看到该ttf-mscorefonts-installer软件包出现“无法下载额外的数据文件”错误这是Ubuntu 16.04 已知问题您可以忽略此错误。

如果安装在完成之前出现错误,请通过安装之前的检查来查看服务器是否存在配置错误。如果找到解决任何配置错误,您可以尝试使用该命令完成安装sudo apt-get install -f

安装完成后,使用以下命令以正确的顺序重新启动所有BigBlueButton服务:

$ sudo bbb-conf --restart

接下来,运行BigBlueButton配置实用程序bbb-conf --check此实用程序检查BigBlueButton的配置和日志文件,并查找运行时可能会导致问题的任何潜在错误。

您应该看到类似于以下输出(当然,与10.0.3.192不同的IP地址)。

$ bbb-conf --check

BigBlueButton Server 1.1.0-YY (NNN)
                    Kernel version: 4.4.0-47-generic
                      Distribution: Ubuntu 16.04.N LTS (64-bit)
                            Memory: NNNN MB

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

/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)
                    websocket port: 5066
                    WebRTC enabled: true

/etc/nginx/sites-available/bigbluebutton (nginx)
                       server name: 10.0.3.192
                              port: 80
                    bbb-client dir: /var/www/bigbluebutton

/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties (bbb-web)
                      bbb-web host: 10.0.3.192

/var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp (API demos)
                               url: 10.0.3.192

/var/www/bigbluebutton/check/conf/config.xml (client check)
                      client check: 10.0.3.192

/usr/share/red5/webapps/bigbluebutton/WEB-INF/red5-web.xml (red5)
                  voice conference: FreeSWITCH

/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)
                     playback host: 10.0.3.192


** Potential problems described below **

任何随后的输出Potential problems 可能表示配置错误或安装错误。在许多情况下,消息将提供有关如何解决问题的建议。

此时,您的BigBlueButton服务器正在侦听IP地址。如果您的开发人员设置了一个用于测试/开发的虚拟机,并且只想使用没有主机名的IP地址,请跳到API演示部分

分配主机名

对于任何生产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

为什么?此页面需要安装API演示。我们将在下一步中介绍如何安装API演示。

但是,如果您打算使用BigBlueButton服务器的另一个前端,则可能不需要演示例如,如果您有一个Moodle服务器,并且您想要配置BigBlueButton Moodle插件以访问BigBlueButton服务器,则不需要安装API演示。

要使用BigBlueButton配置Moodle(和其他)集成,请使用bbb-conf --secret工具获取您的BigBlueButton服务器的URL和共享密码。

$ bbb-conf --secret

       URL: http://bigbluebutton.example.com/bigbluebutton/
    Secret: a7007506f1efffa497922fc34e3184dc

4.安装API演示(可选)

如果要通过着陆页登录到BigBlueButton服务器,请使用该命令安装API演示

$ sudo apt-get install bbb-demo

安装完成后,您可以在主页上输入您的姓名,然后点击“加入”。这将与您一起参加默认会议“Demo Meeting”。您还可以通过单击API examples主页上链接查看其他示例这些API是在http://demo.bigbluebutton.org上安装的

如果要使用自定义前端设置生产服务器,则可能需要临时安装仅用于测试的API演示。

稍后,要删除API演示,请输入命令:

$ sudo apt-get purge bbb-demo

要了解有关将BigBlueButton与应用程序集成在一起的更多信息,请查看BigBlueButton API文档

5.安装客户端自检(可选)

BigBlueButton提供最终用户自检应用程序,可帮助您诊断可能阻止最终用户访问服务器的网络和配置问题。

要安装最终用户自检应用程序,请输入命令

$ sudo apt-get install bbb-check

自检应用程序可在您的BigBlueButton服务器的IP地址(或主机名)/check附带。例如,您可以在BigBlueButton演示服务器上查看自检程序,网址http://demo.bigbluebutton.org/check

以后,如果要删除最终用户自检页面,请输入命令

$ sudo apt-get purge bbb-check

6.重新启动服务器

您可以随时使用命令重新启动并检查您的BigBlueButton服务器

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

bbb-conf --check扫描一些错误消息的日志文件。如果您在服务器上进行了许多配置更改,则可以清除所有日志文件,并使用该--clean选项检查服务器,如

$ sudo bbb-conf --clean
$ sudo bbb-conf --check

这是sudo bbb-conf --check在demo.bigbluebutton.org上运行的示例输出此服务器也具有SSL证书。

$ bbb-conf --check

BigBlueButton Server 1.1.0-YY (NNN)
                    Kernel version: 4.4.0-28-generic
                      Distribution: Ubuntu 16.04.1 LTS (64-bit)
                            Memory: 7982 MB

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

/opt/freeswitch/etc/freeswitch/sip_profiles/external.xml (FreeSWITCH)
                    websocket port: 7443
                    WebRTC enabled: true

/etc/nginx/sites-available/bigbluebutton (nginx)
                       server name: demo.bigbluebutton.org
                              port: 80, [::]:80
                              port: 443 ssl
                    bbb-client dir: /var/www/bigbluebutton

/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties (bbb-web)
                      bbb-web host: demo.bigbluebutton.org

/var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp (API demos)
                               url: demo.bigbluebutton.org

/usr/share/red5/webapps/bigbluebutton/WEB-INF/red5-web.xml (red5)
                  voice conference: FreeSWITCH

/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml (record and playback)
                     playback host: demo.bigbluebutton.org



** Potential problems described below **
# Warning: The API demos are installed and accessible from:
#
#    https://demo.bigbluebutton.org/demo/demo1.jsp
#
# These API demos allow anyone to access your server without authentication
# to create/manage meetings and recordings. They are for testing purposes only.
# If you are running a production system, remove them by running:
#
#    sudo apt-get purge bbb-demo

请注意,sudo bbb-conf --check警告您安装了API演示文稿,这样可以让访问服务器的任何人启动会话。

如果看到其他警告消息,请查看故障排除安装

安装BigBlueButton并应用主机名,接下来的步骤是:

在BigBlueButton服务器上配置SSL

您将需要向BigBlueButton服务器添加SSL支持,使其更加安全。另外,从Chrome 47开始,Chrome用户将无法通过WebRTC分享他们的麦克风,除非BigBlueButton是通过HTTPS加载的。

配置BigBlueButton以使用域名

请以root身份运行本节中的所有命令

为了为您的服务器获取有效的SSL证书,您必须已经为BigBlueButton服务器分配了一个主机名

为了文档的目的,我们将使用域名为“example.com”的BigBlueButton服务器托管在“bigbluebutton.example.com”。

一旦你有一个域名,并配置了一个DNS主机,添加一个指向您的服务器的A记录。然后,您可以使用bbb-conf setip命令配置BigBlueButton来使用该域名,例如:

# bbb-conf --setip bigbluebutton.example.com

获取SSL证书

在BigBlueButton上通过HTTPS将nginx配置为服务器内容之前,需要具有有效的SSL证书。具有2048位RSA密钥和SHA-256校验和的域验证(有时称为“1类”)证书是目前推荐的最小值,它应该是足够的。

有许多提供者可以从中获取证书。许多域名销售公司也提供证书。

一些知名的大型SSL证书提供商包括Comodo,Symantec,GoDaddy,GlobalSign和DigiCert。此外,StartSSL和CACert还提供免费的SSL证书,并附有一些注意事项:StartSSL证书不能在不支付服务费用的情况下被撤销,大多数人没有在其Web浏览器中安装CACert的根。

每个提供者将为您提供生成证书的一系列步骤,但通常包括在本地生成私钥和证书请求,发送要签名的证书请求,然后在执行任何必需的验证后接收签名的证书脚步。

要在BigBlueButton中安装证书,您需要具有PEM格式的证书,私钥和任何中间证书的文件。

如果您还没有SSL证书,并且您的服务器位于Internet上,则可以使用“我们的加密”获取免费的可再生SSL证书(90天后到期,但可以自动续订)。如果要使用“加密”,请使用“加密”进行设置

配置nginx使用HTTPS

根据您的证书颁发机构(CA),您现在应具有2个或更多文件,如下所示:

  • 证书
  • 私钥
  • 中级证书(可能有一个以上,或可能没有)

下一步是在服务器上安装文件。

创建目录/etc/nginx/ssl

# 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

此外,我们将生成一组2048位的diffie-hellman参数,以提高某些类型的密码的安全性。此步骤可能需要几分钟才能完成,特别是在虚拟机上运行时。

# openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048

现在我们可以编辑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-2048.pem;
  

请注意,上面使用的SSL设置是基于https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/中提出的SSL设置,并为所有现代浏览器(包括IE8,但是不是IE6,在Windows XP上)。请注意,由于发现新的漏洞,推荐的SSL设置可能会发生更改。

配置FreeSWITCH以使用SSL

编辑文件/opt/freeswitch/conf/sip_profiles/external.xml并查找包含“ws-binding”的行。更改行,使其匹配以下(注意更改ws-bindingwss-binding和端口5066为7443)。

    <param name="tls-version" value="$${sip_tls_version}"/>
    <param name="wss-binding" value=":7443"/>

如果您的服务器上有防火墙并打开端口5066,请将规则更改为现在打开端口7443。

接下来,在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启动音频连接。

编辑/var/lib/tomcat7/webapps/bigbluebutton/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并更新属性jnlpUrljnlpFileHTTPS:

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

您还必须更新该文件/var/www/bigbluebutton/client/conf/config.xml,告诉BigBlueButton客户端通过HTTPS加载组件。您可以使用单个命令进行更新

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

如果您需要恢复此更改,则可以运行反向命令:

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

接下来,修改录制的创建,以便通过HTTPS提供。编辑/usr/local/bigbluebutton/core/scripts/bigbluebutton.yml并更改playback_protocol的值,如下所示:

playback_protocol: https

如果您已在第4步中安装了API演示,请编辑/var/lib/tomcat7/webapps/demo/bbb_api_conf.jsp并更改BigBlueButtonURL使用HTTPS 的值

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

最后,要应用所做的所有配置更改,必须重新启动BigBlueButton的所有组件:

# bbb-conf --restart

测试您的HTTPS配置

为了确保您没有发生任何可能导致安全漏洞的错误,请测试您的HTTPS配置。可以进行一系列自动测试的受人尊敬的网站是https://www.ssllabs.com/ssltest/ - 只需输入您的服务器的主机名,可以选择选中“不显示结果”复选框,如果您想保留它私人,然后提交。

在撰写本文时,此页面上显示的配置应在SSL实验室测试页面中达到“A”排名。

使用我们加密

如果您有一个域名分配给您的BigBlueButton服务器(即bigbluebutton.example.com),服务器在Internet上,那么可以使用我们的加密来获取一个免费的SSL证书。

首先,安装我们加密配置工具。请运行本节的所有命令根目录

# apt-get install letsencrypt

接下来,生成一组2048位的diffie-hellman参数,以提高某些类型的密码的安全性。

# mkdir /etc/nginx/ssl
# openssl dhparam -out /etc/nginx/ssl/dhp-2048.pem 2048

在您可以在服务器上生成证书之前,您需要配置BigBlueButton以使用预期的主机名。如果还没有这样做,请使用以下命令(bigbluebutton.example.com用您自己的DNS名称替换),使用主机名配置BigBlueButton服务器。

# bbb-conf --setip bigbluebutton.example.com

接下来,使用该letsencrypt工具从Let\'s Encrypt请求SSL证书再次,替换bigbluebutton.example.com为您的主机名。

# letsencrypt --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-2048.pem;
  

让我们加密证书有效期为90天,可以自动更新。要自动要求每周更新一次,请编辑root的crontab文件。

# crontab -e

并在底部添加以下两行:

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

这两个指令将在星期一凌晨2:30执行letsencrypt-auto更新命令,然后在上午2:35重新加载Nginx(因此将使用更新的证书)。输出将被管道传输到位于/var/log/le-renewal.log的日志文件,所以您可以随时检查。

要完成SSL配置,请继续执行配置FreeSWITCH到用户WebRTC的步骤

在防火墙后面配置BigBlueButton

更新FreeSWITCH配置

如介绍中所述,常见的设置是将BigBlueButton服务器置于防火墙后面(虚拟或物理)。在此配置中,网络设置类似于以下图表(当然,您的IP地址将不同)。

安装

要使WebRTC音频工作,您需要更改FreeSWITCH的配置,以监听防火墙外部IP地址上的连接。如果您尚未修改防火墙以将端口转发到BigBlueButton服务器,请参阅配置防火墙

通过将防火墙配置为将传入连接转发到BigBlueButton服务器,下一步是将FreeSWITCH配置为绑定到防火墙的外部IP地址。

编辑以下文件,并将EXTERNAL_IP_ADDRESS替换为外部IP地址(而不是外部主机名)。

编辑/opt/freeswitch/conf/vars.xml和更改

<X-PRE-PROCESS cmd="set" data="external_rtp_ip=stun:stun.freeswitch.org"/>

<X-PRE-PROCESS cmd="set" data="external_rtp_ip=EXTERNAL_IP_ADDRESS"/>

更改

<X-PRE-PROCESS cmd="set" data="external_sip_ip=stun:stun.freeswitch.org"/>

<X-PRE-PROCESS cmd="set" data="external_sip_ip=EXTERNAL_IP_ADDRESS"/>

接下来,编辑/opt/freeswitch/conf/sip_profiles/external.xml和更改

    <param name="ext-rtp-ip" value="$${local_ip_v4}"/>
    <param name="ext-sip-ip" value="$${local_ip_v4}"/>

    <param name="ext-rtp-ip" value="$${external_rtp_ip}"/>
    <param name="ext-sip-ip" value="$${external_sip_ip}"/>

接下来,编辑/usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties,并确保的值bbb.sip.app.ip,并freeswitch.ip有内部IP地址。

bbb.sip.app.ip=<internal_ip>
bbb.sip.app.port=5070

freeswitch.ip=<internal_ip>
freeswitch.port=5060

编辑/etc/bigbluebutton/nginx/sip.nginx以连接到外部IP地址。

如果您已配置SSL,请使用端口7443:

location /ws {
        proxy_pass https://EXTERNAL_IP_ADDRESS: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;
}

如果您不使用SSL,请使用端口5066:

location /ws {
        proxy_pass http://EXTERNAL_IP_ADDRESS:5066;
        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

# bbb-conf --restart

要测试,启动FireFox并尝试连接到您的BigBlueButton服务器并加入音频。如果您在右下角看到“[WebRTC Audio]”这个词,那就行了。

如果它不起作用,当您尝试连接音频时,有两个可能的错误消息。

检测到以下WebRTC问题:错误1002:无法进行WebSocket连接。你想尝试Flash吗?

Error检测到以下WebRTC问题可能的原因
1002:无法建立WebSocket连接 注1
1007:ICE谈判失败 笔记2

对于错误1002,用于检查IP地址proxy_pass/etc/bigbluebutton/nginx/sip.nginx指向防火墙的外部IP地址。接下来,检查FreeSWITCH是否已经启动而没有错误

# systemctl status freeswitch
● freeswitch.service - freeswitch
   Loaded: loaded (/lib/systemd/system/freeswitch.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-03 23:13:07 UTC; 48min ago
  Process: 19349 ExecStart=/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -ncwait $DAEMON_OPTS (code=exited, status=0/SUCCESS)
 Main PID: 19361 (freeswitch)
    Tasks: 36
   Memory: 41.4M
      CPU: 20.744s
   CGroup: /system.slice/freeswitch.service
           └─19361 /opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -ncwait -nonat

Mar 03 23:13:05 t4 systemd[1]: Starting freeswitch...
Mar 03 23:13:05 t4 freeswitch[19349]: 19361 Backgrounding.
Mar 03 23:13:07 t4 freeswitch[19349]: FreeSWITCH[19349] Waiting for background process pid:19361 to be ready.....
Mar 03 23:13:07 t4 freeswitch[19349]: FreeSWITCH[19349] System Ready pid:19361
Mar 03 23:13:07 t4 systemd[1]: Started freeswitch.

您应该看到active (running)如果FreeSWITCH没有运行,您可以检查它的输出日志,了解为什么它没有运行journalctl -u freeswitch.service如果您继续看到错误1002,请在配置虚拟NIC下检查下面的诊断停止

对于错误1007,这意味着Web套接字连接成功(FreeSWITCH正在运行并从浏览器接收到建立媒体路径的请求),但FreeSWITCH返回的所有IP /端口组合都不允许浏览器连接并开始发送媒体。要诊断此错误,请about:webrtc在FireFox中打开,然后单击最近连接的“显示详细信息”。在“Remote Candidate”列下查看是否看到BigBlueButton服务器的内部IP地址。如果是这样,您可能在FreeSWITCH设置中配置错误。重新检查上述示例。

如果显示正确的IP地址,您可能会遇到一个问题,即您的防火墙不允许在所需端口上双向通过UDP数据包。检查您的防火墙文档以获取帮助,或者询问BigBlueButton社区邮件列表。

配置虚拟NIC(如果需要)

如果您尝试连接到WebRTC音频时遇到错误1002,可能是您的防火墙不支持“发卡NAT”,这意味着当BigBlueButton服务器连接到防火墙的IP地址时,防火墙不会将连接发回。

您可以使用BigBlueButton服务器上的以下命令来测试发卡NAT是否正在工作。替换EXTERNAL_IP_ADDRESS为防火墙的外部IP地址。

# curl --trace-ascii - -k https://EXTERNAL_IP_ADDRESS:443/bigbluebutton/api

以下是成功测试的示例输出。

~# curl --trace-ascii - -k https://203.0.113.1:443/bigbluebutton/api
== Info:   Trying 203.0.113.1...
== Info: Connected to 203.0.113.1 (203.0.113.1) port 443 (#0)
== Info: found 173 certificates in /etc/ssl/certs/ca-certificates.crt
== Info: found 692 certificates in /etc/ssl/certs
== Info: ALPN, offering http/1.1
== Info: SSL connection using TLS1.2 / ECDHE_RSA_AES_128_GCM_SHA256
== Info:         server certificate verification SKIPPED
== Info:         server certificate status verification SKIPPED
== Info:         common name: HOSTNAME (does not match \'203.0.113.1\')
== Info:         server certificate expiration date OK
== Info:         server certificate activation date OK
== Info:         certificate public key: RSA
== Info:         certificate version: #3
== Info:         subject: CN=bbb02.monasticeducation.net
== Info:         start date: Fri, 24 Feb 2017 06:20:00 GMT
== Info:         expire date: Thu, 25 May 2017 06:20:00 GMT
== Info:         issuer: C=US,O=Let\'s Encrypt,CN=Let\'s Encrypt Authority X3
== Info:         compression: NULL
== Info: ALPN, server accepted to use http/1.1
=> Send header, 93 bytes (0x5d)
0000: GET /bigbluebutton/api HTTP/1.1
0021: Host: 203.0.113.1
0035: User-Agent: curl/7.47.0
004e: Accept: */*
005b:
<= Recv header, 17 bytes (0x11)
...
<response><returncode>SUCCESS</returncode><version>1.0</version></response>== Info: Connection #0 to host 203.0.113.1 left intact

你应该看到<response>...</response>最后。

如果没有看到,请在BigBlueButton服务器上按照以下步骤设置与防火墙具有相同IP地址的虚拟NIC。这是一个如何工作的示例图。

安装

在此图中,我们为203.0.113.1设置了一个虚拟NIC,这将允许FreeSWITCH连接回自己。这样,当FreeSWICH从BigBlueButton的其他部分收到内部连接时,它会认为它在外部接口上。这将导致它在响应中使用正确的IP地址。

要设置虚拟NIC,您的BigBlueButton将输入以下命令并替换EXTERNAL_IP_ADDRESS为防火墙的外部IP地址。

sudo ip addr add EXTERNAL\_IP\_ADDRESS/32 dev lo

接下来,检查使用该命令创建虚拟NIC ip addr

# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet EXTERNAL_IP_ADDRESS/32 scope global lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

您应该看到上面列出的防火墙的EXTERNAL_IP_ADDRESS。

接下来,编辑/opt/freeswitch/conf/sip_profiles/external.xml并确保wss-binding使用外部IP地址的值

<param name="wss-binding"  value="EXTERNAL_IP_ADDRESS:7443"/>

此时,重新启动BigBlueButton服务器bbb-conf --restart,然后尝试再次连接到WebRTC介质。

最后,为了确保在重新启动时自动创建此虚拟NIC,请编辑/etc/network/interfaces并添加以下内容

# The loopback network interface
auto lo
iface lo inet loopback
        post-up ip addr add EXTERNAL_IP_ADDRESS/32 dev lo
        pre-down ip addr del EXTERNAL_IP_ADDRESS/32 dev lo

升级BigBlueButton 1.1

BigBlueButton项目非常活跃,并遵循每个版本开发过程

当升级可用于BigBlueButton(通常发布到bigbluebutton-dev)时,您可以使用以下命令更新服务器(用IP_or_hostnameBigBlueButton服务器的外部主机名替换):

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

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

使用sudo bbb-conf --setip将确保使用服务器主机名更新所有配置文件(如果您不使用服务器的主机名,则会更新IP地址)。

定制

有许多后置设置配置选项可根据您的需要自定义您的BigBlueButton服务器。

修改默认目标网页

默认的HTML着陆页位于

/var/www/bigbluebutton-default/index.html

更改此页面以创建自己的着陆页。

使用GreenLight前端

BigBlueButton带有GreenLight,一个简单的前端应用程序,让用户快速轻松地创建会议,邀请他人,加入会议和管理录音。

绿灯启动

有关更多信息,请参阅安装GreenLight

当只有一个人在一个会话中时启用背景音乐

FreeSWITCH可让您在语音会议中只有一个用户进行音乐播放。要启用背景音乐,请编辑/opt/freeswitch/conf/autoload_configs/conference.conf.xml(以root用户身份)。

并且在204行左右,您将看到保留的音乐(moh-sound)被注释掉

<!--
      <param name="moh-sound" value="$${hold_music}"/>
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->

并将其更改为

      <param name="moh-sound" value="$${hold_music}"/>
<!--
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->

然后重新启动BigBlueButton

# bbb-conf --restart

并加入音频会话。如果会话中只有一个用户,现在应该听到保持的音乐。您也可以以这种方式启用输入/输出声音。

向会议桥添加电话号码

BigBlueButton内置的基于WebRTC的音频是非常高质量的音频。尽管如此,您可能希望用户使用电话号码拨入会议桥。

在配置FreeSWITCH以将呼叫路由到正确的会议之前,您需要先从Internet电话服务提供商处获得一个电话号码,并配置FreeSWITCH,以便通过该提供商的会话初始化协议(SIP)接收来电。

要将来电呼叫到正确的BigBlueButton音频会议,您需要创建一个dialplanFreeSWITCH,它是一组在接收来电时运行的指令。当用户拨打电话号码时,拨号计划将提示用户输入与会议相关的五位数字。

要创建拨号计划,请使用下面的XML并将其保存/opt/freeswitch/conf/dialplan/public/my_provider.xml更换EXTERNALDID您的互联网电话服务提供商给您的电话号码电话号码(如6135551234)。

<extension name="from_my_provider">
 <condition field="destination_number" expression="^EXTERNALDID">
   <action application="answer"/>
   <action application="sleep" data="500"/>
   <action application="play_and_get_digits" data="5 5 3 7000 # conference/conf-pin.wav ivr/ivr-that_was_an_invalid_entry.wav pin \d+"/>
   <action application="transfer" data="SEND_TO_CONFERENCE XML public"/>
 </condition>
</extension>
<extension name="check_if_conference_active">
 <condition field="${conference ${pin} list}" expression="/sofia/g" />
 <condition field="destination_number" expression="^SEND_TO_CONFERENCE$">
   <action application="set" data="bbb_authorized=true"/>
   <action application="transfer" data="${pin} XML default"/>
 </condition>
</extension>

将此文件的所有权更改为 freeswitch:daemon

# chown freeswitch:daemon /opt/freeswitch/conf/dialplan/public/my_provider.xml

然后重新启动FreeSWITCH:

# systemctl restart freeswitch

尝试拨打电话号码。它应该连接到FreeSWITCH,您应该听到一个提示您输入会议的五位数PIN码的语音。

要向用户显示电话号码以及BigBlueButton中的5位数PIN码,请编辑/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties并更改613-555-1234至Internet电话服务提供商提供的电话号码

#----------------------------------------------------
# Default dial access number
defaultDialAccessNumber=613-555-1234

defaultWelcomeMessageFooter改为

defaultWelcomeMessageFooter=<br><br>To join this meeting by phone, dial:<br>  %%DIALNUM%%<br>Then enter %%CONFNUM%% as the conference PIN number.

bigbluebutton.properties再次保存并重新启动BigBlueButton。加入会话的每个用户将在聊天中看到类似的消息。

To join this meeting by phone, dial:
   613-555-1234
and enter 12345 as the conference PIN number.

改变共享的秘密

要验证传入的API调用,所有进行API调用的外部应用程序都必须使用与BigBlueButton服务器中配置的相同的密码对其API调用进行校验。

你会发现共享的秘密 /var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties

beans.dynamicConferenceService.securitySalt=<value_of_salt>

要更改共享密码,请执行以下操作:

  1. 从UUID生成器(如http://www.somacon.com/p113.php)生成新的通用唯一标识(UUID)这将给出一长串的随机数字,这将不可能进行逆向工程。
  2. 运行命令sudo bbb-conf --setsecret new_secret

注意:如果您创建了自己的前端或正在使用第三方插件连接到BigBlueButton,它的共享秘密; 否则,如果共享的秘密不匹配,传入的API调用的校验和将不匹配,并且BigBlueButton服务器将拒绝具有错误的API调用。

增加上传的演示文稿的文件大小

上传演示文稿的默认最大文件上传大小为30 MB。

要增加此大小, and edit 请将/var/www/bigbluebutton/client/conf/config.xml maxFileSize` 编辑为新值(注意:如果有开发环境需要编辑〜/ dev / bigbluebutton / bigbluebutton-client / src /conf/config.xml,然后重建客户端)。

接下来,更改nginx中的相应限制。编辑/etc/bigbluebutton/nginx/web.nginx并修改该值client_max_body_size

       location /bigbluebutton {
           proxy_pass         http://127.0.0.1:8080;
           proxy_redirect     default;
           proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;

        # Allow 30M uploaded presentation document.
           client_max_body_size       30m;

重新启动BigBlueButton sudo bbb-conf --restart您现在应该可以在新的限制内上传更大的演示文稿。

当没有人在说话时,关闭“舒适噪音”噪音

FreeSWITCH应用一个“舒适的噪音”“这是一个轻微的背景嘘声,让用户知道他们仍然在一个语音会议,即使没有人在说话(否则,他们可能会忘记他们连接到会议桥,并发出意想不到的意见其他)。

如果要清除舒适噪音,请编辑/opt/freeswitch/conf/autoload_configs/conference.conf.xml并更改

<param name="comfort-noise" value="true"/>

<param name="comfort-noise" value="false"/>

然后重新启动BigBlueButton

#  bbb-conf --restart

转移现有的已发布录音

如果你想做最小的工作量,以便在旧的BigBlueButton服务器上快速制作现有的录音,则传输/var/bigbluebutton/published/var/bigbluebutton/unpublished目录的内容另外,为了保留原始原始媒体的备份,您应该转移/var/bigbluebutton/recording/raw目录的内容

这是一个完成此操作的rsync命令的示例集; 在新服务器上运行这些文件以从旧服务器复制文件。

$ rsync -rP root@old-bbb-server:/var/bigbluebutton/published/ /var/bigbluebutton/published/
$ rsync -rP root@old-bbb-server:/var/bigbluebutton/unpublished/ /var/bigbluebutton/unpublished/
$ rsync -rP root@old-bbb-server:/var/bigbluebutton/recording/raw/ /var/bigbluebutton/recording/raw/

也可以使用传送这些文件的其他方法; 例如,您可以创建每个目录的tar存档,并通过scp进行传输,或使用共享的NFS挂载。

然后,您需要修复新复制的录音的权限:

chown -R tomcat7:tomcat7 /var/bigbluebutton/published /var/bigbluebutton/unpublished /var/bigbluebutton/recording/raw

如果从具有不同主机名的服务器复制录音,则必须运行以下命令来修复存储的主机名。(如果您不这样做,则会返回404错误,或尝试从旧服务器而不是新服务器加载录音!)

请注意,此命令将重新启动BigBlueButton服务器,中断任何实时会话。

$ bbb-conf --setip <ip_address_or_hostname>

例如,

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

传输的录音应通过BigBlueButton录音API立即显示。

重新处理原始录音

这是复制录音的推荐方式,因为录音将使用较新版本的录音软件进行重建,从而实现了旧版本可能存在的新功能和修复错误。缺点是这可能需要很长时间,并且在等待录音处理时,会在新的BigBlueButton服务器上使用大量的CPU。

如果您的旧服务器具有目录中的所有原始录制文件/var/bigbluebutton/recording/raw,则可以将这些文件传输到新服务器,例如使用rsync:

此示例可以在新服务器上运行rsync命令,并将从旧服务器复制录制文件。

$ rsync -rP root@old-bbb-server:/var/bigbluebutton/recording/raw/ /var/bigbluebutton/recording/raw/

还有其他方法可以传输这些文件; 例如,您可以创建/var/bigbluebutton/recording/raw目录的tar存档,并使用scp进行复制,或者使用共享的NFS挂载。任何方法都可以正常工作。

然后,您需要修复新复制的录音的权限:

$ chown -R tomcat7:tomcat7 /var/bigbluebutton/recording/raw

并启动录音重新处理

$ bbb-record --rebuildall

BigBlueButton服务器将自动进行录像并重建并发布。您可以使用该bbb-record --watch命令查看进度。

安装事件回调(webhooks)

当BigBlueButton发生事件时,希望收到您的应用程序的回调?BigBlueButton提供了一个可选的Web钩子包,它安装一个node.js应用程序监听BigBlueButton上的所有事件,并将具有关于这些事件的详细信息的POST请求发送到通过API注册的钩子。挂钩可以是可以接收HTTP POST请求的任何外部URL。

要安装bbb-webhooks

# apt-get install bbb-webhooks

有关配置bbb-webhooks的信息,请参阅bbb-webhooks

更改默认演示文稿

当新的会议开始时,BigBlueButton显示默认演示文稿。默认演示文稿位于/var/www/bigbluebutton-default/default.pdf您可以用演示文稿替换此文件的内容。每当创建会议时,BigBlueButton将自动加载,转换和显示所有用户的演示文稿。

或者,您可以通过编辑/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties和更改URL的URL 来更改全局默认值beans.presentationService.defaultUploadedPresentation

# Default Uploaded presentation file
beans.presentationService.defaultUploadedPresentation=${bigbluebutton.web.serverURL}/default.pdf

更改后,您需要重新启动BigBlueButton sudo bbb-conf --restart

如果要指定给定会议的默认演示文稿,您还可以将URL传递给演示文稿,作为创建会议API调用的一部分。

更改默认欢迎消息

默认欢迎消息由三个参数构成:两个系统范围的参数(见下文)和welcomeBigBlueButton createAPI调用中参数

你会发现这两个系统广受欢迎参数defaultWelcomeMessagedefaultWelcomeMessageFooter/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties

defaultWelcomeMessage=<default welcome message>
defaultWelcomeMessageFooter=<default welcome message footer>

当前端创建一个BigBlueButton会话时,它也可以传递create API调用welcome中的一个参数

向用户显示的最终欢迎消息(在聊天窗口中为蓝色文本)是welcomedefaultWelcomeMessage的组合defaultWelcomeMessageFooter

在会议期间,欢迎消息是固定的。如果要查看更改welcome参数的效果,则必须结束当前会议,或者等到BigBlueButton服务器将其从内存中删除(最后一个人离开后约两分钟)。如果更改参数bigbluebutton.properties,则必须重新启动BigBlueButton sudo bbb-conf --restart才能使新值生效。

更改默认语言环境

默认情况下,BigBlueButton客户端应检测浏览器的区域设置,并相应地使用该默认语言。默认语言为英语,但您可以通过编辑bigbluebutton/client/BigBlueButton.html和更改值来更改

localeChain = "en_US";

您可以在目录中看到BigBlueButton安装的语言列表/var/www/bigbluebutton/client/locale/

更改共享网络摄像机的视频质量

网络摄像头的图像质量设置在videoconf模块中

在大多数情况下,您可以保留默认设置。但是,您可以指定Flash播放器使用最大带宽(camQualityBandwidth="0")来显示百分之九十的质量(camQualityPicture="90"的图片

camQualityPicture="70"

为了降低图片的质量(并提高帧速率),降低camQualityPicture的值。相应地,为了提高图片的质量(并降低帧率),增加camQualityPicture的价值。

然而,由于camQualityPicture已经有百分之九十,您会发现图像质量稍微增加并不是很明显,但是降低了帧速率。

您可以通过客户端的config.xml文件来更改视频质量,默认位于/ var / www / bigbluebutton / client / conf中。向下滚动到名为VideoconfModule的条目。videoQuality属性的值可以在0到100之间。0表示对带宽给予优先权,如果带宽较低,则质量将受到影响。100的质量意味着根本不会执行视频压缩,您将以带宽为代价获得最大的质量。如果带宽较低,帧速率将受到影响。

欲了解更多信息,请参阅客户端配置

更改URL的/client/BigBlueButton.html部分

使用nginx,您可以重写传入URL以便/client/BigBlueButton.html显示为不同的链接,例如/conference/

首先,修改/etc/bigbluebutton/nginx/client.nginx并注释掉以下部分:

        # BigBlueButton.html is here so we can expire it every 1 minute to
        # prevent caching.
        #location /client/BigBlueButton.html {
        #        root    /var/www/bigbluebutton;
        #        index  index.html index.htm;
        #        expires 1m;
        #}

接下来,创建/etc/bigbluebutton/nginx/rewrite.nginx具有以下内容的文件

location /client/BigBlueButton.html {
        rewrite ^ /conference permanent;
}

location /conference {
        alias  /var/www/bigbluebutton/client;
        index BigBlueButton.html;
        expires 1m;
}

最后,使用以下命令重新启动nginx:

   sudo systemctl restart nginx

现在登录到演示页面,您将看到现在显示的URL /conference/代替/client/BigBlueButton.html

始终记录每次会议

默认情况下,BigBlueButton服务器将在(1)record=true在创建API调用中创建会议和(2)主持人在会议期间单击开始/停止记录按钮(至少一次)时,将会生成录制

但是,您可以配置BigBlueButton服务器来记录每个会议,编辑/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties和更改

# Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting
# is recorded.
autoStartRecording=false

# Allow the user to start/stop recording.
allowStartStopRecording=true

# Start recording when first user joins the meeting.
# For backward compatibility with 0.81 where whole meeting
# is recorded.
autoStartRecording=true

# Allow the user to start/stop recording.
allowStartStopRecording=false

要应用更改,请使用该命令重新启动BigBlueButton服务器

sudo bbb-conf --restart

增加上传的200页限制

BigBlueButton默认将上传限制为200页。要增加此值,请打开/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties并更改maxNumPages值:

#----------------------------------------------------
# Maximum number of pages allowed for an uploaded presentation (default 200).
maxNumPages=200

保存更改后bigbluebutton.properties,重新启动BigBlueButton服务器

sudo bbb-conf --restart

限制网络摄像头共享给演示者

您可以配置所有会议限制仅将网络摄像机的共享仅限于当前的演示者。为此,请在videomodule的参数中打开config.xml,更改以下内容:

presenterShareOnly="false"

presenterShareOnly="true"

关闭“你现在静音”

您可以通过编辑/opt/freeswitch/etc/freeswitch/autoload_configs/conference.conf.xml和移动包含muted-soundunmuted-sound注释的部分的行来删除所有用户的声音

    <profile name="cdquality">
      <param name="domain" value="$${domain}"/>
      <param name="rate" value="48000"/>
      <param name="interval" value="20"/>
      <param name="energy-level" value="100"/>
      <!-- <param name="sound-prefix" value="$${sounds_dir}/en/us/callie"/> -->
      <param name="muted-sound" value="conference/conf-muted.wav"/>
      <param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
      <param name="alone-sound" value="conference/conf-alone.wav"/>
<!--
      <param name="moh-sound" value="$${hold_music}"/>
      <param name="enter-sound" value="tone_stream://%(200,0,500,600,700)"/>
      <param name="exit-sound" value="tone_stream://%(500,0,300,200,100,50,25)"/>
-->
      <param name="kicked-sound" value="conference/conf-kicked.wav"/>
      <param name="locked-sound" value="conference/conf-locked.wav"/>
      <param name="is-locked-sound" value="conference/conf-is-locked.wav"/>
      <param name="is-unlocked-sound" value="conference/conf-is-unlocked.wav"/>
      <param name="pin-sound" value="conference/conf-pin.wav"/>
      <param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
      <param name="caller-id-name" value="$${outbound_caller_name}"/>
      <param name="caller-id-number" value="$${outbound_caller_id}"/>
      <param name="comfort-noise" value="true"/>

      <!-- <param name="conference-flags" value="video-floor-only|rfc-4579|livearray-sync|auto-3d-position|minimize-video-encoding"/> -->

      <!-- <param name="video-mode" value="mux"/> -->
      <!-- <param name="video-layout-name" value="3x3"/> -->
      <!-- <param name="video-layout-name" value="group:grid"/> -->
      <!-- <param name="video-canvas-size" value="1920x1080"/> -->
      <!-- <param name="video-canvas-bgcolor" value="#333333"/> -->
      <!-- <param name="video-layout-bgcolor" value="#000000"/> -->
      <!-- <param name="video-codec-bandwidth" value="2mb"/> -->
      <!-- <param name="video-fps" value="15"/> -->

    </profile>

故障排除

本节将帮助您解决BigBlueButton安装中的常见错误。如果您无法解决任何安装问题,请发布错误消息的说明以及要安装到bigbluebutton-setup的BigBlueButton版本,社区可以进一步帮助您。

运行sudo bbb-conf -check

我们已经建立了一个BigBlueButton配置实用程序,bbb-conf可以帮助您配置BigBlueButton服务器,并在某些情况不正确的情况下解决您的设置问题。

如果您认为某些内容无法正常工作,则第一步是输入以下命令。

$ sudo bbb-conf --check

这将检查您的设置以确保正确的进程正在运行,BigBlueButton组件已正确启动,并查找可能会阻止BigBlueButton正常工作的常见配置问题。

如果您在行后看到文字** Potential problems described below **,则可能会出现警告(如果您更改设置,则可以忽略)或设置错误。

无法获取您的麦克风进行WebRTC呼叫

Chrome需要(截至Chrome 47)要访问WebRTC的用户麦克风,您的网站必须通过HTTPS(即,nginx配置了SSL证书)来提供页面。

如果用户尝试分享他们的麦克风,并且您的BigBlueButton服务器未配置为SSL,Chrome将阻止访问,BigBlueButton将报告以下错误

WebRTC音频故障:检测到以下WebRTC问题:无法获取您的麦克风进行WebRTC呼叫。你想尝试闪光吗?

要启用Chrome访问用户的麦克风,请参阅在BigBlueButton上配置HTTPS

Tomcat7需要很长时间才能启动

Tomcat依赖于SecureRandom类(使用可用熵)为其会话ID提供随机值。然而,在虚拟化服务器上​​,可用的熵可以运行得很低,并导致tomcat7在完成启动顺序之前长时间阻塞(请参阅Tomcat熵源)。

为了提供更多熵的tomcat7,您可以安装已安装

$ sudo apt-get install haveged

有关详细信息,请参阅如何使用已安装的云服务器设置其他熵

包装错误

一些主机提供商不提供完整的/etc/apt/source.list如果您发现无法安装软件包,请尝试/etc/apt/sources.list使用以下命令替换

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

然后做

$ sudo apt-get update

并从头开始重新安装BigBlueButton。

欢迎来到nginx

在安装BigBlueButton期间,打包脚本会在安装过程中尝试分配正确的IP地址。但是,如果IP地址发生更改(例如重新启动虚拟机时),或者第一个IP地址不是服务器的正确IP地址,则可能会看到“欢迎使用nginx”页面。

要重新配置BigBlueButton以使用正确的IP地址或主机名,请参阅BigBlueButton不加载

BigBlueButton不加载

如果您更改了网络连接(例如重新启动),则可以按照以下步骤操作BigBlueButton的大部分配置文件。

$ sudo bbb-conf --setip <ip_address_or_hostname>

$ sudo bbb-conf --clean
$ sudo bbb-conf --check

有关更多信息,请参阅bbb-conf选项

会议未发现错误

该命令sudo bbb-conf --debug搜索red5,tomcat7和nginx日志,查找错误和异常。但是,消息如

    -- ERRORS found in /usr/share/red5/log/* --
/usr/share/red5/log/bigbluebutton.log:2015-05-02 13:50:37,681-04:00 [pool-17-thread-1] ERROR o.b.w.v.f.a.PopulateRoomCommand - Not XML: [Conference 78505 not found]

是无辜的,可以忽视。

如果您已安装/卸载BigBlueButton软件包,可能会收到以下No Symbolic Link警告bbb-conf --check

** Potential Problems **
    nginx (conf): no symbolic link in /etc/nginx/sites-enabled for bigbluebutton

为了解决这个问题,请为BigBlueButton网站添加一个符号链接到nginx:

$ sudo ln -s /etc/nginx/sites-available/bigbluebutton /etc/nginx/sites-enabled/bigbluebutton
$ sudo /etc/init.d/nginx restart

用户无法加入只听模式

在做的时候sudo bbb-conf --check,你可能会看到警告

voice Application failed to register with sip server

bbb-apps-sip无法向FreeSWITCH发出SIP呼叫时,会发生此错误当用户点击耳机图标并且不加入语音会议时,您将在BigBlueButton中看到这一点。

一个可能的原因是你刚刚安装了BigBlueButton,但没有重新启动它。软件包不会以正确的顺序启动BigBlueButton组件。要重新启动BigBlueButton,请执行以下操作:

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

如果您不希望FreeSWITCH绑定到127.0.0.1,您需要确定其使用的IP地址。首先,使用以下命令确定FreeSWITCH正在监听传入SIP呼叫的IP地址:

$ netstat -ant | grep 5060

你应该看到一个输出,如

tcp        0      0 234.147.116.3:5060    0.0.0.0:*               LISTEN

在这个例子中,FreeSWITCH正在侦听IP地址234.147.116.3。服务器上的IP地址将不同。

接下来,编辑/usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties并设置sip.server.host从上述命令返回的IP地址的值保存更改(您需要以root身份编辑文件以保存更改)。

使用命令重新启动BigBlueButton并运行内置的诊断检查。

$ sudo bbb-conf --clean
$ sudo bbb-conf --check

客户端WebRTC错误代码

WebRTC提供非常高品质的音频。但是,用户的网络设置(或防火墙)可能不允许WebRTC连接(或保持连接)。

以下是用户可能遇到的WebRTC错误消息的以下列表:

  • 1001:WebSocket已断开连接 - WebSocket已成功连接,现已断开连接。可能的原因:
    • 丢失互联网连接
    • Nginx重新启动可能导致这种情况
  • 1002:无法进行WebSocket连接 - 初始WebSocket连接失败。可能的原因:
    • 防火墙阻止ws协议
    • 服务器关闭或配置不正确
  • 1003:不支持浏览器版本 - 浏览器不实现必要的WebRTC API方法。可能的原因:
    • 过时的浏览器
  • 1004:呼叫失败 - 尝试了呼叫,但失败。可能的原因:
    • 有关完整的原因列表,请参阅此处http://sipjs.com/api/0.6.0/causes/
    • 有24个不同的原因,所以我真的不想列出所有这些
  • 1005:呼叫意外结束 - 呼叫成功,但没有用户请求结束会话结束。可能的原因:
    • 未知
  • 1006:呼叫超时 - 图书馆花了太长时间尝试连接电话。可能的原因:
    • 以前由Mac 33-beta造成的。自FireFox 34发布以来,我们一直无法重现
  • 1007:ICE协商失败 - 浏览器和FreeSWITCH尝试协商用于流媒体的端口,协商失败。可能的原因:
    • NAT阻塞连接
    • 防火墙阻止UDP连接/端口
  • 1008:呼叫转移失败 - 等待FreeSWITCH从回波测试转移到真正的会议时超时。这可能是由于FreeSWITCH中的配置错误引起的,或者可能是媒体错误,并且传输的DTMF命令没有通过(在这种情况下,回声测试中的声音可能也不起作用)。
  • 1009:无法获取STUN / TURN服务器信息 - 这表示BigBlueButton错误(或者您使用不支持的新客户端/旧服务器组合),但也可能由于网络中断而发生。
  • 1010:ICE协商超时 - 接受呼叫后,客户端的浏览器和服务器尝试协商音频数据的路径。在某些网络设置中,此协商需要异常长时间才能失败,并且设置此超时时间以避免客户端卡住。

不运行:nginx

nginx未运行的常见原因是无法绑定到端口80和配置错误。要检查端口80是否已经在使用,请使用

$ sudo netstat -ant

以查看当前是否有任何进程绑定到端口80.如果是,请检查是否安装了其他Web服务器。如果是这样,那么停止Web服务器并尝试重新启动nginx。安装BigBlueButton之前的一个服务器要求是端口80没有被其他应用程序(如Apache)使用。有关为什么这是一个要求的详细信息,请参阅我们建议在端口80上运行BigBlueButton

如果端口80空闲,请检查您的nginx配置文件是否有错误。尝试重新启动nginx

$ sudo systemctl restart nginx

并寻找输出

   [ OK ]

如果您看到[ Fail ],那么您的nginx配置文件可能会出现语法错误。使用该命令检查nginx配置文件的语法

$ sudo nginx -t

并查看是否重新发送任何错误。您还可以检查nginx的error.log文件,看看它在启动时有什么错误

$ sudo cat /var/log/nginx/error.log

在LXD容器内运行

LXD是一个非常强大的容器系统,可以让Ubuntu在容器内运行完整的Ubuntu 16.04服务器。因为您可以轻松克隆和快照LXD容器,它们是开发和测试BigBlueButton的理想选择。

但是,如果您在LXD容器中安装BigBlueButton,您将收到以下错误 sudo bbb-conf --check

** Potential problems described below **

#
# Error: Unable to connect to the FreeSWITCH Event Socket Layer on port 8021

您还将从FreeSWITCH启动出错bbb-conf --restart当你尝试systemctl status freeswitch.service,你会看到一个SETSCHEDULER的错误。

# systemctl status freeswitch.service
● freeswitch.service - freeswitch
   Loaded: loaded (/lib/systemd/system/freeswitch.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Wed 2017-04-26 16:34:24 UTC; 23h ago
  Process: 7038 ExecStart=/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -ncwait $DAEMON_OPTS (code=exited, status=214/SETSCHEDULER)

Apr 26 16:34:24 big systemd[1]: Failed to start freeswitch.
Apr 26 16:34:24 big systemd[1]: freeswitch.service: Unit entered failed state.
Apr 26 16:34:24 big systemd[1]: freeswitch.service: Failed with result \'exit-code\'.
Apr 26 16:34:24 big systemd[1]: freeswitch.service: Service hold-off time over, scheduling restart.
Apr 26 16:34:24 big systemd[1]: Stopped freeswitch.
Apr 26 16:34:24 big systemd[1]: freeswitch.service: Start request repeated too quickly.
Apr 26 16:34:24 big systemd[1]: Failed to start freeswitch.

发生此错误是因为FreeSWITCH的默认systemd单元脚本尝试以LXD容器不可用的权限运行。要在LXD容器内运行FreeSWITCH,请/lib/systemd/system/freeswitch.service使用以下内容进行编辑和替换

[Unit]
Description=freeswitch
After=syslog.target network.target local-fs.target

[Service]
Type=forking
PIDFile=/opt/freeswitch/var/run/freeswitch/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
EnvironmentFile=-/etc/default/freeswitch
ExecStart=/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -ncwait $DAEMON_OPTS
TimeoutSec=45s
Restart=always
WorkingDirectory=/opt/freeswitch
User=freeswitch
Group=daemon

[Install]
WantedBy=multi-user.target

然后输入以下命令来加载新的单元文件并重新启动BigBlueButton。

# sudo systemctl daemon-reload
# sudo bbb-conf --restart

您可以在LXD容器中运行BigBlueButton。

根分区太小

如果BigBlueButton服务器上的根分区太小(有关磁盘空间要求,请参阅安装前),我们建议将以下目录移动到具有足够磁盘空间的外部分区。

BigBlueButton处理和存储录音:

  /var/bigbluebutton

FreeSWITCH录音文件:

  /var/freeswitch/meetings

和red5录影的视频文件:

  /usr/share/red5/webapps/video/streams

要移动,我们先停止BigBlueButton,然后将上述目录移动到外部分区上的新位置,创建从原始位置到新位置的符号链接,然后重新启动BigBlueButton。

在以下示例中,安装了外部分区/mnt

$ sudo bbb-conf --stop

$ sudo mv /opt/freeswitch/recordings /mnt
$ sudo ln -s /mnt/recordings /opt/freeswitch/recordings

$ sudo mv /usr/share/red5/webapps/video/streams /mnt
$ sudo ln -s /mnt/streams /usr/share/red5/webapps/video/streams

$ sudo /var/bigbluebutton /mnt
$ sudo ln -s /mnt/bigbluebutton /var/bigbluebutton

$ sudo bbb-conf --start

无法创建演示文稿

如果您看到以下错误 /var/bigbluebutton/bbb-web.log

  failed to map segment from shared object: Operation not permitted

使用该命令mount来检查/tmpDirector没有noexec权限(这将阻止可执行文件在/ tmp目录中运行)。如果你看到noexec/tmp,你需要的权限,使进程(如幻灯片转换)在执行重新安装的目录/tmp目录。

将呼叫从Asterisk服务器转发到FreeSWITCH

我们假设如下:

asterisk server ip:          192.168.1.100
bigbluebutton/freeswitch ip: 192.168.1.200

您的星号服务器更改

设置您的网关到BigBlueButton / FreeSWITCH。/etc/asterisk/sip.conf附加

[fs-gw]
type=peer
username=fs-gw
insecure=very
contactpermit=192.168.1.200/255.255.255.255
qualify=no
nat=yes
host=192.168.1.200
canreinvite=no
disallow=all
allow=ulaw

将呼叫路由到网关。/etc/asterisk/extensions.conf您的呼叫正在处理的上下文中,将呼叫转接到网关。在这里,当有人拨打85001时,呼叫被发送到fs-gw上面定义的。

exten => 85001,1,Dial(SIP/fs-gw/${EXTEN})
exten => 85001,2,Hangup

对BigBlueButton / FreeSWITCH服务器的更改

在BigBlueButton / FreeSWITCH中,进行以下更改:

锁定,只有Asterisk可以将呼叫转接到FreeSWITCH。/opt/freeswitch/conf/autoload_configs/acl.conf.xml,添加以下ACL。我们还需要允许BigBlueButton调用FreeSWITCH,这就是为什么我们将BigBlueButton / FreeSWITCH的IP添加到ACL中的原因。

    <list name="asterisk-gw" default="deny">
       <node type="allow" cidr="192.168.1.200/32"/>
       <node type="allow" cidr="192.168.1.100/32"/>
       <node type="allow" cidr="127.0.0.1/32"/>
    </list>

然后我们将ACL应用到从外部网关接收呼叫的配置文件中。在中/opt/freeswitch/conf/sip_profiles/external.xml,添加ACL<settings>

  <settings>
    <!-- Apply ACL from asterisk-gw -->
    <param name="apply-inbound-acl" value="asterisk-gw"/>
...
</settings>

要进行调试,请尝试连接到FS CLI并增加日志记录级别。一旦连接,请打电话,看看日志说什么。

  cd /opt/freeswitch/bin
  ./fs_cli

  Once connected:
  help -- shows the available commands
  console loglevel <level> -- change log level

  Ctrl-D to exit

FreeSWITCH无法启动SETSCHEDULER错误

在容器(如chroot,OpenVZ或LXC)中运行时,FreeSWITCH可能无法设置CPU优先级,而其他任务也是不可能的。

如果您在FreeSWITCH中看到错误,请尝试运行systemctl status freeswitch.service,看看是否看到与SETSCHEDULER相关的错误

# systemctl status freeswitch.service
● freeswitch.service - freeswitch
   Loaded: loaded (/lib/systemd/system/freeswitch.service; enabled; vendor preset: enabled)
   Active: inactive (dead) (Result: exit-code) since Mon 2017-10-02 16:17:29 UTC; 18s ago
  Process: 10967 ExecStart=/opt/freeswitch/bin/freeswitch -u freeswitch -g daemon -ncwait $DAEMON_OPTS (code=exited, status=214/SETSCHEDULER)
 Main PID: 3327 (code=exited, status=0/SUCCESS)

Oct 02 16:17:29 scw-9e2305 systemd[1]: Failed to start freeswitch.
Oct 02 16:17:29 scw-9e2305 systemd[1]: freeswitch.service: Unit entered failed state.
Oct 02 16:17:29 scw-9e2305 systemd[1]: freeswitch.service: Failed with result \'exit-code\'.
Oct 02 16:17:29 scw-9e2305 systemd[1]: freeswitch.service: Service hold-off time over, scheduling restart.
Oct 02 16:17:29 scw-9e2305 systemd[1]: Stopped freeswitch.
Oct 02 16:17:29 scw-9e2305 systemd[1]: freeswitch.service: Start request repeated too quickly.
Oct 02 16:17:29 scw-9e2305 systemd[1]: Failed to start freeswitch.

如果是这样,那么编辑/lib/systemd/system/freeswitch.service并注释掉包含的行CPUSchedulingPolicy

IOSchedulingPriority=2
#CPUSchedulingPolicy=rr
CPUSchedulingPriority=89

然后systemctl daemon-reload重新启动BigBlueButton。FreeSWITCH现在应该启动没有错误。

将BigBlueButton连接到外部FreeSWITCH服务器

BigBlueButton捆绑在FreeSWITCH中,但您可以将BigBlueButton配置为使用外部FreeSWITCH服务器。

首先编辑 /usr/share/red5/webapps/bigbluebutton/WEB-INF/bigbluebutton.properties

freeswitch.esl.host=127.0.0.1
freeswitch.esl.port=8021
freeswitch.esl.password=ClueCon

更改freeswitch.esl.host为指向您的外部FreeSWITCH IP地址。将默认值更改freeswitch.esl.password为服务器的ESL密码。

您可以使用http://strongpasswordgenerator.com/生成密码。

在您的外部FreeSWITCH服务器中,进行编辑/opt/freeswitch/conf/autoload_configs/event_socket.conf.xml

<configuration name="event_socket.conf" description="Socket Client">
  <settings>
    <param name="nat-map" value="false"/>
    <param name="listen-ip" value="127.0.0.1"/>
    <param name="listen-port" value="8021"/>
    <param name="password" value="ClueCon"/>
    <!-- param name="apply-inbound-acl" value="localnet.auto"/ -->
  </settings>
</configuration>

更改listen-ip为您的外部FreeSWITCH服务器IP,并更改password为相同freeswitch.esl.password

编辑 /usr/share/red5/webapps/sip/WEB-INF/bigbluebutton-sip.properties

bbb.sip.app.ip=127.0.0.1
bbb.sip.app.port=5070

sip.server.username=bbbuser
sip.server.password=secret

freeswitch.ip=127.0.0.1
freeswitch.port=5060

更改bbb.sip.app.ip为您的BigBlueButton服务器ip。

更改sip.server.password到别的东西。

更改freeswitch.ip为您的外部FreeSWITCH ip。

在您的外部FreeSWITCH服务器。

编辑 /opt/freeswitch/conf/directory/default/bbbuser.xml

  <user id="bbbuser">
    <params>
      <!-- omit password for authless registration -->
      <param name="password" value="secret"/>
      <!-- What this user is allowed to access -->
      <!--<param name="http-allowed-api" value="jsapi,voicemail,status"/> -->
    </params>

更改password以匹配您设置的密码sip.server.password

旧版本

如果你想安装BigBlueButton 1.0,这里是链接

如果你想安装BigBlueButton 0.9,这里是链接