• 首页
  • 关于
    • 翟留闯 photo

      翟留闯

      interesting coding,easy life

    • 关于我
    • Email
    • Github
    • Weibo
  • 文章
    • 所有文章
    • 所有标签
  • 项目

AppRtc 搭建笔记

01 Sep 2017

Reading time ~1 minute

AppRtc 搭建笔记

##源项目GitHub地址

apprtc:https://github.com/webrtc/apprtc

##前提

1,自行科学上网(要下载许多谷歌的包,且有用到Go语言)

2,环境准备(需要node、npm、grunt、Python、Go、jdk、GoogleAppEngine、、)请自行下载安装

一,房间服务器搭建

(1)下载apprtc源码

	git clone https://github.com/webrtc/apprtc.git

	cd apprtc

	npm install

npm install 有可能出现各种错误,不要捉急,慢慢处理

(2)修改配置文件

接下来更改项目中的配置文件/apprtc/src/app_engine/constants

由于笔者基于的ubuntu内网IP是222.201.145.167,故以下配置中均改为此IP.

constants.py需要更改配置如下

//turn打洞服务器配置

TURN_BASE_URL = 'https://222.201.145.167'

TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'

CEOD_KEY = 'luluteam'//与之后turn服务器配置中的配置一致

//ice服务器配置

ICE_SERVER_BASE_URL = 'https://222.201.145.167'

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 = '222.201.145.167:8089'

WSS_INSTANCE_NAME_KEY = 'vm_name'

WSS_INSTANCE_ZONE_KEY = 'zone'

WSS_INSTANCES = [{

WSS_INSTANCE_HOST_KEY: '222.201.145.167:8089',

WSS_INSTANCE_NAME_KEY: 'wsserver-std',

WSS_INSTANCE_ZONE_KEY: 'us-central1-a'

}, {

WSS_INSTANCE_HOST_KEY: '222.201.145.167:8089',

WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',

WSS_INSTANCE_ZONE_KEY: 'us-central1-f'

}]

(3)执行命令

grunt build

改好constants文件后,在apprtc根目录下grunt build得到编译好的out目录,可以进去查看之前constants的修改是否生效。到此为止,房间服务器配置完毕。

错误提示:

错误1:requests.exceptions.SSLError: [Errno 1] _ssl.c:510: error:14077410:SSL routines:SSL23_GET_SERVER_HELLO:sslv3 alert handshake failur

请执行命令: pip install pyopenssl ndg-httpsclient pyasn1

grunt build 依然会遇到各种错误,请务必善用google搜索

(4)运行项目

运行还依赖 GoogleAppEngine 这里选择合适的目录,进行下载并配置环境变量

假设你的GoogleAppEngine安装在”/usr/local/“目录下,且您当前在apprtc跟目录下,那么你的服务启动命令应该为

sudo /usr/local/google_appengine/dev_appserver.py ./out/app_engine

或者

sudo /usr/local/google_appengine/dev_appserver.py --host=222.201.145.167  ./out/app_engine

启动成功的话,即可在222.201.145.167下访问

二,Collider信令服务器搭建

(1)使用apt-get命令来安装Go环境

sudo apt-get install software-properties-common

sudo apt-get install python-software-properties

sudo add-apt-repository ppa:gophers/go

sudo apt-get update

sudo apt-get install golang-go git-core mercurial

(2)$home 目录下 创建文件夹 ‘mkdir goWorkspace’ (亦可自行创建,记住名字和路径就好,一下则以 ‘~/goWorkspace’ 目录为例)

(3)将 Collider 链到 $GOPATH/src

ln -s pwd /apprtc/src/collider/collider $GOPATH/src

ln -s pwd /apprtc/src/collider/collidermain $GOPATH/src

ln -s pwd /apprtc/src/collider/collidertest $GOPATH/src

(4)修改源码

进入/collidermain/main.go,修改房间服务器为我们前面的房间服务器

var roomSrv = flag.String("room-server", "https://222.201.145.167", "The origin of the room server")

(5) 安装依赖关系

go get collidermain

(6) 安装 collidermain

go install collidermain

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

(7)运行collider服务器

进入bin目录运行./collidermain -port=8089 -tls=true

(nohup ./collidermain -port=8089 -tls=true & 后台运行)

### 三,coTurn打洞服务器

(1)本文使用turnserver-4.4.5.3-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz(云盘密码:n8cr)

找个地方创建turnserver目录,将上面下载下来的服务器文件解压,解压后得到INSTALL安装须知和.deb包,然后执行命令

sudo apt-get install gdebi-core
sudo gdebi *.deb

(2)安装成功后修改配置文件

​ ① sudo vim /etc/default/coturn 将TURNSERVER_ENABLED=1的注释去除。

​ ② sudo vim /etc/turnserver.conf 加入下述内容到此文本最后

​ 注意:3478是coturn服务器端口号,下面user和static-auth-secret中的自定义名称要和房间服务器配置时constants.py文件的CEOD_KEY一致

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=luluteam

user=luluteam:0x06b2afcf07ba085b7777b481b1020391

user=luluteam:luluteam

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

保存,上面添加文本需要的证书使用openssl生成

生成秘钥

上面配置文件中的0x06b2afcf07ba085b7777b481b1020391

通过turnadmin命令生成

turnadmin -k -u luluteam -r north.gov -p luluteam
//前面的luluteam是用户名,后者是密码.

生成coturn证书(openssl生成签名证书)

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

(3)基于coturn证书设置修改文件

①进入/apprtc/src/web_app/js/utils.js

②将requestIceServers函数改为如下

笔者设置coturn的用户名和密码均为luluteam,故函数中改为luluteam

function requestIceServers(iceServerRequestUrl, iceTransports) { 
	return new Promise(function(resolve, reject){
      var servers = [{ 
      		credential: "xxxxx", 
      		username: "xxxxx", 
      		urls:["turn:222.201.145.167:3478?transport=udp", 
      		"turn:222.201.145.167:3478?transport=tcp"] 
        }];
      resolve(servers);
});}

更改之后重新进入apprtc根目录使用 “grunt build’’ 命令重新编译源码,然后重新启动服务

这时三个服务器都起来了

大功告成!!!记得要启用HTTPS哦!!!



笔记