找回密码
 立即注册
CeraNetworksBGVM服务器主机交流IP归属甄别会员请立即修改密码
查看: 82|回复: 9

用良心云轻量搭建开源视频会议服务,可以集成到自己项目

[复制链接]

39

主题

241

回帖

761

积分

高级会员

积分
761
发表于 2021-12-23 12:07:29 | 显示全部楼层 |阅读模式
本文主要面向需要在自己系统中集成视频会议的读者。

原文发布在 腾讯云计算社区https://cloud.tencent.com/developer/article/1923349,如果论坛存在排版问题,可以到原文观看。


客户要求在页面中集成视频会议功能,本来刚开始准备直接用腾讯云的服务来实现,但是客户说他们完全是一个不能访问互联网的局域网的环境,因此需要部署一个自托管的视频会议服务器,并且这个视频会议服务器需要提供相应的接口来和自己的项目集成。经过一些调研,发现了一些不错的第三方开源的项目。今天介绍的是其中的一个openvidu,其采用的是WEBRTC技术, 功能基本上可以满足我们目前的需要,而且采用Docker部署的话也十分方便。

openvidu虽然自身也提供了视频会议的Web页面,但是十分简陋,其主要还是面向的开发用户,用来在自己开发的系统中集成视频会议功能。





前期的测试主要还是在公网环境下运行,因此需要采购一台公网的服务器来做开发测试使用。根据官网的要求,服务器配置至少需要2核CPU以及8G的内存配置,并且需要充足的带宽。基于成本考虑,我们最终购买了腾讯云轻量服务器的4核8G10M带宽配置,后续都基于这个服务器进行部署搭建。

由于浏览器安全协议的限制,除了使用localhost地址访问以后,浏览器会禁止HTTP协议的页面使用摄像头。因此下面的过程中需要配置证书。openvidu支持自己配置证书,也支持使用letsencrypt自动签发证书。如果使用letsencrypt自动签发证书的话,需要使用域名指向服务器IP,使用国内的服务器域名需要备案。如果没有备案的域名的话,可以选择购买同配置香港的轻量服务器。

购买服务器

如果没有服务器的话,需要先购买一台腾讯云的轻量服务器。

轻量应用服务器(TencentCloud Lighthouse)是新一代开箱即用、面向轻量应用场景的云服务器产品,助力中小企业和开发者便捷高效的在云端构建网站、小程序/小游戏、电商、云盘/图床以及各类开发测试和学习环境,相比普通云服务器更加简单易用,提供高带宽流量包并以套餐形式整体售卖基础云资源,将热门开源软件融合打包实现一键构建应用,是您使用腾讯云的最佳入门途径。为了方便安装应用,我们需要准备Docker环境。

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。使用docker来部署应用是非常简单的,一般情况下,只需要一行命令即可完成。

腾讯云经常举办各种活动,可以点击这里进入他们的活动页面进行购买(注意根据官网要求,配置至少要求为8G以上),可以选择距离最近的区域购买,不过不想备案的话,可以选择境外的服务器(比如香港区域)进行购买。镜像的话,选择【官方镜像】下的【docker基础镜像】,实例套餐选择适合自己的,然后提交订单,付款即可。如果不选择【Docker基础镜像】,后面需要自行安装docker容器。






安装docker以及docker-compose

如果没有选择docker基础镜像,则需要自行安装docker镜像。这里假设使用的Ubuntu系统。安装docker的步骤如下

[ol]
  • sudo apt-get update
  • sudo apt-get install ca-certificates curl gnupg lsb-release
  • curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
  • echo \
  •   "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  •   $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  • sudo apt-get update
  • sudo apt-get install docker-ce docker-ce-cli containerd.io[/ol]复制代码

    然后安装docker-compose

    [ol]
  • sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  • sudo chmod +x /usr/local/bin/docker-compose
  • docker-compose --version[/ol]复制代码

    配置安全组

    视频会议功能内部采用WEBRTC技术,会使用比较多的端口,因此需要在轻量服务器的防火墙策略上放行相应的端口,目前官网上要求开放的端口如下。

    22 TCP: SSH端口

    80 TCP: HTTP端口

    443 TCP:HTTPS端口

    3478 TCP+UDP: TURN服务器端口,TURN服务器是在视频双方无法直接建立点对点连接时进行流量转发使用

    40000 - 57000 TCP+UDP: Kurento Media Server建立媒体连接的端口

    57001 - 65535 TCP+UDP: TURN服务器建立媒体连接的端口。

    除此之外,请确保这些端口80, 443, 3478, 5442, 5443, 6379 和 8888不能被占用

    如果嫌麻烦而且仅仅是测试环境使用,可以直接放行所有的端口。

    域名解析

    将要使用的域名解析到服务器的IP上。如果使用的是国内的服务器,域名需要备案。如果没有备案的域名,需要选购香港的服务器。或者也可以不使用域名,直接使用IP。直接使用IP的话,需要自己来签发并配置证书并配置浏览器信任证书。

    开始安装部署

    准备工作做完以后,就可以开始下载安装了。默认在/opt目录下进行安装

    首先进入到/opt目录下

    [ol]
  • cd /opt[/ol]复制代码


    然后使用openvidu提供的脚本进行安装

    [ol]
  • curl https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash[/ol]复制代码

    由于政策原因,在国内服务器上可能下载会失败,可以先在科学上网的环境下安装好,然后把相应的文件上传到服务器的安装目录里。

    进入到 openvidu目录里

    [ol]
  • cd /openvidu[/ol]复制代码

    使用熟悉的工具来编辑.env文件,本文档中使用letsencrypt来自动签发证书(ov的默认选项),只需要修改下面几项配置。

    [ol]
  • DOMAIN_OR_PUBLIC_IP=自己的域名
  • OPENVIDU_SECRET=xxxxxx                #密钥,换成一个安全系数高的
  • LETSENCRYPT_EMAIL=xx@xx.com    #换成自己的邮箱[/ol]复制代码

    或者不使用letsencrypt签发证书,来自行配置证书。具体配置方法在.env文件中有详细说明。

    [ol]
  • # OpenVidu configuration
  • # ----------------------
  • # Documentation: https://docs.openvidu.io/en/stable/reference-docs/openvidu-config/
  • # NOTE: This file doesn't need to quote assignment values, like most shells do.
  • # All values are stored as-is, even if they contain spaces, so don't quote them.
  • # Domain name. If you do not have one, the public IP of the machine.
  • # For example: 198.51.100.1, or openvidu.example.com
  • DOMAIN_OR_PUBLIC_IP=
  • # OpenVidu SECRET used for apps to connect to OpenVidu server and users to access to OpenVidu Dashboard
  • OPENVIDU_SECRET=
  • # Certificate type:
  • # - selfsigned:  Self signed certificate. Not recommended for production use.
  • #                Users will see an ERROR when connected to web page.
  • # - owncert:     Valid certificate purchased in a Internet services company.
  • #                Please put the certificates files inside folder ./owncert
  • #                with names certificate.key and certificate.cert
  • # - letsencrypt: Generate a new certificate using letsencrypt. Please set the
  • #                required contact email for Let's Encrypt in LETSENCRYPT_EMAIL
  • #                variable.
  • CERTIFICATE_TYPE=selfsigned
  • # If CERTIFICATE_TYPE=letsencrypt, you need to configure a valid email for notifications
  • LETSENCRYPT_EMAIL=user@example.com[/ol]复制代码

  • 回复

    使用道具 举报

    39

    主题

    241

    回帖

    761

    积分

    高级会员

    积分
    761
     楼主| 发表于 2021-12-23 12:08:36 | 显示全部楼层
    本帖最后由 lixiaofei 于 2021-12-23 12:23 编辑

    都配置好了以后,然后运行下面命令启动

    [ol]
  • ./openvidu start[/ol]复制代码


    此命令会拉取并启动相应服务的docker镜像,执行完毕后,用docker ps可以看出启动的容器





    启动完毕后,访问https://xxx.xxx.xxx.xxx:port验证服务器。

    如果打开看到下面的页面,说明成功了50%。





    然后在标签页多打开页面,都加入同样的房间,来测试效果。如果看到下面的画面,说明配置已经成功。





    与自己的系统集成

    openvidu提供了各种语言和框架的SDK,包含服务端和客户端,并且提供了大量的可以直接复制粘贴的例子来使用。只要把上面的服务配置好了,只需要花十几分钟,就可以集成到自己的系统中。

    官方例子提供的github地址是 https://github.com/OpenVidu/openvidu-tutorials

    提供的例子有





    下面是我在自己VUE项目中集成的效果图,核心代码都是直接复制的例子的。

    算了,还是不放自己项目的图了,反正就是集成起来很容易

    说的最后

    openvidu是一个非常优秀的开源视频会议服务器,腾讯云轻量服务器也是一个性价比非常高的服务器,两者的配合相得益彰。你们还知道有哪些类似的开源视频会议服务,也来推荐一下吧。

  • 回复

    使用道具 举报

    9

    主题

    157

    回帖

    543

    积分

    高级会员

    积分
    543
    发表于 2021-12-23 12:16:17 | 显示全部楼层
    虽然看不懂 但是技术贴帮顶
    回复

    使用道具 举报

    37

    主题

    416

    回帖

    1321

    积分

    金牌会员

    积分
    1321
    发表于 2021-12-23 12:19:22 | 显示全部楼层
    虽然看不懂,但是很厉害
    回复

    使用道具 举报

    39

    主题

    241

    回帖

    761

    积分

    高级会员

    积分
    761
     楼主| 发表于 2021-12-23 12:26:07 | 显示全部楼层

    度百 发表于 2021-12-23 12:19

    虽然看不懂,但是很厉害

    谢谢绑定


    回复

    使用道具 举报

    214

    主题

    1334

    回帖

    5550

    积分

    论坛元老

    积分
    5550
    发表于 2021-12-23 12:19:00 | 显示全部楼层
    8G内存能同时支持多少用户同时开会?之前装过Jitsi Meeting, 8个用户差不多16G内存都不太够,后来直接换成Zoom了
    回复

    使用道具 举报

    41

    主题

    368

    回帖

    1231

    积分

    金牌会员

    积分
    1231
    发表于 2021-12-23 12:27:41 | 显示全部楼层
    看起来好厉害、、、
    回复

    使用道具 举报

    39

    主题

    241

    回帖

    761

    积分

    高级会员

    积分
    761
     楼主| 发表于 2021-12-23 12:32:31 | 显示全部楼层
    本帖最后由 lixiaofei 于 2021-12-23 12:34 编辑

    shc 发表于 2021-12-23 12:27

    8G内存能同时支持多少用户同时开会?之前装过Jitsi Meeting, 8个用户差不多16G内存都不太够,后来直接换成Z ...


    也有官方的性能测试

    https://openvidu.medium.com/openvidu-load-testing-a-systematic-study-of-openvidu-platform-performance-b1aa3c475ba9

    看图,官方有说明



    回复

    使用道具 举报

    106

    主题

    812

    回帖

    2916

    积分

    金牌会员

    积分
    2916
    发表于 2021-12-23 12:32:54 | 显示全部楼层
    又见软文。局域网需求为什么在公网测试?
    回复

    使用道具 举报

    39

    主题

    241

    回帖

    761

    积分

    高级会员

    积分
    761
     楼主| 发表于 2021-12-23 12:27:00 | 显示全部楼层

    rem 发表于 2021-12-23 12:57

    又见软文。局域网需求为什么在公网测试?

    最终是在局域网中部署。前期测试的话,线上部署后方便和甲方一块测试
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-5-19 11:55 , Processed in 0.075206 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表