linux基于coturn搭建STUN服务器

899 阅读1分钟

背景

基于个人的webRtc视频通讯demo,若要在外网中实现webrtc连接,则必须要有STUN服务器

搭建STUN服务器

基于github项目coturn搭建

参考资料:

  1. 安装coturn需要的依赖。参考文档

        $ sudo yum install openssl-devel
        $ sudo yum install sqlite
        $ sudo yum install sqlite-devel
        $ sudo yum install libevent
        $ sudo yum install libevent-devel
        $ sudo yum install postgresql-devel
        $ sudo yum install postgresql-server
        $ sudo yum install mysql-devel
        $ sudo yum install mysql-server
        $ sudo yum install hiredis
        $ sudo yum install hiredis-devel
  1. 下载coturn代码,并安装依赖
    cd /opt 
    git clone https://github.com/coturn/coturn.git #下载代码
    cd coturn #进入目录
    source ./configure 
    make -j 8
    sudo make install
  1. 执行make install后,找到文件turnserver.conf.default位置

image.png

  1. 进入该位置并拷贝一份,命名为turnserver.conf(后续启动服务时候可以指定需要的conf文件)
    cd /usr/local/etc
    cp turnserver.conf.default turnserver.conf #拷贝文件,并命名为turnserver.conf
  1. 编辑该文件,找到以下字段并编辑
    vim turnserver.conf 

内网ip:输入ifconfig可获得

    listening-ip=${内网IP} 
    relay-ip=${内网IP}
    external-ip=${外网IP}

    user=username:password #自己的服务器中用了 user=wfchat:wfchat
    #下面两个端口均要大于10000
    min-port=49152 
    max-port=65535
  1. 启动服务
    turnserver -v -r ${公网IP}:3478 -a -o -c /usr/local/etc/turnserver.conf
  1. 查看本地是否启动成功(后续还需要在远端查看)
ps -ef|grep turn

image.png

  1. 关闭服务
  • 关闭单个 kill [pid],如上图中的kill 169693
  • 关闭全部killall turnserver
  1. 查看公网中是否部署成功

    • 进入测试网站查看
    • 输入stun:${公网ip}:3478,用户名和密码输入前面配置的user=wfchat:wfchat
    • 当成功部署时,会看到relaydone

image.png

  1. 部署失败原因总结
    • 云服务器没有打开对应端口(一般是3478)的防火墙,导致被拦截。需要同时打开TCPUDP
    • 启动了nginx服务(可能是冲突啥的)。这是我自己遇到的,导致浪费了很多时间排查。将nginx关闭后,再重启turnserver服务,在测试网站中检测就是成功状态了;之后再启动nginx,STUN检测也是成功的。

给自己看的

公网的前端项目,需要/opt/testJs/webRtc-demo,运行npm run service。其中,监听的代码是npm run build之后distClient目录的内容,而不是开发的内容