JitsiMeet 中 Prosody 插件配置
在私有化部署 jitsi-meet 后,通过配置其中的 prosody 服务,可以实现更加多样化的功能,比如获取房间信息、获取房间用户信息、配置回调等等。
本文将简要介绍 prosody 插件系统,方便读者快速上手。
本文基于 docker 的安装方式来进行介绍
阅读本文时请保证有 JitsiMeet docker 部署及设置 jw 授权 相关知识作为前提。
简介
prosody 使用的插件为 lua 脚本,可用 lua 插件位于 jitsi-meet/resources/prosody-plugins,可以查看源代码理解其功能。
加载插件
prosody 的配置文件位于
prosody\rootfs\defaults\conf.d\jitsi-meet.cfg.lua
中。
插件注册
注册插件的格式如下,以 event_sync_component 为例:
1 | Component "event_sync.{{ $XMPP_DOMAIN }}" "event_sync_component" |
注意:这个方式需要重新编译 prosody 镜像文件,如果觉得麻烦,可以使用第 3 节中的在 docker 中使用自定义插件
Component 介绍:
在 Lua 中,Component
是 Prosody XMPP
服务器中的一个模块,用于定义一个组件(component)。组件是一种特殊类型的
XMPP 实体,可以与其他 XMPP 实体进行通信,但是它们通常不具有完整的 XMPP
功能。组件通常用于扩展 XMPP
服务器的功能,例如添加聊天室、文件传输等功能。
Component
模块用于定义一个组件,并将其添加到 Prosody
XMPP 服务器中。它接受一个 Lua 表作为参数,该表包含组件的配置信息。
在上例中,"event_sync.{{ $XMPP_DOMAIN }}"
表示注册的模块的名称,"event_sync_component"
表示组件的名称,组件名称为组件定义的文件名
mod_event_sync_component.lua
的中间部分。
插件变量
插件中通过 module:get_option("api_headers")
来获取
jitsi-meet.cfg.lua 中定义的变量。例:
1 | local api_timeout = module:get_option("api_timeout", 20); |
在 jitsi-meet.cfg.lua 中通过 “{{.Env.fieldName}}”
的方式来获取 .env 文件中定义的变量,注意引号不要丢。例:
1 | external_service_secret = "{{.Env.TURN_CREDENTIALS}}"; |
特别注意:修改
jitsi-meet.cfg.lua
内容并不会生效,因为重启 docker 后会重置这个配置文件,该文件仅作为一个参考,仅在.env
文件中的修改才会生效。
在 docker 中使用自定义的插件
若使用 docker 安装 jitsi-meet,每当 prosody 服务重启后都会重置
conf.d\jitsi-meet.cfg.lua
文件,因此无法在
jitsi-meet.cfg.lua
文件中通过 Component
的方式来注册插件。
可以使用以下的方法来解决:
- 将自定义插件保存到
.jitsi-meet-cfg\prosody\prosody-plugins-custom
目录中,这个目录被 prosody 所挂载 - 修改插件的源文件,使其中的参数符合自己的使用环境
- 在
.env
文件中使用XMPP_MUC_MODULES=event_sync_component
来启用event_sync_component
插件
在 docker 中修改插件
使用 docker 安装后,如果需要修改 docker 中的 prosody 插件,可以通过以下步骤修改:
打开 docker,切换到【Container】,进入到
prosody
容器中找到【Files/prosody-plugins】,找到想要修改的插件,双击修改并保存,然后重启容器即可应用修改
参考
jitsi-meet/resources/prosody-plugins at master · jitsi/jitsi-meet · GitHub
Third-Party Software | Jitsi Meet
jitsi-contrib/prosody-plugins: Prosody plugins for Jitsi (github.com)