阿里云 kurento coturn 安装配置

张映 发表于 2018-08-11

分类目录: 服务器相关

标签:, ,

kurento服务器的安装,请参考:ubuntu kurento 媒体服务器安装

coturn是作为一个STUN/TURN来使用,其中STUN是用于P2P,而TURN是用于中继转发,用来穿透虚拟网络架构用的。主要用在云服务器上面。如果有实体物理服务器,coturn是不用装的。

用的是阿里云专有网络,外网ip是没有网卡的。通过ifconfig是看不到外网ip的。

1,安装coturn

# apt-get install coturn

2,openssl生成证书

# openssl req -x509 -newkey rsa:2048 -keyout /etc/kurento/sslkey/turn_server_pkey.pem -out /etc/kurento/sslkey/turn_server_cert.pem -days 99999 -nodes

3,添加coturn用户

# turnadmin -A -u mytest -p 12345678 -r mytest
# turnadmin -k -u mytest -p 12345678 -r mytest >> /etc/kurento/coturn/turnuserdb.conf
# turnadmin  -L //小l查看普通用户
mytest[mytest]

大A是管理员,小a是普通用户,k根据用户名、密码、realm算出密钥。

4,配置turnserver.conf

# cat /etc/turnserver.conf | awk '{gsub(/^ +#/,"#",$0);if($0 !~ /^$/ && $0 !~ /^#/) {print $0}}'
listening-port=3478
listening-ip=192.168.11.138  //局域网IP
external-ip=47.xxx.xxx.18  //外网ip
min-port=40000
max-port=60000
Verbose
fingerprint
lt-cred-mech
user=mytest:12345678  //用户名和密码
userdb=/etc/kurento/coturn/turnuserdb.conf
realm=mytest  //域,可自定义
cert=/etc/kurento/sslkey/turn_server_cert.pem
pkey=/etc/kurento/sslkey/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
no-tcp
no-tls
no-cli

网上配置五花八门,很多坑。有的完全是反方向。还是以官方的为准,安装完后,turnserver.conf里面的配置都是有说明的。

5,开启coturn

# cat /etc/default/coturn
#
# Uncomment it if you want to have the turnserver running as
# an automatic system service daemon
#
TURNSERVER_ENABLED=1 //去掉前面的注释

6,启动并测试coturn

# /etc/init.d/coturn start
# netstat -upnl |grep turn
udp        0      0 192.168.11.138:3478     0.0.0.0:*                           6579/turnserver
udp        0      0 192.168.11.138:3478     0.0.0.0:*                           6579/turnserver
udp        0      0 192.168.11.138:5349     0.0.0.0:*                           6579/turnserver
udp        0      0 192.168.11.138:5349     0.0.0.0:*                           6579/turnserver

7,登录到阿里云后,开放3478端口

8,验证coturn服务器

# turnutils_uclient -S -v -u mytest -w 12345678 -i /etc/kurento/sslkey/turn_server_cert.pem -k /etc/kurento/sslkey/turn_server_pkey.pem 47.xx.xx.18 -y

中间过程很长,就截取了部分,如果最后出来以下内容说明,配置,认证成功。

coturn 认证成功

coturn 认证成功

如果出现incoming packet message processed, error 401: Unauthorized,说明配置,认证失败,检查用户名,密码,证书。

也可以用第三方验证,coturn是否安装成功

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

 coturn 第三方检测成功

coturn 第三方检测成功

9,kurento,配置coturn

# cat /etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini | awk '{gsub(/^ +;/,";",$0);if($0 !~ /^$/ && $0 !~ /^;/) {print $0}}'
turnURL=mytest:12345678@47.xxx.xx.18:3478?transport=udp

注意上面的udp,tcp配置的时候,被我禁了。重启一下kurento就可以使用了。

10,测试kurento

下载地址:https://github.com/Kurento/kurento-tutorial-node

# apt-get remove nodejs
# curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
# apt-get install nodejs
# npm install npm -g

# cd 解压路径/kurento-tutorial-node/kurento-one2one-call
# npm install
# npm start

> kurento-one2one-call@6.7.3-dev start /root/kurento-tutorial-node/kurento-one2one-call
> node server.js

Kurento Tutorial started
Open https://kurento.xxx.com:8443/ with a WebRTC capable browser

这样就可以和别人视频了。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/server/1946.html/comment-page-1

5 条评论

  1. Nelson 留言

    启动的时候,一直会有如下的警告
    0: WARNING: cannot find certificate file: /etc/turn_server_cert.pem (1)
    0: WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
    0: WARNING: cannot find private key file: /etc/turn_server_pkey.pem (1)
    0: WARNING: cannot start TLS and DTLS listeners because private key file is not set properly

    检查过配置 也没有问题 路径也都正确 文件的权限也已经设置成777
    然后启动之后 出现了401
    不知道大佬有没有遇见这种问题
    或者有什么建议
    万分感谢!

  2. 张映 留言

    提示的已经很清楚了,证书地址不对。vi /etc/turn_server_cert.pem 看一下

  3. 李超 留言

    按您说的这个做了配置,用 https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 测试不成功呀,你在文章中的 turnadmin -k -u mytest -p 12345678 -r mytest >> /etc/kurento/coturn/turnuserdb.conf 这个是做什么用的呢?在trickle-ice 里 credential 该如何填写呢?

  4. infi 留言

    请问,我用https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/ 测试,出现incoming packet message processed, error 401: Unauthorized 的错误,要怎么解决呢?

  5. jason 留言

    老是报这个错误

    KurentoServerException: Error adding candidate (Code:40401, Type:null, Data: {"type":"ICE_ADD_CANDIDATE_ERROR"})