freedomofpress.jitsi-meet
jitsi-meet
安装和配置 Jitsi Meet 视频会议软件。
要求
您需要将 DNS 指向服务器,并需要 SSL 密钥。如果您还没有该域名的 SSL 密钥,建议使用优秀的 thefinn93.letsencrypt Ansible 角色从 LetsEncrypt 获取(免费的)SSL 证书。
您还需要开放 TCP 443 端口和 UDP 10000 端口,以便 Jitsi Meet 组件正常工作。默认情况下,该角色将使用 ufw
来允许这些端口。如果您使用其他基于主机的防火墙解决方案,比如 iptables,请设置 jitsi_meet_configure_firewall: false
。如果您使用 AWS 或类似服务,您需要在相关的安全组中开放这些端口。
角色变量
# 默认证书文件为 /var/lib/prosody/localhost.{crt,key}
# 此处不设置,因为自定义证书的空字符串会导致自定义的 Nginx 配置任务被跳过。
jitsi_meet_ssl_cert_path: ''
jitsi_meet_ssl_key_path: ''
# 如果没有 SSL,"localhost" 是正确的默认值。如果提供了 SSL 信息,
# 则我们需要一个真实的域名。使用 Ansible 推断的 FQDN,但如果您使用较短的主机名,
# 您可以显式设置变量值。如果禁用自动 Nginx 配置,也要使用 FQDN,因为可能
# 另一个角色会管理 vhost 配置。
jitsi_meet_server_name: "{{ ansible_fqdn if (jitsi_meet_ssl_cert_path or not jitsi_meet_configure_nginx) else 'localhost' }}"
# 仅支持“匿名”身份验证,允许任何人使用视频会议服务器。
jitsi_meet_authentication: anonymous
# Debian 软件包安装 jitsi-meet 时会为组件生成密钥。
# 该角色会读取配置文件,并在模板化时保留密钥。
# 如果希望生成自己的密钥并使用这些密钥,请覆盖这些变量,
# 但请确保安全存储密钥,例如使用 ansible-vault 或 credstash。
jitsi_meet_videobridge_secret: ''
jitsi_meet_jicofo_secret: ''
jitsi_meet_jicofo_password: ''
# 默认的身份验证信息,在多个服务模板中使用。
jitsi_meet_jicofo_user: focus
jitsi_meet_jicofo_port: 5347
# 默认配置文件位于 /etc/jitsi/videobridge/config ,声称 JVB 默认端口为 "5275",
# 但手动安装指南提到 "5347"。
# https://github.com/jitsi/jitsi-meet/blob/master/doc/manual-install.md
jitsi_meet_videobridge_port: 5347
# 最近的隐私友好功能,详情请参见:
# https://github.com/jitsi/jitsi-meet/issues/422
# https://github.com/jitsi/jitsi-meet/pull/427
jitsi_meet_disable_third_party_requests: true
# Chrome 的屏幕共享配置。您需要为您的域构建并打包一个浏览器扩展;
# 参见 https://github.com/jitsi/jidesha
jitsi_meet_desktop_sharing_chrome_method: 'ext'
jitsi_meet_desktop_sharing_chrome_ext_id: 'diibjkoicjeejcmhdnailmkgecihlobk'
# 本地扩展在磁盘上的路径,用于复制到目标主机。远程文件名
# 将是此处提供路径的基本名。
jitsi_meet_desktop_sharing_chrome_extension_filename: ''
# Firefox 的屏幕共享配置。如果希望在 Firefox 下使用屏幕共享,
# 请将 max_version 设置为 '42',并将 disabled 设置为 'false'。
jitsi_meet_desktop_sharing_firefox_ext_id: 'null'
jitsi_meet_desktop_sharing_firefox_disabled: true
jitsi_meet_desktop_sharing_firefox_max_version_ext_required: '-1'
# 这些 debconf 设置表示 jitsi-meet deb 包安装过程中
# 对交互式提示的回答。如果您使用自定义 SSL 证书,可能需要设置更多选项。
jitsi_meet_debconf_settings:
- name: jitsi-meet
question: jitsi-meet/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-meet
question: jitsi-meet/jvb-serve
value: "false"
vtype: boolean
- name: jitsi-meet-prosody
question: jitsi-meet-prosody/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
# 角色将自动安装并配置 ufw 以开放 jitsi-meet 端口。
# 如果您以其他方式管理防火墙,请将此设置为 false,ufw 将被跳过。
jitsi_meet_configure_firewall: true
# 角色将自动安装 nginx 并配置 vhost 以供 jitsi-meet 使用。
# 如果您希望通过单独的角色管理网页 vhost,请将此设置为 false。
jitsi_meet_configure_nginx: true
屏幕共享
Jitsi Meet 支持通过浏览器扩展的屏幕共享功能。 只有共享屏幕的一方需要安装扩展——其他参会者可以无需安装任何东西即可查看共享的屏幕。 您需要为 Chrome 和/或 Firefox 构建自己的浏览器扩展。 请参见 Jidesha 文档以获取详细构建说明。该角色 仅在自定义 Chrome 扩展上进行了测试。
Chrome 禁止从未批准的网站安装扩展,因此您必须
直接下载 .crx
文件,然后导航到 chrome://extensions
并拖放扩展以进行安装。如果您想给另一个
参与者提供屏幕共享支持,可以通过 Jitsi Meet 文本聊天窗格与他们共享扩展的 URL。
依赖关系
这 technically 不是一个依赖关系,但您应该查看 thefinn93.letsencrypt 以获取极其简单的 SSL 证书。
示例剧本
包括一个如何使用您角色的示例(例如,传入参数的变量)对于用户来说总是很好的:
- name: 配置 jitsi-meet 服务器。
hosts: jitsi
vars:
# 将此更改为与主机 IP 的 DNS 条目匹配。
jitsi_meet_server_name: meet.example.com
roles:
- role: thefinn93.letsencrypt
become: yes
letsencrypt_email: "webmaster@{{ jitsi_meet_server_name }}"
letsencrypt_cert_domains:
- "{{ jitsi_meet_server_name }}"
tags: letsencrypt
- role: ansible-role-jitsi-meet
jitsi_meet_ssl_cert_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/fullchain.pem"
jitsi_meet_ssl_key_path: "/etc/letsencrypt/live/{{ jitsi_meet_server_name }}/privkey.pem"
become: yes
tags: jitsi
运行测试
该角色使用 Molecule 和 ServerSpec 进行测试。使用方法:
pip install molecule
gem install serverspec
molecule test
您还可以运行选择性的命令:
molecule idempotence
molecule verify
更多信息请查看 Molecule 文档。
许可证
MIT