Webrtc伺服器包括:房間伺服器(Room Server)、信令伺服器(Signaling Server)、防火牆打洞伺服器(STUN/TURN/ICE Server)
一、房間伺服器搭建
1、代碼下載下傳
伺服器項目位址https://github.com/webrtc/apprtc
git clone https://github.com/webrtc/apprtc
2、配置依賴環境
sudo apt-get install npm
npm -g install grunt-cli
Google App Engine SDK for Python:
可選擇使用
sudo apt-get install python-webtest
直接安裝python,然後下載下傳Google App Engine SDK for Python并解壓,編輯
/etc/profile
export PATH=$PATH:$HOME/google_appengine/
儲存退出并執行
source /etc/profile
。
node直接使用
sudo apt-get install nodejs-legacy
安裝版本過低,使用下面方法安裝:
wget https://nodejs.org/dist/v7.7.0/node-v7.7.0-linux-x64.tar.gz
tar xvf node-v7.7.0-linux-x64.tar.gz
配置環境,編輯
/etc/profile
export PATH=$PATH:$HOME/node-v5.9.0-sunos-x64/bin
儲存退出執行
source /etc/profile
3、安裝apprtc代碼中的grunt依賴
cd apprtc
npm install
grunt build //編譯
4、修改配置檔案
主要是
src/app_engine
目錄下的
apprtc.py
和
constants.py
檔案。對于
src/app_engine
目錄下的檔案每次修改後需執行指令
grunt build
重新編譯,也可以直接編輯
out/app_engine
目錄下的
apprtc.py
和
constants.py
避免重新編譯。
constants.py
#TURN_BASE_URL = 'https://computeengineondemand.appspot.com'
TURN_BASE_URL = 'http://192.168.2.128:3487'
#TURN_URL_TEMPLATE = '%s/turn?username=%s&key=%s'
TURN_URL_TEMPLATE = '%s/turn.php?username=%s&key=%s'
#CEOD_KEY = '4080218913'
CEOD_KEY = '1234'
WSS_INSTANCES = [{
#WSS_INSTANCE_HOST_KEY: 'apprtc-ws.webrtc.org:443',
WSS_INSTANCE_HOST_KEY: '192.168.2.128:443',
WSS_INSTANCE_NAME_KEY: 'wsserver-std',
WSS_INSTANCE_ZONE_KEY: 'us-central1-a'
}, {
#WSS_INSTANCE_HOST_KEY: 'apprtc-ws-2.webrtc.org:443',
WSS_INSTANCE_HOST_KEY: '192.168.2.128:443',
WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
WSS_INSTANCE_ZONE_KEY: 'us-central1-f'
}]
apprtc.py
if wss_tls and wss_tls == 'false':
wss_url = 'ws://' + wss_host_port_pair + '/ws'
wss_post_url = 'http://' + wss_host_port_pair
else:
#wss_url = 'wss://' + wss_host_port_pair + '/ws'
wss_url = 'ws://' + wss_host_port_pair + '/ws'
#wss_post_url = 'https://' + wss_host_port_pair
wss_post_url = 'http://' + wss_host_port_pair
def make_pc_config(ice_transports):
config = {
#'iceServers': [],
'iceServers': [{"urls":"stun:192.168.2.128"},{"urls":"turn:[email protected]","credential":"1234"}],
'bundlePolicy': 'max-bundle',
'rtcpMuxPolicy': 'require'
};
if ice_transports:
config['iceTransports'] = ice_transports
return config
把原來的wss和https的scheme都改為ws和http,不要讓用戶端或者浏覽器去使用SSL連結。若有第三方根證書的簽名機構頒發的證書可忽略。
修改完後重新執行
grunt build
。
5、啟動房間伺服器
dev_appserver.py --host=0.0.0.0 ./apprtc/out/app_engine
二、信令伺服器搭建
1、安裝GO環境
直接使用指令
sudo apt-get install golang-go
安裝的版本太低,後面執行
go get collidermain
會報錯,是以采用下面一種方法:
下載下傳GO安裝包并解壓
wget https://storage.googleapis.com/golang/go1.6.3.linux-amd64.tar.gz
tar xvf go1.6.3.linux-amd64.tar.gz
編輯打開檔案/etc/profile(也可根據自己需求選擇其他環境配置檔案編輯),在檔案末尾添加兩行
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
儲存退出執行
source /etc/profile
。
2、配置信令伺服器
建立目錄(collider_root)用于存放Collider的go代碼程式。
mkdir -p ~/collider_root
mkdir ~/collider_root/src
同設定GOROOT設定,在/etc/profile中添加
export GOPATH=$HOME/collider_root
export PATH=$PATH:$GOPATH/bin
建立連結(也可以直接将
~/apprtc/src/collider/
目錄中的
collider、collidermain、collidertest
直接拷貝到
~/collider_root/src
目錄下)
ln -sf ~/apprtc/src/collider/collider $GOPATH/src/
ln -sf ~/apprtc/src/collider/collidermain $GOPATH/src/
ln -sf ~/apprtc/src/collider/collidertest $GOPATH/src/
編輯$GOPATH/collidermain/main.go,修改房間伺服器為我們前面的房間伺服器:
//var roomSrv = flag.String("room-server", "https://appr.tc", "The origin of the room server")
var roomSrv = flag.String("room-server", "http://192.168.2.128:8080", "The origin of the room server")
3、安裝信令伺服器依賴和collidermain
go get collidermain
go install collidermain
若
go get collidermain
指令運作失敗,那麼則用下面這個麻煩的方法:
cd $GOPATH/src
wget http://www.golangtc.com/static/download/packages/golang.org.x.net.tar.gz
tar xvf golang.org.x.net.tar.gz
go install golang.org/x/net/websocket/
4、運作
$GOPATH/bin/collidermain -port=8089 -tls=false
5、測試
go test collider
三、STUN/TURN/ICE伺服器的搭建
1、下載下傳并安裝(詳細閱讀安裝手冊 INSTALL)
wget http://turnserver.open-sys.org/downloads/v4.4.1.2/turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
tar xvfz turnserver-4.4.1.2-debian-wheezy-ubuntu-mint-x86-64bits.tar.gz
sudo apt-get update
sudo apt-get install gdebi-core
sudo gdebi coturn*.deb
2、編輯配置檔案
編輯配置檔案,打開系統預設啟動配置:
$ vim /etc/default/coturn
把上面打開編輯的檔案中的這一行
TURNSERVER_ENABLED=1
去掉注釋,儲存退出。然後編輯
/etc/turnserver.conf
listening-device=eth0
relay-device=eth1
Verbose
fingerprint
lt-cred-mech
use-auth-secret
static-auth-secret=1234
user=lin:1234
user=xml:1234
stale-nonce
cert=/etc/turn_server_cert.pem
pkey=/etc/turn_server_pkey.pem
no-loopback-peers
no-multicast-peers
上面cert和pkey配置的自簽名證書用Openssl指令生成:
sudo openssl req -x509 -newkey rsa:2048 -keyout /etc/turn_server_pkey.pem -out /etc/turn_server_cert.pem -days 99999 -nodes
3、啟動
service coturn start