搭建Jitsi Meet视频会议服务器
目录
1、在线示例

在两个浏览器客户端输入同样的房间号之后,就可以开始视频会议了

2、下载安装
本次测试是在ubuntu 16.04的环境下进行的
首先,安装jitsi-meet
echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list
wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | apt-key add -
apt-get update
apt-get -y install jitsi-meet
安装过程中出现如下提示,这里填写局域网的ip地址

这里选择第一个,自动生成秘钥

安装完后,存在下面3个进程:



另外,还需要额外安装nginx
apt-get install nginx
编辑nginx的配置文件/etc/nginx/conf.d/default.conf, 将所有内容替换成/usr/share/doc/jitsi-meet-web-config/jitsi-meet.example,并将其中所有jitsi-meet.example.com的地方修改成之前安装jitsi-meet的时候输入的那个域名或ip,我这里配置的是192.168.10.16。改完之后的内容如下:
server_names_hash_bucket_size 64;
server {
listen 80;
server_name 192.168.10.16;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name 192.168.10.16;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA256:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EDH+aRSA+AESGCM:EDH+aRSA+SHA256:EDH+aRSA:EECDH:!aNULL:!eNULL:!MEDIUM:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SEED";
add_header Strict-Transport-Security "max-age=31536000";
ssl_certificate /etc/jitsi/meet/192.168.10.16.crt;
ssl_certificate_key /etc/jitsi/meet/192.168.10.16.key;
root /usr/share/jitsi-meet;
index index.html index.htm;
error_page 404 /static/404.html;
location /config.js {
alias /etc/jitsi/meet/192.168.10.16-config.js;
}
location /external_api.js {
alias /usr/share/jitsi-meet/libs/external_api.min.js;
}
location ~ ^/([a-zA-Z0-9=\?]+)$ {
rewrite ^/(.*)$ / break;
}
location / {
ssi on;
}
# BOSH
location /http-bind {
proxy_pass http://localhost:5280/http-bind;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
}
}
启动nginx
service nginx start
启动过程中报错
输入systemctl status nginx.service查看原因

提示443端口被占用,443端口是被刚才安装的jitsi-videobridge模块占用

这里我们的处理方法是,先关闭jitsi-videobridge模块,启动nginx,然后再次启动jitsi-videobridge模块,这时jitsi-videobridge模块就会改用4443端口。
service jitsi-videobridge stop
service nginx start
service jitsi-videobridge start
再次查看jitsi-videobridge的端口占用情况

在网页上输入ip地址后,就会出现前面的画面了

在两个浏览器客户端输入相同房间号,就可以进入视频会议了

3、存在的问题
搭完环境后,在测试的过程中发现了以下一系列问题需要解决的。
3.1 启动报错
启动jicofo,报如下的错误
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.proceedTLSReceived(XMPPTCPConnection.java:810)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.access$1200(XMPPTCPConnection.java:151)
at org.jivesoftware.smack.tcp.XMPPTCPConnection$PacketReader.parsePackets(XMPPTCPConnection.java:1071)
... 3 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
at sun.security.validator.Validator.validate(Validator.java:262)
at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:324)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:229)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:124)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
... 13 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
... 19 more
尝试了网上的一些方法,例如生成秘钥,添加到jdk security目录下面去,没有解决问题
3.2 无法进行多人视频
只能有两人进入视频会议,一旦超过两人,就无法显示声音和视频

3.3 外网无法进行音视频通信
在路由器上配置443端口对外开放后,访问公网的ip地址后,可以访问到主页,但是无法进行音视频通信,后续需要解决。
智能推荐
MC9S12XEP100的IIC模块(IICV3)
最近在写DS3231时钟芯片的驱动,这个芯片使用IIC进行通讯,以前没有用过IIC模块,照着教材和示例程序写程序后发现各种问题。没办法,还是官方数据手册靠谱,遂把相应部分又翻译了一遍。果然发现示例程序纯粹就是个玩具,一点用都没有。。。 第15章 集成电路总线(IICV3) 译者注:译者博客(http://blog.csdn.net/lin_strong),转载请保留这条。此为 MC9S12XEP1...
Eureka服务注册与发现
文章目录 二、SpringCLoud中遇到的技术 (一)、Eureka 1、功能: 2、什么是服务治理. 3、什么是服务注册与发现 4、Eureka包含两个组件: Eureka Server和Eureka Client 5、单机Eureka构建步骤 5.1 建model:cloud-eureka-server7001 5.2 写pom 5.3 写yml 5.4 主启动类 5.5 测试 5.6 将消...
Hard Problem【HDU-3551】【一般图最大匹配 带花树】
题目链接 题意:有N个点,M条边,给出每个点的度限制,问能不能用M条边中的几条达成这个目的? 很明显的就是一个建图的问题,很明显的,少于等于度为1的,是可以直接连的,不用限制增广,而大于度为1的,需要限制增广,就可以用这样的限流的方法: ...
idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null
idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: null 文章目录 idea 打包 报错maven-shade-plugin:2.4.3:shade (default) on project xxx : Error creating shaded jar: ...
猜你喜欢
大数据入门:Spark+Kudu的广告业务项目实战笔记(一)
1.简介 这是PK老师在Spark-SQL课程中的项目实战笔记 2.项目需求 数据ETL:原始文件为JSON格式数据,需原始文件与IP库中数据进行解析 统计各省市的地域分布情况 统计广告投放的地域分布情况 统计广告投放APP分布情况 3.项目架构 4.日志字段 5.IP规则库解析 本项目利用IP规则库进行解析,在生产中应该需要专门的公司提供的IP服务。IP规则库中的一条如下: 其中第三列是该段ip...
springBoot子项目中排除掉定义在Parent中的插件(Disable a Maven plugin defined in a parent POM)
最近在和别的项目集成,需要在我们的pom中添加上对方的parent,打包的时候就遇到了问题,对方在parent中添加了一个插件,干啥的就不说了, 反正人家是用到了, 我们是用不到,但是还给我们打包带来了一些问题。 这时候就必须排除掉对方这个插件了 1,第一种方法是 有的插件提供了不加载配置,例如: 如果不想用这个插件,就把skip标签配置成true,这样在构建的时候就不会使用这个插件了。 可是有的...
Flutter滑动隐藏头部
Flutter如何写出如下界面呢? NestedScrollView结合SliverAppBar,搞一个背景滑动放几个文字滑动还是可以玩一玩的。SliverAppBar上面显示title但是对于复杂的部件,能整死你,而去你没法解决它这个SliverAppbar的容量,那咋们自己写呗。这里我描述一下自己的做法,代码整理之后会贴出来。 一, 1. 对于滑动到顶部,TabBarView或者(法...
antd中头像上传前编辑antd-img-crop插件弹出modal没有样式的问题
在antd pro项目中,有一个头像上传前编辑的需求,在antd组件Upload中有一个上传前编辑的demo,用到一个antd-img-crop插件,用法很简单,只需要包裹Upload标签即可,具体API可以参考antd-img-crop的github地址 https://github.com/nanxiaobei/antd-img-crop 在使用过程中发现编辑弹出的modal框没有样式, 查阅...
Python----数据分析-maplotlib.初识pyplot模块
数据分析-maplotlib初识 matplotlib是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地行制图。其中,matplotlib的pyplot模块一般是最常用的,可以方便用户快速绘制二维图表。可视化有助于更好地分析数据并增强用户的决策能力。 假设一天2至24时温度如y所示,绘制样图: 未设置长宽大小: 设置长宽后: 设置步长为1: 设置步长为0....
