WebRTC

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

2018-02-01  本文已影响371人  猜火车丶

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

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

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

2.安装相关依赖

 sudo apt-get install git
 sudo apt-get install curl
 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
 sudo add-apt-repository ppa:openjdk-r/ppa
 sudo apt-get update
 sudo apt-get install openjdk-7-jdk
 sudo apt-get install python-webtest
 git clone https://github.com/webrtc/apprtc.git
 cd apprtc
 npm install
#打洞服务器配置
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'
}]
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
go get collidermain
go install collidermain

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

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
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
service coturn start
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

上一篇下一篇

猜你喜欢

热点阅读