一、 node环境搭建
yum install -y nodejs
二、 搭建 Coturn
1.1 Coturn环境
yum install -y openssl openssl-devel
yum install -y libevent-devel
yum install -y libssl-dev
yum install -y git
1.2 下载编译安装 Coturn
- 下载coturn
git clone https://github.com/coturn/coturn.git
- 编译安装 Coturn,分别以下顺序运行
cd coturn
./configure
make
make install
- 查看 Coturn 是否安装成功
which turnserver
1.3 生成 tls 证书
openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
运行后,在 /etc 目录下生成了两个 .pem 文件。
1.4 配置 Coturn
-
在 /usr/local/etc/ 目录下有 turnserver.conf.default,将它复制为 turnserver.conf
-
在配置文件的末尾加上如下内容
listening-device=eth0
relay-device=eth0
#填写本地IP
listening-ip=
#指定侦听的端口
listening-port=3478
#填写本地IP
relay-ip=
#指定云主机的公网IP地址
external-ip=
#访问 stun/turn服务的用户名和密码
user=username:123456
#域名,这个一定要设置
realm= turnserver
lt-cred-mech
#证书
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem
min-port=59000
max-port=65535
Verbose
fingerprint
no-stdout-log
syslog
stale-nonce
no-loopback-peers
no-multicast-peers
mobility
no-cli
#no-auth
1.5 启动 Coturn
- 命令行输入如下命令启动 turnserver
//启动方式1:
turnserver -o -a -f -r ronz -c /usr/local/etc/turnserver.conf
//启动方式2:
cd bin
turnserver -v -r 换成公网IP:3478 -a -o
- 测试 stun 服务:
turnutils_stunclient -p 3478 turnserver # turnserver 为公网IP
turnutils_uclient -v -t -T -W 123456 turnserver # -W 是我们上面在配置文件中配置的密码
turnserver 搭建完毕。
三、搭建信令服务器 SignalMaster
1.1 下载安装 SignalMaster
git clone https://github.com/andyet/signalmaster.git
安装依赖
cd signalmaster
npm install
1.2 使用OpenSSL生成自签名SSL证书
- 第一步:生成私钥
openssl genrsa -des3 -out server.pass.key 2048
输入一个4位以上的密码
- 第二步:生成私钥
openssl rsa -in server.pass.key -out server.key
- 第三步:生成CSR(证书签名请求)
openssl req -new -key server.key -out server.csr -subj "/C=CN/ST=Guangdong/L=Guangzhou/O=xdevops/OU=xdevops/CN=gitlab.xdevops.cn"
4.第四步:生成自签名SSL证书
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
1.3 配置 SignalMaster
下面需要修改 signalmaster/config/development.json 的配置以上生成的ssl 并且配置 stun 及 turn。
{
"isDev": true,
"server": {
"port": 8888,
"/* secure */": "/* whether this connects via https */",
"secure": true,
"key": "/usr/local/signalmaster/config/server.key",//上一补配置的证书路径
"cert": "/usr/local/signalmaster/config/server.crt",
"password": null
},
"rooms": {
"/* maxClients */": "/* maximum number of clients per room. 0 = no limit */",
"maxClients": 0
},
"stunservers": [
{
"urls": "stun:127.0.0.1:3478" //公网ip和端口
}
],
"turnservers": [
{
"urls": ["turn:47.106.135.124:3478"],
"username": "username", //前面配置turnserver.conf的用户
"credential":"123456", //密码
"expiry": 86400
}
]
}
1.4 启动 SignalMaster
cd signalmaster/
npm start
测试访问
https://公网ip:8888/socket.io/
1.5 SimpleWebRTC demo
git clone https://github.com/andyet/SimpleWebRTC.git