美文网首页WebRTC
从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

作者: 猜火车丶 | 来源:发表于2018-02-01 09:19 被阅读371次

网上其实有不少关于apprtc的搭建方案,因为我并不是一名后台人员,所以在实际搭建过程中遇到了一些各种原因导致的问题,所以我在此做记录希望能大家一些参考。
既然是从零开始,那么就从最基本的开始。

1.通过虚拟机安装一个Ubuntu系统

网上有很多安装教程就不一一赘述了。

2.安装相关依赖

  • 实现科学上网,因为下面不少内容需要科学上网,所以建议先进行配置,或着挂一个好的代理。

  • 安装git及curl

 sudo apt-get install git
 sudo apt-get install curl
  • 安装node.js及相关项
    node.js因为Ubuntu的apt并没有最新版本,所以我们需要先在终端执行下面curl的命令,然后install,而8.x代表相关版本:
 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
 sudo apt-get install -y nodejs

通过node -v执行显示版本号代表安装成功。

 sudo npm install -g npm
 sudo npm -g install grunt-cli
  • 安装openjdk-7-jdk
    因为apt已经没有源了,我们需要手动添加
 sudo add-apt-repository ppa:openjdk-r/ppa
 sudo apt-get update
 sudo apt-get install openjdk-7-jdk
  • 安装 python-webtest
 sudo apt-get install python-webtest
  • 下载apprtc源码
 git clone https://github.com/webrtc/apprtc.git
 cd apprtc
 npm install
  • 修改/apprtc/src/app_engine/constants该文件进行配置
#打洞服务器配置
TURN_BASE_URL = 'https://xx.xxx.xxxx.xx'     //此处为局域网IP,下同
TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
CEOD_KEY = 'guolei'//与之后turn服务器配置中的配置一致

#ice服务器配置
ICE_SERVER_BASE_URL = 'https://xx.xxx.xxxx.xx'
ICE_SERVER_URL_TEMPLATE = '%s/v1alpha/iceconfig?key=%s'
ICE_SERVER_API_KEY = os.environ.get('ICE_SERVER_API_KEY')

#信令服务器配置,分配8089端口
WSS_INSTANCE_HOST_KEY = 'xx.xxx.xxxx.xx:8089'
WSS_INSTANCE_NAME_KEY = 'vm_name'
WSS_INSTANCE_ZONE_KEY = 'zone'
WSS_INSTANCES = [{
WSS_INSTANCE_HOST_KEY: 'xx.xxx.xxxx.xx:8089',
WSS_INSTANCE_NAME_KEY: 'wsserver-std',
WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {
WSS_INSTANCE_HOST_KEY: 'xx.xxx.xxxx.xx:8089',
WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]
  • 下载依赖 GoogleAppEngine,需要翻墙
    按照谷歌提供的方式,进行安装即可。

  • 在apprtc目录下grunt build
    编译后得到out目录,查看constants是否生效。编译中可能出现报错

Running"shell:buildAppEnginePackage" (shell) task
Traceback(most recent call last):

File"./build/build_app_engine_package.py", line 12, in <module>

import requests
ImportError:No module named requests

Warning:Command failed: Traceback (most recent call last):
  File"./build/build_app_engine_package.py", line 12, in <module>

import requests
ImportError:No module named requests
Use --force to continue.

Aborteddue to warnings.

可以先wget https://bootstrap.pypa.io/ez_setup.py,然后在pip install requests,之后再次执行grunt build应该是没什么问题的了。

  • 开启房间服务
dev_appserver.py --host=0.0.0.0 ./out/app_engine

访问http://localhost:8000查看

3.信令服务器搭建

  • 安装依赖
sudo apt-get install golang-go
  • 配置信令服务
    home创建目录mkdir -p ~/collider_root,并在该目录下创建src目录
    设置环境变量export GOPATH=~/collider_root
    将apprtc/src/collider目录下的三个文件夹都拷贝到collider_root/src下
    进入到collider_root/src,开始编译安装collider,并准备好翻墙
go get collidermain
go install collidermain

编译成功后会在collider_root目录下生成bin和pkg目录,执行文件在bin下。

  • 启动信令服务
    修改collider_root/src/collidermain/main.go填上自己ip地址
var roomSrv = flag.String("room-server", "http://192.168.214.129:8080/", "The origin of the room server")

启动

~/collider_root/bin/collidermain -port=8089 -tls=false

4.打洞服务器

wget http://coturn.net/turnserver/v4.5.0.7/turnserver-4.5.0.7.tar.gz

下载后进行进行解压并执行后面步骤

tar xvfz turnserver-4.5.0.7.tar.gz
sudo apt-get install gdebi-core
sudo gdebi coturn*.deb 

或者直接使用sudo apt-get install coturn安装

  • 文件配置
sudo gedit /etc/default/coturn

TURNSERVER_ENABLED=1所在的最后一行删除

sudo gedit /etc/turnserver.conf

将以下内容添加到turnserver.conf末尾,3478是coturn服务器端口号,userstatic-auth-secret的自定义名称要和房间服务器constants.pyCEOD_KEY一致,0xd46cf788957ba8c2386411ba07f3133c是通过turnadmin命令生成turnadmin -k -u guolei -r north.gov -p guolei,前面的guolei是用户名,后者为密码。

listening-device=eth0
listening-port=3478
relay-device=eth0
min-port=49152
max-port=65535
Verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=guolei
user=guolei:0xd46cf788957ba8c2386411ba07f3133c
user=guolei:guolei
stale-nonce
cert=/usr/local/etc/turn_server_cert.pem
pkey=/usr/local/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
mobility
no-cli
  • 生成coturn证书
sudo openssl req -x509 -newkey rsa:2048 -keyout /usr/local/etc/turn_server_pkey.pem-out/usr/local/etc/turn_server_cert.pem-days 99999 -nodes
  • coturn服务器启动
service coturn start
  • 基于coturn证书设置修改文件
    /apprtc/src/web_app/js/utils.js文件下的requestIceServers函数改成以下内容:
function requestIceServers(iceServerRequestUrl, iceTransports) {
    return new Promise(function(resolve, reject){
      var servers = [{credential: "guolei",
                        username: "guolei",
                            urls: [ "turn:192.168.145.129:3478?transport=udp","turn:192.168.145.129:3478?transport=tcp" ]
                    },
                   { urls:["stun:192.168.145.129:3478?transport=udp",
                           "stun:192.168.145.129:3478?transport=tcp"]
                    }];
      resolve(servers);
  });
}

其中guolei和IP地址可以设置为自己的用户名和IP,即之前coturn设置的。更改后进入apprtc目录,重新grunt build

相关文章

网友评论

  • ac415effa0a9:你好 我想问一下在启动房间服务器之后,访问localhost:8080,报错是
    HTTPError:HTTP Error 502:Server dropped connection
    INFO 2018-05-29 05:13:58,186 module.py:846] default:"GET /HTTP/1.1" 500-
    请问有遇到过吗?
    iso8859_1:@wzq123 我也发现没有 你是怎么解决的
    ac415effa0a9:@你在我后半生的城市里长生不老 好的 谢谢 我还想问一下
    #打洞服务器配置
    TURN_BASE_URL = 'https://xx.xxx.xxxx.xx' //此处为局域网IP,下同
    TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
    CEOD_KEY = 'guolei'//与之后turn服务器配置中的配置一致
    这几行 是自己填上的吧 在constants.js里吗?我看到默认的文档里没有呢
    猜火车丶:@wzq123 我没遇到过这个问题,我猜测一个可能,是防火墙的问题,你试试看

本文标题:从零开始搭建基于webrtc的apprtc服务器搭建(ubunt

本文链接:https://www.haomeiwen.com/subject/zchlzxtx.html