Nextcloud使用通话应用需要注意的问题

katekate 发布于 2022-03-05 874 次阅读


使用Nextcloud Talk的时候,安装完Talk软件直接使用,经常会报错:

无法与至少一个参与者建立连接。你的场景可能需要一个 TURN 服务器。请请求你的管理员按照来设置一个。

根据官方文档所说:

Nextcloud Talk 的配置主要取决于你想要的使用方式:
Talk 尝试建立直接的点对点 (P2P)连接,因此在本地网络之外的连接上(在NAT或路由器之后),客户端不仅需要知道彼此的公共 IP,还需要知道参与者的本地 IP . 处理这个,是STUN服务器的工作。
由于 Nextcloud GmbH 为 Nextcloud Talk 预先配置了一个,因此在这种情况下无需执行任何其他操作。
但在许多情况下,尤其是与防火墙或对称 NAT结合使用时,即使在 STUN 服务器的帮助下,直接 P2P 连接也是不可能的。为此,需要另外配置一个所谓的TURN 服务器。
Nextcloud Talk 将首先尝试直接 P2P,如果需要使用 STUN 并作为最后的后备选择使用 TURN。因此,为了在所有可能的连接情况下最灵活并保证 Nextcloud Talk 实例的功能,您需要设置一个 TURN 服务器。

什么意思呢?Nextcloud Talk在建立视频和语音通话的时候,会尝试进行点对点连接,即视频和语音数据不会经过Nextcloud服务器。那么在国内大内网,层层NAT转换的情况下,大多数时候是没有公网IP的,那么Nextcloud便无法进行点对点连接,此时就需要一个TURN服务器进行网络代理,为用户中转数据。

注:本方法会极大消耗服务器流量,服务器带宽要高一点(因为通话各方的流量基本上都从服务器流过了,所以在人多的时候,流量会跑的很快,并且对服务器的网速要求也是很大的)

一、安装coTURN

按照官方文档的要求,我们登录到服务器命令行界面,安装coTURN作为TURN服务器(以Ubuntu为例):

sudo apt install coturn

然后添加coTURN作为自启动程序:

sudo sed -i '/TURNSERVER_ENABLED/c\TURNSERVER_ENABLED=1' /etc/default/coturn

检查是否开启成功:

ls -l /lib/systemd/system/coturn.service

服务器提示:

-rw-r--r-- 1 root root 584 Dec 14  2020 /lib/systemd/system/coturn.service

则开启成功。

二、配置coTURN服务器

首先先给coTURN服务器运行权限(因为涉及到某些操作,如通过TLS进行访问,则需要证书文件,非特权用户无法访问)

systemctl edit coturn

在打开的编辑器中在文件中添加以下内容:

[Service]
User=root
Group=root

接下来来修改一下配置文件:

可以先通过whereis turnserver.conf命令来寻找该配置文件(一般在/etc/turnserver.conf)。找到后进行编辑:

sudo nano turnserver.conf

根据官方文档,需要修改的配置如下(请一个一个找到后取消注释并修改(nano编辑器善用Ctrl + W搜索)):

listening-port=你选择的通信端口(记得放行防火墙!!!)(默认3478)
fingerprint
use-auth-secret
static-auth-secret=你选择的密钥
realm=服务器域名(不带www)
total-quota=0
bps-capacity=0
stale-nonce=600

no-multicast-peers

#请注意,如果你想通过TLS进行连接,请同时修改以下几行:
cert=/usr/local/etc/turn_server_cert.pem(填入自己的域名证书的位置)
pkey=/usr/local/etc/turn_server_pkey.pem(同上)

接着进行保存。

三、配置客户端

使用管理员身份登录Nextcloud,打开Nextcloud的设置页面,选择通话:

添加一个TURN服务器:

填入服务器地址:通信端口、密钥,点击右边测试按钮进行测试。显示√则表示设置完成。

接下来就可以测试不在局域网环境下的通话是否正常。

此作者没有提供个人介绍
最后更新于 2022-03-05