kurento和打洞的服務器的安裝及部署

https://blog.csdn.net/XRRRICK/article/details/85010829

 

文章目錄
`kurento`和打洞的服務器的安裝及部署
前言
使用docker安裝kurento
docker安裝stun和turn服務器(打洞服務器)
kurento設置打洞服務器地址
跑通官網java kurento-hello-world demo
前言
​    大家好,我是許RR。最近公司在做一個互聯網門診的業務,基礎業務是病人能夠通過網頁或者視頻的視頻來“call”醫生,然後醫生選擇接聽,達到一個通過視頻的互聯網診斷的效果,讓病人不到醫院就能向醫生問診。然後負責這個項目的老大讓我負責搭建一個kurento服務器用於傳輸流媒體,另外加一個必須的打洞服務器用於穿透網絡,讓kurento服務器能夠找到客戶端的真實ip地址。本來我以爲是個很簡單的活,搭建環境嘛,沒想到是一個糾纏了我三天的噩夢,坑和問題無處不在,能弄出來全虧了我的兩位師兄,@小孔成像和@codejin師兄,在兩位師兄身上我看到了什麼纔是一個真正的後端程序員。

使用docker安裝kurento
​    https://doc-kurento.readthedocs.io/en/6.9.0/ 這是官方文檔的地址,細讀了官方文檔我發現這個kurento只能安裝在Ubuntu上,這真是扯淡,這還是我第一次看到這麼“完美”只支持Ubuntu的軟件,然後公司只分給一臺centos的服務器給我。幸好有解決方案,直接裝不行我不能裝docker嗎,docker總不會不支持吧。而且官方也有docker使用kurento的文檔:https://hub.docker.com/r/kurento/kurento-media-server/, 執行以下命令安裝並啓動鏡像:

sudo docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:xenial-latest
1
然後使用sudo docker ps查看鏡像是否啓動,執行這個命令如果看到類似下面的輸出,那麼就是啓動成功:

CONTAINER ID        IMAGE                                        COMMAND                  CREATED             STATUS                PORTS                    NAMES
c8a8b70674ea        kurento/kurento-media-server:xenial-latest   "/entrypoint.sh"     11 days ago         Up 2 days (healthy)   0.0.0.0:8888->8888/tcp   kms
1
2
嗯,反正我是沒遇到不成功的,如果不成功說明你倒黴,自己想辦法解決吧。假設上面都運行成功,那麼kurento就是安裝成功並且成功的在8888端口運行起來了。

docker安裝stun和turn服務器(打洞服務器)
​    kurento安裝起來算是簡單的了,唯一的坑也被docker解決了,但是stun和turn服務器安裝這塊坑就大了,網上很多教程,但是你會發現他們說的都不一樣,有說一定要Ubuntu的,有說這個參數放內網ip的,有說這個參數放外網IP的,有說這個無所謂的,有說要生成用戶的,有說要md5碼的。我操我給這幫各執其詞的教程和博客折磨的心力憔悴,最後拼拼湊湊的在自己的Ubuntu成功的搭建起來了一個打洞服務器,但是我並不建議你用這種方法,因爲花費的時間實在太長,可以用更方便的方法。@codejin師兄到GitHub上找到一個老外的GitHub項目,有關coturn的項目,老外用將所有的操作都寫進了dockerfile裏面,自動打包好一個coturn的鏡像,首先克隆這個項目:https://github.com/konoui/kurento-coturn-docker.git(可以給個star,畢竟幫忙解決問題了),克隆好了執行以下操作:

cd /kurento-coturn-docker/coturn/
//使用dockerfile,記住加點
sudo docker build --tag coturn .
//後臺運行coturn
sudo docker run -p 3478:3478 -p 3478:3478/udp coturn
1
2
3
4
5
嗯,這個dockerfile給你配置turn的用戶名和密碼都是kurento,你如果簡單百度過幾篇博客就應該知道我在說什麼。你可以用這個網址去測試stun和turn的有效性:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

測試stun有效性(出現兩個地址加”done“才爲有效):


測試turn有效性(出現三個地址加"done"才爲有效):


打了紅圈的說明這是成功的,只有成功纔會顯示“done”,不成功一般會說“auth failed”或者“not reachable?”不要在意那個問號,只要不是done說明你就是失敗的。哦,如果只有一個地址也“done”的話,那也是不行的,不信你隨便拿個ip地址試試。

kurento設置打洞服務器地址
​    這個比較簡單,但是是必不可缺的一步,如果是使用docker的鏡像的話,那麼應該進入kurento的鏡像編輯kurento的配置文件:

 #進入鏡像
 docker exec -it kms /bin/bash
 #安裝vim
 apt-get update
 apt-get install vim
 #進入配置文件夾
 cd /etc/kurento/modules/kurento/
 #編輯配置文件
 vim WebRtcEndpoint.conf.ini
1
2
3
4
5
6
7
8
9
​    若要配置打洞服務器,配置文件應該改成這樣的:

stunServerAddress=you_url
stunServerPort=you_port
turnURL=kurento:kurento@you_url?transport=tcp
1
2
3
跑通官網java kurento-hello-world demo
​    以上的坑和這個坑都不算啥,這個纔是最大的坑,如果你使用kurento並且在遠端部署了kurento和打洞服務器並且試圖跑通kurento官網給的java kurento-hello-world demo(https://github.com/Kurento/kurento-tutorial-java.git裏面那個kurento-hello-wrold), 那就慘了,你會發現部署在自己本地的kurento能夠完美跑通,但是kurento一部署到遠端就無法連通,你會感覺自己的打洞服務器沒配好,然後反覆的去配,反覆的看網上的教程,但是偏偏網上的教程各執一詞,你瞬間迷茫了。

​    我就是這樣的,弄了兩天後最後@小孔成像師兄發現是官網給的demo完全沒有使用到我們自己配的打洞服務器。。。所以這個demo肯定跑不通,因爲它根本他喵的就沒用到你配好的打洞服務器啊!它用的是遠在牆外的谷歌的stun服務器啊!谷歌再強也穿不了中國的防火長牆啊。

在kurento-hello-wrold項目文件夾中,執行以下操作:

 cd /src/main/resources/static/js/
 vim index.js
1
2
在函數function uiStart()裏,增加一個叫iceservers的變量,格式如下:

 var iceservers={
    "iceServers":[
        {
          urls:"stun:139.198.123.138:3478"
        },
        {
          urls:["turn:139.198.123.138:3478"]
            username:"kurento",
            credential: "kurento"
        }
    ]
  }
1
2
3
4
5
6
7
8
9
10
11
12
再修改底下的options變量:

 const options = {
    localVideo: uiLocalVideo,
    remoteVideo: uiRemoteVideo,
    mediaConstraints: { audio: true, video: true },
    onicecandidate: (candidate) => sendMessage({
      id: 'ADD_ICE_CANDIDATE',
      candidate: candidate,
    }),
      configuration: iceservers //修改在這裏,增加了一個configuration的key
  };

1
2
3
4
5
6
7
8
9
10
11
​    希望有同樣目的的同志能夠看到這篇博文,不然肯定被折磨的死去活來。kurento團隊源碼中很多坑沒有說明就是爲了用了他們項目的人能夠出錢去購買他們的技術支持,不能中老外的圈套。
--------------------- 
作者:許RR 
來源:CSDN 
原文:https://blog.csdn.net/XRRRICK/article/details/85010829 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章