Jitsi安装部署
官方部署指导
自动化一键部署: https://github.com/jitsi/jitsi-meet/blob/master/doc/quick-install.md
自定义手工部署:https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md
完整的Jitsi部署图
1 | + + |
准备工作
- 一台云虚拟机,配置要求至少“2u4g,5Mbps公网带宽”,系统为ubuntu(建议16.10, 低版本需要额外配置openjdk)
- 一个可用的域名,以下步骤均以“example.com”为例,需要绑定到上述虚拟机(此步骤参考云服务商配置文档)
步骤一:软件源地址配置
1 配置jitsi官方源地址
1 | echo 'deb https://download.jitsi.org stable/' >> /etc/apt/sources.list.d/jitsi-stable.list |
2 配置openjdk源地址(系统为ubuntu 14.04版本时需要)
1 | add-apt-reposotory ppa:openjdk-r/ppa |
3 更新软件源缓存
1 | apt-get update |
步骤二:安装配置Nginx
安装:
1 | apt-get -y install nginx |
配置:
1 新增nginx配置文件
1 | touch /etc/nginx/sites-available/example.com |
2 修改nginx主配置文件/etc/nginx/nginx.conf,包含新增的配置
1 | # 去除行首的注释标记 |
3 参考如下文件配置,将其中的网址”jitsi-meet.example.com”均替换为自己准备的域名”example.com”
https://github.com/jitsi/jitsi-meet/blob/master/doc/debian/jitsi-meet/jitsi-meet.example
注意,如果使用自动化安装,必须在安装jitsi-meet之前安装nginx。否则自动化脚本未检测到nginx时会将自己配置为使用自带的jetty作web容器的运行模式,不利于后续的部署。
步骤三:安装jitsi-meet
1 | apt-get -y install jitsi-meet |
1 安装过程中会弹出两次配置输入窗口:
a. 要求配置hostname:此处填写前面已经准备好的域名,比如“example.com”
b. 询问是否自动创建证书:此处按默认回车生成即可,后面会通过脚本重新替换掉证书
2 重启下xmpp服务器
service prosody restart
步骤四:创建公网证书
上述安装步骤默认生成的证书在公网上访问是不可信的,jitsi的app也会因此无法成功连上我们自己部署的服务器。按照如下步骤可以从“letsencrypt”临时申请到一套可信的公网证书:
1 停止nginx服务(后续申请步骤需要使用到80端口)
1 | service nginx stop |
2 执行脚本申请公网证书
1 | /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh |
生成的证书位置:/etc/letsencrypt/live/example.com/
3 检查nginx的证书配置
查看nginx配置文件(/etc/nginx/sites-enabled/example.com)内的证书路径是否正确,如果不对则手工修改为如下配置
1 | ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; |
4 启动nginx服务
1 | service nginx start |
5 证书自动更新配置
从letsencrypt申请的证书默认有效期是90天,修改或新增脚本/etc/cron.weekly/letsencrypt-renew,以便自动更新申请新的证书,脚本内容如下:
1 |
|
可以通过如下命令能否执行成功测试证书更新功能是否生效:
1 | certbot-auto renew --dry-run --webroot -w /usr/share/jitsi-meet |
步骤五:配置ICE NAT穿透
在公有云上部署时,虚拟机的内外部网络是有NAT隔离的,需要按照如下步骤配置jitsi-videobridge才能正常进行视频流传输:
在配置文件/etc/jitsi/videobridge/sip-communicator.properties中增加如下配置:
1 | org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=<Local.IP.Address> |
其中<Local.IP.Address>为虚拟机内网本机IP地址,<Public.IP.Address>为公有云分配的公网IP地址。配置完成后需要重启下jitsi-videobridge:
1 | service jitsi-videobridge restart |
步骤六:配置STUN服务器
在P2P场景下,需要配置STUN服务器以便实现客户端的NAT穿越、直连。默认jitsi-meet使用的STUN服务器是google的,在国内使用时经常遇到连接问题,需要修改配置文件/etc/jitsi/meet/example.com-config.js,找到stunServers配置项,在前面新增如下两个服务器配置:
1 | { urls: 'stun:stun.freeswitch.org' }, |
修改后的配置:
1 | // The STUN servers that will be used in the peer to peer connections |
说明:实际生产、发布环境需要独立部署stun/turn服务器以便实现P2P穿透或转发。
附: WebRTC的P2P连接过程:
- 尝试直连.
- 直连失败则通过stun服务器进行穿透后直连.
- 无法穿透则通过turn服务器中转视频流.(需要消耗较多服务器端资源)
步骤七:配置公有云端口映射策略
由于安全原因,公有云默认是限制了端口访问的。为了能够正确在公有云上使用jitsi进行视频传输,至少需要开启如下端口的访问权限:
类型 | 协议 | 端口/范围 | 描述 |
---|---|---|---|
IPv4 | TCP | 443 | HTTPS默认端口: 1. jitsi-meet页面资源加载 2. xmpp服务的BOSH接入 |
IPv4 | UDP | 10000-20000 | RTP/RTCP连接:WebRTC客户端和服务端SFU(jitsi-videobridge)之间的视频流传输 |
IPv4 | TCP | 4443 | UDP不可用时jitsi-videobridge的备用接入端口 |
以华为云为例,进入“控制台”->”服务列表”->”弹性公网IP”->”安全组”,选择部署用的虚拟机已绑定的安全组策略,按照如下示例图配置端口:
基本功能验证
至少需要验证如下两种场景下的视频传输功能:
- 验证两客户端接入时p2p功能。
- 验证三个及以上客户端接入时jitsi-videobridge视频分发功能。
使用chrome浏览器或APP打开地址”https://example.com",填写房间号即可接入对应的视频聊天。分别使用不同数量的客户端接入同一个房间,以便验证上述场景下协议是否都已经正确配通。
成功安装后的环境说明
配置文件路径
一般安装上述步骤安装后的环境即是可用的;如需要自己修改或定制配置,可在如下路径找到相关部件的配置文件
1
2
3
4jicofo:/etc/jitsi/jicofo
jitsi-videobridge: /etc/jitsi/videobridge
jitsi-meet: /etc/jitsi/meet
xmpp: /etc/prosody/日志文件路径
部署的环境在使用过程中有任何功能性的问题,可以查看如下日志进行定位:
1
2
3Jitsi-videobridge:/var/log/jitsi/jvb.log
Jicofo: /var/log/jitsi/jicofo.log
xmpp服务: /var/log/prosody/prosody.err、/var/log/prosody/prosody.log
卸载重装
如果需要重装jitsi以便重新配置或恢复环境,可以执行如下命令进行卸载
1 | apt-get purge jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge |
备注:卸载过程中如果遇到错误,只需要等待几秒后重新执行上述命令,直到没有错误即可。
FAQ:
两个客户端接入时正常,三个人接入时无视频流
上述问题往往是jitsi-videobridge客户端配置错误导致: 原因是双方接入时默认走的P2P,不经过videobridge部件。而三个或更多人接入时必须走videobridge进行视频分发。
错误配置1:
未按上述步骤五正确配置ICE NAT穿透,导致客户端无法连接到videobridge。建议检查/etc/jitsi/videobridge/sip-communicator.properties是否配置正确
错误配置2:
操作系统未正确配置hosts,此问题较为隐蔽,会导致videobridge功能不可用。建议检查/etc/hosts文件内是否有本机IP地址对应的配置,如果没有则自己添加下
- 本文链接:https://blog.springfavor.cn/2018/10/22/Jitsi安装部署/
- 版权声明:The author owns the copyright, please indicate the source reproduced.