个人随笔
只言片语,汇聚于此
CentOS7上进行公网单实例的Coturn + Pixel Streaming的配置
CentOS7上进行公网单实例的Coturn + Pixel Streaming的配置
  • 博主使用的服务器操作系统:CentOS7 x86_64

coturn安装与配置

安装需要的依赖包

GCC G++ OpenSSL Libevent-devel等

libevent

  1. 在http://libevent.org/下载libevent-2.1.8-stable.tar.gz(最新版即可,不必完全一致,但和coturn、openssl版本有一些对应关系)

  2. tar -zxvf libevent-2.1.8-stable.tar.gz

  3. cd libevent-2.1.8-stable

  4. /configure

  5. make

  6. make install

默认安装在/usr/local/lib,也会输出“Libraries have been installed in: Path Name”,表明已经安装在了Path Name下。

安装Coturn

其他博主多数推荐从GitHub下载coturn源码编译的方法,但是编译经常会报各种各样的错误,所以对于要求不高的用户,直接采用通过yum等方式安装本地包,在下方的网址下载对应的二进制包文件后本地安装即可。

Coturn Download (APK, DEB, RPM, TXZ, XZ, ZST) (pkgs.org)

Ubuntu系统自带apt-get,或者在安装了apt包管理器的情况下,也可以通过apt-get install coturn的方式直接安装,可能需要更换镜像源或apt-get upgrade来更新仓库。

Coturn配置

参考了coturn穿透服务器搭建 - 简书 (jianshu.com)的做法

  • 使用ifconfig命令检查网卡和私网地址

  • 使用openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes

    来在/etc/下生成公钥和私钥,中间的信息可以不填,一路回车即可。

  • 修改配置文件turnserver.conf,可以使用命令whereis turnserver来查看turnserver.conf的所在路径,一般在/etc/下或是/etc/coturn/下,listening-ip与relay-ip采用内网ip,external-ip是外网的ip

  • relay-device=eth0   #与前ifconfig查到的网卡名称一致
    listening-ip=172.18.77.60    #内网IP
    listening-port=3478
    tls-listening-port=5349
    relay-ip=172.18.77.60
    external-ip=47.107.110.xxx    #公网IP
    relay-threads=50
    lt-cred-mech
    cert=/etc/turn_server_cert.pem
    pkey=/etc/turn_server_pkey.pem
    pidfile=”/var/run/turnserver.pid”
    min-port=49000
    max-port=50000
    user=user:12345678    #用户名密码,创建IceServer时用
    cli-password=123456 #
    

记得删除所有#注释内容

STUN/TURN配置测试

输入以下命令开启turnserver进行测试

turnserver -a -f -user=user:12345678

具体参数可以参考turnserver 配置说明记录 - 磨叽开发者 - 博客园 (cnblogs.com)

然后在google提供的如下地址可以进行stun/turn连通性的测试

Trickle ICE (webrtc.github.io)

配置Pixel Streaming的信令服务器

安装node服务器

配置UE4提供的信令服务器

C:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer下复制全部内容至服务器上

修改config.json中的stun/turn的ip:port以及user,pswd为自己所配置的内容。

{
	"UseFrontend": false,
	"UseMatchmaker": false,
	"UseHTTPS": false,
	"UseAuthentication": false,
	"LogToFile": true,
	"HomepageFile": "player.htm",
	"AdditionalRoutes": {},
	"EnableWebserver": true,
	"peerConnectionOptions": "{\"offerExtmapAllowMixed\": false, \"iceServers\": [{\"urls\": [\"stun:42.193.xxx.xxx:3478\",\"turn:42.193.xxx.xxx:3478\"], \"username\": \"user\", \"credential\": \"pswd\"}] }",
	"steamerPort": 18888,
	"httpPort": 66,
	"publicIp": "47.98.xxx.xxx"
}

测试一下信令服务器运行node cirrus --configFile='./config.json'

持久化运行node

如果想持久运行node,可以参考另一篇文章

使用PM2运行node.js服务 (hypermn.cn)


最后修改于 2021-08-17

-1