oneoffadmins.ansible_role_jitsi_meet
jitsi-meet
安装和配置Jitsi Meet视频会议软件。
要求
您应该已经将DNS指向服务器,并且有SSL密钥。如果您还没有域的SSL密钥,建议使用优秀的thefinn93.letsencrypt Ansible角色来获取(免费的!)SSL证书,来自LetsEncrypt。
您还需要开放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
# 如果Jitsi Videobridge在NAT后面,请设置这些值以使ICE工作。
jitsi_meet_videobridge_nat:
local_ip: ''
public_ip: ''
# 最近的隐私友好功能,详细信息见:
# 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使用。
# 如果您想通过单独的角色管理Web vhosts,请将其设置为false。
jitsi_meet_configure_nginx: true
屏幕共享
Jitsi Meet支持通过浏览器扩展进行屏幕共享功能。 仅需要共享屏幕的参与方安装扩展——其他会议参与者 无需安装任何软件即可查看共享屏幕。 您需要为Chrome和/或Firefox构建自己的浏览器扩展。 请参见Jidesha文档以获取详细的构建说明。此角色仅测试了自定义Chrome扩展。
Chrome禁止从未批准的网站安装扩展,因此您必须
直接下载.crx
文件,然后导航到chrome://extensions
并
拖放该扩展进行安装。如果您想为另一位参与者提供屏幕共享支持,请通过
Jitsi Meet的文本聊天面板与他们共享扩展的URL。
依赖项
这并不是技术上的依赖,但您应该查看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