服务器Centos安装turnserver服务

基础环境

sudo yum install -y make gcc cc gcc-c++ wget
sudo yum install -y openssl-devel libevent libevent-devel

Turn安装,使用github上的coturn构建:https://github.com/coturn/coturn

wget http://turnserver.open-sys.org/downloads/v4.5.2/turnserver-4.5.2.tar.gz

tar -xvzf turnserver-4.5.2.tar.gz

cd turnserver-4.5.2 && ./configure --prefix=/usr/local/turnserver

make

sudo make install

不要使用git clone拉取,不然你会发现报C的错误
测试是否安装成功,若有路径表示成功
which turnserver

-----下面的配置为普通应用,当前系统你可以配置也可以不配置,反正用不上-----
进入配置文件夹
cd /usr/local/turnserver/etc/
复制出turnserver.conf.defaultturnserver.conf
vim编辑配置文件,shift+g跳到最后一行加上以下内容

listening-port=监听端口
listening-ip=你的内网
external-ip=你的外网
user=你的账号:你的密码
realm=域名
cli-password=你的密码(这个要加上,不然一会启动服务会报cli-password啥的)
min-port=49152
max-port=65535

防火墙把tcp和udp全部1-65535全部放开(只放3478也行,默认3478)
然后启动服务
turnserver -v -r 你的公网ip:3478 -a -o -c /usr/local/turnserver/etc/turnserver.conf
查看是否在运行了 ps -ef|grep turnserver
未配置证书的报错
生成证书

openssl req -x509 -newkey rsa:2048 -keyout /usr/local/turnserver/etc/turn_server_pkey.pem -out /usr/local/turnserver/etc/turn_server_cert.pem -days 99999 -nodes

ifconfig查看网卡 修改配置文件

cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem

-----无用配置结束-----

WebRTC服务端搭建

开源仓库 https://github.com/MixinNetwork/kraken
Go环境配置此教程不讲
clone仓库,然后build对应平台kraken
然后配置config下的配置文件
config目录下coturn.service文件放置centos服务中,先修改一下

[Unit]
Description=Coturn Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/turnserver -a -f --syslog --no-stun --listening-port 3478 --static-auth-secret=通信密码 -r kraken -v
Restart=on-failure
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

安装服务并启用,可参考教程 https://www.lvtao.net/post/systemd-java-jar/
cp config/engine.example.toml config/engine.toml
vim engine.toml

[engine]
# the network interface to bind
interface = "eth0"
# the IP address to bind, empty allows the engine to get it from interface
address = "内网IP"
log-level = 10
# the UDP port range, leave them to 0 for default strategy
port-min = 49152
port-max = 65535

[turn]
host = "turn:公网IP:3478"
# must be identical to coturn static auth secret
secret = "通信密码"

[rpc]
port = 7000

以上两处通信密码必须一致,不然没有turn服务,客户端可能会没法找到相同的房间用户
启用服务./kraken -c config/engine.toml -s engine
如果不想暴露7000端口,可使用nginx配置ssl并反代7000端口即可

语音通讯客户端配置

仓库地址:https://github.com/MixinNetwork/kraken.fm
下载源码,修改index.js中配置即可

  // 如果启用伪静态用下列配置
  //const KRAKEN_API = 'https://ip:7000';
  //const ROOM_PARAM = 'PATH';
  //const ICE_POLICY = 'relay';

  // 无伪静态的开发环境
  const KRAKEN_API = 'http://ip:7000';
  const ROOM_PARAM = 'QUERY';
  const ICE_POLICY = 'all';

前端nginx伪静态参考

location / {
	rewrite ^(.*)/([a-z0-9\_]+)$ $1/?room=$2 last;
}