在群晖上搭建专属的视频会议
什么是Jitsi?
Jitsi is a collection of Open Source projects which provide state-of-the-art video conferencing capabilities that are secure, easy to use and easy to self-host.
前言
新冠的肆虐让视频会议系统受到关注,使得 Zoom 用户数量激增,从去年12月每日用户才1000万,到今年3月已经增长到2亿。对于许多公司而言,使用 Zoom 之类的工具是正确的做法,但是 Zoom 接连不断的爆出数据泄露事件,因此对于资金短缺或更注重信息安全的公司而言,Jitsi 可能才是远程沟通的理想手段。
Jitsi Meet 采用了 Java 语言开发,是开源的视频会议系统,基于 WebRTC、React、XMPP 等成熟的开源技术。 它能够独立部署,也可以方便整合到业务系统中。
最重要的是其采用了端到端的加密方式(end-to-end encryption),每个人密钥都不相同,有几个人参会就有几组密钥,视频内容都是在本地完成加密和解密,有着较高的安全性。
加上
- 代码开源
- 自己搭建
所以理论上 Jitsi 会有更高的安全性。
系统架构
根据官网的描述(https://jitsi.github.io/handbook/docs/architecture),Jitsi包含一系列项目:
Jitsi Meet
兼容 WebRTC 的 JavaScript 前端应用程序,使用 Jitsi Videobridge 来提供高质量,可扩展的视频会议。
Jitsi Videobridge(jvb)
兼容WebRTC的服务器,旨在在会议参与者之间实现视频数据路由。
Jitsi Conference Focus(jicofo)
Jitsi Meet会议中使用的服务器端 focus 组件,用于会议室(房间)管理,管理参与者和 jvb 之间的会话。
Jitsi Gateway to SIP(jigasi)
服务器端应用程序,允许常规SIP客户端加入Jitsi Meet会议
Jibri
直播/录播的工具,基于ffmpeg实现会议画面的捕捉和编码。如果有多个会议室需要录制/直播,需要部署多台 Jibri。
Prosody
XMPP信令服务器,Jitsi使用的外部软件,负责各组件间的消息交换。
(官网的架构图)
产品特点
无限用户
用户或会议参与者的数量没有人为限制。服务器性能和带宽是唯一的限制因素。
无需帐户
不用注册账号也能使用
会议室锁定
使用密码控制对会议的访问。
默认加密
采用了端到端的加密方式
高质量
音频和视频以Opus和VP8的清晰度和丰富性提供。
无需客户端
可以使用 Web 浏览器,无需下载即可加入对话。只需与其他人共享您的会议 URL 即可开始。
100%开源
由来自世界各地的杰出社区提供支持。
通过URL邀请:您可以在自己喜欢的易于记忆的
https://meet.mydomain.com/自定义会议室名称
会议上见面(例如:https://meet.mydomain.com/OurConf ),而不必将由数字和字母组成的随机序列加入难以记忆的房间中。
安装
首先需要下载 https://github.com/jitsi/docker-jitsi-meet/archive/master.zip
因为我的 docker 安装在「存储空间1」,所以我把文件上传并解压到了 /volume1/docker
用SSH客户端连到群晖。
1 | # 进入解压出来的目录 |
编辑 .env
文件,将 CONFIG=~/.jitsi-meet-cfg
修改为 CONFIG=/volume1/docker/docker-jitsi-config
取消下面几行前面的#号注释,使之生效
1 | # 启用身份验证 |
并按照自己的实际设置以下内容:
1 | # 避免冲突将 80 改成了 5080 |
接下来就可以产生和运行你的 docker 容器了,4个镜像差不多 1G 的大小,所以时间取决于你的网速。
1 | docker-compose up -d |
依次会下载 jitsi/web:latest
、 jitsi/prosody:latest
、jitsi/jicofo:latest
、jitsi/jvb:latest
。
回到 Docker 管理器,我们会看到这四个容器已经启动了
这个时候在浏览器输入 http://192.168.X.X:5080
,可以看到下面的界面
但是在http协议下,摄像头和麦克风是不能使用的
需要https才可以,在浏览器输入 https://192.168.X.X:5443
设置
设置反向代理
「控制面板」–>「Synology应用程序门户」–>「反向代理服务器」–> 「新增」
上传ssl证书
「控制面板」–>「安全性」–>「证书」–>「新增」
创建账号
因为前面我们启用了身份验证,所以需要注册用户
1 | # 首先exec到容器内 |
现在我们可以正式使用了,开启一个新的会议后,会提示等待主持人
会议室的主界面,非常的清爽
客户端
除了网页外,官网提供了Android和iOS平台的移动客户端,如果你需要Wndows或者其他平台的桌面客户端,可以参考我之前写的《把网页打包成桌面应用程序》,自己打包一个。
在手机上收到邀请链接会要求下载客户端
后续
如果你在后续更改了任何 .env
内的配置,假设不想用身份验证了想取消掉,那么要使新的配置生效的话,步骤依次是:
1 | # 停止并删除容器、网络、卷、镜像 |
参考文档
官网主页
地址:https://jitsi.org/Jitsi Meet on Docker
地址:https://github.com/jitsi/docker-jitsi-meetJitsi private video conferencing on synology NAS
地址:https://www.virtualconfusion.net/jitsi-meeting-conference-on-synology-nas/How to install Jitsi Meet on your QNAP server
地址:https://medium.com/swlh/how-to-install-jitsi-meet-on-your-qnap-server-6cc8824b957bJitsi Meet:开源的视频会议系统
地址:https://lala.im/7092.html开源架构解析|视频会议系统 Jitsi Meet
地址:https://liulantao.com/jitsi-meet.html