安装
欢迎来到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服务器将在防火墙后面运行,则还需要配置防火墙和BigBlueButton以启用和访问外部用户的其他步骤。
安装BigBlueButton 1.1
在开始安装之前,以下是一个快速清单,以确保您准备好了:
- 您有一个符合最低规格的Ubuntu 16.04 64位服务器。
- 如果服务器位于防火墙后面,则已配置防火墙将适当的端口转发到BigBlueButton服务器(并测试了连接正在通过)。
- 您有一个完全合格的域名(如
bigbluebutton.example.com
),可以解析为您的BigBlueButton服务器的IP地址(或防火墙的IP地址)。 - 您拥有主机名的有效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_NAME
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地址(或主机名)并响应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-binding
为wss-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
并更新属性jnlpUrl
和jnlpFile
HTTPS:
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_hostname
BigBlueButton服务器的外部主机名替换):
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音频会议,您需要创建一个dialplan
FreeSWITCH,它是一组在接收来电时运行的指令。当用户拨打电话号码时,拨号计划将提示用户输入与会议相关的五位数字。
要创建拨号计划,请使用下面的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>
要更改共享密码,请执行以下操作:
- 从UUID生成器(如http://www.somacon.com/p113.php)生成新的通用唯一标识(UUID)。这将给出一长串的随机数字,这将不可能进行逆向工程。
- 运行命令
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调用的一部分。
更改默认欢迎消息
默认欢迎消息由三个参数构成:两个系统范围的参数(见下文)和welcome
BigBlueButton create
API调用中的参数。
你会发现这两个系统广受欢迎参数defaultWelcomeMessage
和defaultWelcomeMessageFooter
在/var/lib/tomcat7/webapps/bigbluebutton/WEB-INF/classes/bigbluebutton.properties
。
defaultWelcomeMessage=<default welcome message>
defaultWelcomeMessageFooter=<default welcome message footer>
当前端创建一个BigBlueButton会话时,它也可以传递create API调用welcome
中的一个参数。
向用户显示的最终欢迎消息(在聊天窗口中为蓝色文本)是welcome
+ defaultWelcomeMessage
+ 的组合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-sound
和unmuted-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
来检查/tmp
Director没有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,这里是链接