搭建〖jitsi meet〗视频会议服务

前言

最终诉求,只允许纯域名访问,禁止〖IP + 端口〗访问,禁止〖域名+端口〗访问。若干关键节点。若不暴露宿主端口,尽管不存在两个“禁止”顾虑,可是除个别浏览器(火狐、360浏览器)之外其余浏览器均无法使用麦克风。若暴露容器 443 端口映射至宿主,则必须〖域名+端口〗才能使用麦克风。通过 Cloudflare Origin Rules 规则,可去除域名端口。常规修改 Nginx 配置实现 IP 访问返回 403 之方法,不适用于 jitsi meet docker 服务,只能通过自定义配置追加到生效配置中,才能实现 403 界面。

常规部署第 1 步

选定并进入目录,执行以下命令。

常规部署第 2 步

修改 .env 变量文件内容。其余未修改选项,保持默认。

常规部署第 3 步

修改 docker-compose.yml 端口,与官方文档不同在于不暴露 80 端口,只要 443 映射。通过 docker compose up -d 启动。解析第一个域名,指向 jitsi meet docker 所在服务器,反向代理即可〖域名+端口〗访问,同时可〖IP + 端口〗访问,额外注意,反代时需定义 https 路径,而不是 http 路径,且路径最后不带端口,若带端口会导致域名访问时,大部分浏览器麦克风不可用,反而〖域名 + 端口〗访问一切正常。至此常规部署结束。

自定义第 1 阶段

配置主持人验证,增加账号和密码。用来防止任何人在任何地方都可以无限制开启视频会议。

自定义第 2 阶段

设置必须输入名字方可进入会议,取消视频会议中 jitsi 水印字样。注意是在 /.jitsi-meet-cfg/web/ 路径新建配置文件。官方说是追加配置,经过测试,需要把全部配置项目复制到自定义 js 文件中,然后修改。执行 docker-compose restart web 命令使配置生效。

自定义第 3 阶段

要用到第二个域名,通过 Cloudflare Origin Rules 规则,去除第一个域名端口,具体方法是先定义第二个域名 DNS CNAME 记录指向第一个域名,添加一条 Origin 规则,端口选择 jitsi meet docker 服务所在端口。因为要禁止〖域名+端口〗访问,这样就只能通过 第二个域名 才能访问。

自定义第 4 阶段

进入路径 /.jitsi-meet-cfg/web/nginx 并新建 custom-meet.conf 文件,写入如下内容。阻止通过 IP 直接访问服务,执行 docker-compose restart web 命令。补充:这里还需要定义 ipv6 参数。至此,达成禁止〖IP + 端口〗访问、禁止〖域名+端口〗访问。

自定义第 5 阶段

主页左上角标志,以及主页底部移动端应用之推广,经过测验以及网络搜索后得知,需要自行构建,方可达到自定义效果。显然超出目前掌握范围,不再纠结。

总结

每个节点均耗费至少两天时间去摸索,无头苍蝇一般。中间几度想放弃,压根儿没方向,不知从何入手,不知如何向 ChatGPT 提问。异常痛苦及折磨!一点一点把 jitsi meet docker 相关配置丢进 ChatGPT ,经过异常痛苦之反复实验、印证、探索,先后通过三个 VPS 充当实验品,反复印证修改某一处或某几处配置是否可以左右最终效果,围绕多个层面去尝试,包括防火墙层面、反向代理层面、修改配置文件层面,以往之经验,均无效,若直接通过 VPS 服务商防火墙屏蔽固定端口,则所有途径均无法访问最终服务,甚至尝试,直接暴露宿主 443 端口去实验,如此这般,倒是省去反向代理和 Cloudflare 步骤,通过修改证书相关变量已经内置证书之获取,但根本诉求仍未解决,中途顺便把 seafile docker 配置加以优化,屏蔽 https://IP 访问,取而代之返回 403 界面。

所有尝试之结果,均毫无惊喜,均事与愿违。好在一步一步,大致解决方向逐渐清晰,只需要锁定最关键配置文件所在位置即可。最终在 /web/rootfs/etc/cont-init.d/10-config 找到如下代码。通过 ChatGPT 得知可以自定义 custom-meet.conf 并追加到 meet.conf 中。一语点醒梦中人,山重水复后、柳暗花明时。

THE END