kurento和打洞的服务器的安装及部署

前言

大家好,我是许RR。最近公司在做一个互联网门诊的业务,基础业务是病人能够通过网页或者视频的视频来“call”医生,然后医生选择接听,达到一个通过视频的互联网诊断的效果,让病人不到医院就能向医生问诊。然后负责这个项目的老大让我负责搭建一个kurento服务器用于传输流媒体,另外加一个必须的打洞服务器用于穿透网络,让kurento服务器能够找到客户端的真实ip地址。本来我以为是个很简单的活,搭建环境嘛,没想到是一个纠缠了我三天的噩梦,坑和问题无处不在,能弄出来全亏了我的两位师兄,@帅气小伙和@codenjin师兄,在两位师兄身上我看到了什么才是一个真正的后端程序员。

使用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/, 执行以下命令安装并启动镜像:
docker run -d --name kms -p 8888:8888 kurento/kurento-media-server:xenial-latest

然后使用sudo docker ps查看镜像是否启动,执行这个命令如果看到类似下面的输出,那么就是启动成功:

7bbe2673abd8        kurento/kurento-media-server:xenial-latest   "/entrypoint.sh"    5 days ago          Up 3 seconds (health: starting)   0.0.0.0:8888->8888/tcp   kms

嗯,反正我是没遇到不成功的,如果不成功说明你倒霉,自己想办法解决吧。假设上面都运行成功,那么kurento就是安装成功并且成功的在8888端口运行起来了。

docker安装stun和turn服务器(打洞服务器)

kurento安装起来算是简单的了,唯一的坑也被docker解决了,但是stun和turn服务器安装这块坑就大了,网上很多教程,但是你会发现他们说的都不一样,有说一定要Ubuntu的,有说这个参数放内网ip的,有说这个参数放外网IP的,有说这个无所谓的,有说要生成用户的,有说要md5码的。我操我给这帮各执其词的教程和博客折磨的心力憔悴,最后拼拼凑凑的在自己的Ubuntu成功的搭建起来了一个打洞服务器,但是我并不建议你用这种方法,因为花费的时间实在太长,可以用更方便的方法。@codenjin师兄到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

嗯,这个dockerfile给你配置turn的用户名和密码都是kurento,你如果简单百度过几篇博客就应该知道我在说什么。你可以用这个网址去测试stun和turn的有效性:

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

测试stun有效性(出现两个地址加”done“才为有效):
image

测试turn有效性(出现三个地址加"done"才为有效):
image

打了红圈的说明这是成功的,只有成功才会显示“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

若要配置打洞服务器,配置文件应该改成这样的:

stunServerAddress=you_url
stunServerPort=you_port
turnURL=kurento:kurento@you_url?transport=tcp

跑通官网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

在函数function uiStart()里,增加一个叫iceservers的变量,格式如下:

var iceservers={
 "iceServers":[
 {
   urls:"stun:139.198.123.138:3478"
 },
 {
 urls:["turn:139.198.123.138:3478"]
 username:"kurento",
 credential: "kurento"
 }
 ]
 }

再修改底下的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
 };
​```
希望有同样目的的同志能够看到这篇博文,不然肯定被折磨的死去活来。kurento团队源码中很多坑没有说明就是为了用了他们项目的人能够出钱去购买他们的技术支持,不能中老外的圈套。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,948评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,371评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,490评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,521评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,627评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,842评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,997评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,741评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,203评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,534评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,673评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,339评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,955评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,770评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,000评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,394评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,562评论 2 349

推荐阅读更多精彩内容