Docker部署WebRTC Server AppRTC實現手機、瀏覽器互通簡易指南
AppRTC是什麼?
AppRTC是WebRTC Server Demo,具備Signaling Server、Room Server、TURN/STUN Server等相應功能。AppRTC作為服務端部分,可以實現Android 、iOS、瀏覽器等之間的視訊通話。
AppRTC怎麼用?
使用官網Demo Server
略
手動搭建部署
原始碼是在Google app engine 的基礎上部署的,由於Google Cloud服務不可用,這裡使用了GAE SDK的方式部署。
由於網路和依賴等問題,這裡不從零安裝部署,使用了Piasy的Docker部署方案。
Docker常用命令
列出所有容器(執行和停止的)docker ps -a
停止容器
docker stop <container-id>
移除容器可讀寫層
docker rm <container-id>
列出所有映象
docker images -a
刪除映象
sudo docker rmi c1fe6d45bdad
容器生成映象
docker commit -m "modify ice.js" -a "wildcreek" 4ebdd4587ced
載入映象進容器,並執行映象bash
docker run --rm --net=host -e PUBLIC_IP=x.x.x.x -v /root/docker/:/apprtc_configs -it wildcreek/apprtc-server /bin/bash
Docker部署AppRTC簡易指南
這裡完全參考了Piasy的Docker部署方案,並修改了幾個小問題。piasy的demo目前測試支援android互通;此demo目前測試firefox57 和android手機互通正常,chrome 要求必須支援https (getUserMedia) 和wss,尚未改造完成暫不支援。
第一步:安裝Docker
略
第二步:拉取映象
docker pull wildcreek/apprtc-server
第三步:修改配置
第四步:執行Server
docker run –rm –net=host -e PUBLIC_IP=x.x.x.x -v /root/docker/:/apprtc_configs -it wildcreek/apprtc-server
./run.sh
第五步:效果預覽
修改Docker容器後重新提交的簡單思路
修改 iceserver get方式獲取
cd /apprtc/src/web_app/js
vim util.js //將requestIceServers POST方法修改為GET
修復ice.js CORS跨域訪問問題
resp.header(“Access-Control-Allow-Origin”, “*”)
resp.header(“Access-Control-Allow-Credentials”,”true”)
resp.header(“Access-Control-Allow-Headers”, “Origin, X-Requested-With, Content-Type, Accept”)
resp.header(‘Access-Control-Allow-Methods’, ‘PUT, POST, GET, DELETE, OPTIONS’)
構建 :cd /apprtc ; grunt build
部署appengine :/usr/local/google_appengine/dev_appserver.py /apprtc/out/app_engine/
容器提交 docker commit -m “modify ice.js fix CORS” -a “wildcreek” 4ebdd4587ced wildcreek/apprtc-server
容器push: docker login ; docker push xxx/xxx
nginx https轉發
7.1 nginx安裝
apt-get update
apt-get install nginx
7.2 建立私鑰和證書
首先,進入你想建立證書和私鑰的目錄,例如:
cd /nginx
建立伺服器私鑰,命令會讓你輸入一個口令:
openssl genrsa -des3 -out server.key 1024
建立簽名請求的證書(CSR):
openssl req -new -key server.key -out server.csr
在載入SSL支援的Nginx並使用上述私鑰時除去必須的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
最後標記證書使用上述私鑰和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
7.3 nginx配置
sudo vim /etc/nginx/nginx.conf
//sudo vim /etc/nginx/sites-available/default
server {
listen 443;
ssl on;
server_name x.x.x.x;
ssl_certificate /nginx/server.crt;
ssl_certificate_key /nginx/server.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
location / {
# redirecting to http
proxy_pass http://x.x.x.x:8080;
}
}
7.4 nginx 啟動
service nginx -t
service nginx restart
7.5 容器提交 docker commit -m “nginx with https ,bug:need wss supprot” -a “wildcreek” 5e67a42e3fc6 wildcreek/apprtc-server
問題清單
已解決:
1. js跨域訪問
2. https支援
未解決:
1. https需要配合wss使用,程式碼中為ws,提示:An insecure WebSocket connection may not be initiated from a page loaded over HTTPS