jitsi_meet
jitsi-meet
Устанавливает и настраивает видеоконференцсистему Jitsi Meet.
Требования
У вас уже должен быть настроен DNS на сервер и SSL-ключи. Если у вас еще нет SSL-ключей для домена, рассмотрите возможность использования geerlingguy.certbot для получения бесплатных SSL-сертификатов от LetsEncrypt.
Также вам нужно будет раскрыть порты 443 TCP и 10000 UDP, чтобы компоненты Jitsi Meet могли работать. Эта роль может использовать ufw
для разрешения этих портов, установив jitsi_meet_configure_firewall: true
. Если вы используете другое решение для брандмауэра, например iptables, установите jitsi_meet_configure_firewall: false
. Если вы используете AWS или подобное, вам нужно будет открыть эти порты в соответствующей группе безопасности.
Переменные роли
########################################
###### самые важные переменные ########
# и которые вы должны адаптировать под свой случай #
########################################
# Без SSL, "localhost" - это правильный по умолчанию. Если предоставлена информация SSL,
# тогда нам нужно настоящее имя домена. Мы используем FQDN, но вы
# можете установить значение переменной явно, если используете более короткое имя хоста.
# Если автоматическая конфигурация Nginx отключена, также используйте FQDN, поскольку
# предполагается, что другая роль будет управлять конфигурацией виртуального хоста.
jitsi_meet_server_name: "{{ ansible_fqdn | default('localhost') }}"
# Примечание из официальной документации:
# Установщик проверит, присутствует ли Nginx или Apache (в этом порядке) и настроит
# виртуальный хост в веб-сервере, который он найдет, чтобы обслуживать Jitsi Meet. Если ни один из вышеуказанных
# не найден, по умолчанию используется Nginx. Если у вас уже работает Nginx на порту 443 на
# той же машине, лучше пропустить конфигурацию turnserver, так как это будет конфликтовать с
# вашим текущим портом 443, поэтому используйте команду apt install --no-install-recommends jitsi-meet
jitsi_meet_install_recommends: yes
# Если (jitsi_meet_install_recommends == no), turnserver не будет установлен и доступен
jitsi_meet_use_stun_turn: false
# STUN-серверы, которые будут использоваться в одноранговых соединениях
jitsi_meet_stun_servers:
- 'meet-jit-si-turnrelay.jitsi.net:443'
# - '{{ jitsi_meet_server_name }}:443'
# Включить режим p2p
jitsi_meet_enable_p2p_mode: true
# Настроить nginx и jitsi-meet для прослушивания также IPv6
jitsi_meet_ipv6_enable: true
# Позволяет вам указать установку jitsi meet с созданием и настройкой
# самоподписанных HTTPS-сертификатов, которые позже могут быть заменены сертификатами Let's Encrypt
jitsi_meet_cert_choice: "Сгенерировать новый самоподписанный сертификат (позже вы получите возможность получить сертификат Let's Encrypt)"
# Из-за поведения скриптов установщика Jitsi рекомендуется сохранять это значение, даже если вы
# планируете использовать свои собственные сгенерированные сертификаты (например). с certbot. Вы можете сделать это из этой роли
# НЕ устанавливайте их здесь, потому что пустые строки для пользовательских сертификатов приведут
# к пропуску пользовательских задач конфигурации Nginx.
jitsi_meet_ssl_cert_path: ''
jitsi_meet_ssl_key_path: ''
#############
### NGINX ###
# Эта роль автоматически настроит виртуальный хост Nginx для использования с jitsi-meet.
# Если вы предпочитаете управлять веб-виртуальными хостами через отдельную роль, установите это значение на false.
jitsi_meet_configure_nginx: true
# Если хотите, вы можете использовать свой собственный шаблон jitsi_meet_nginx.conf.j2, указав другой путь
jitsi_meet_nginx_config_template: "jitsi_meet_nginx.conf.j2"
###########################################
# другие полезные переменные для настройки #
# установки, но менее часто используемые #
###########################################
# Установка пакета Debian jitsi-meet сгенерирует секреты для компонентов.
# Роль прочитает файл конфигурации и сохранит секреты даже во время темплейтинга.
# Если вы хотите сгенерировать свои собственные секреты и использовать их, переопределите эти переменные, но
# убедитесь, что вы храните секреты безопасно, например, с помощью ansible-vault или credstash.
jitsi_meet_videobridge_secret: ''
jitsi_meet_jicofo_secret: ''
jitsi_meet_jicofo_password: ''
##################
### APT вещи ###
# Список пакетов, которые необходимо установить перед установкой jitsi meet
jitsi_meet_base_packages:
- apt-transport-https
- debconf
- debconf-utils
# Использовать ли ночные сборки компонентов Jitsi Meet.
jitsi_meet_use_nightly_apt_repo: false
jitsi_meet_apt_repos:
stable:
repo_url: 'deb https://download.jitsi.org/ stable/'
unstable:
repo_url: 'deb https://download.jitsi.org unstable/'
jitsi_meet_apt_key_url: 'https://download.jitsi.org/jitsi-key.gpg.key'
jitsi_meet_apt_key_id: '66A9CD0595D6AFA247290D3BEF8B479E2DC1389C'
# Эти настройки debconf представляют собой ответы на интерактивные запросы во время установки
# deb-пакета jitsi-meet. Если вы используете пользовательские SSL сертификаты, вам может потребоваться установить больше опций.
jitsi_meet_debconf_settings:
- 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
- name: jitsi-videobridge
question: jitsi-videobridge/jvb-hostname
value: "{{ jitsi_meet_server_name }}"
vtype: string
- name: jitsi-meet-web-config
question: jitsi-meet/cert-choice
value: "{{ jitsi_meet_cert_choice }}"
vtype: select
- name: jitsi-meet-web-config
question: jitsi-meet/cert-path-key
value: "{{ jitsi_meet_ssl_key_path }}"
vtype: string
- name: jitsi-meet-web-config
question: jitsi-meet/cert-path-crt
value: "{{ jitsi_meet_ssl_cert_path }}"
vtype: string
#######################
### Брандмауэр сервера ###
# Эта роль может автоматически установить и настроить ufw с отверстиями для портов jitsi-meet, установив эту переменную на true.
# Если вы управляете брандмауэром иначе, держите значение false, и задачи ufw будут пропущены.
jitsi_meet_configure_firewall: false
# ПРЕДУПРЕЖДЕНИЕ: до версии 2.0.0 этой роли также был открыт порт SSH (22/tcp).
# Эта роль сосредоточена на настройке Jitsi Meet, поэтому, чтобы избежать пересечения с остальными
# вашими ролями/playbook'ами, значения по умолчанию будут только необходимые порты для Jitsi
jitsi_meet_firewall_ports_allow:
tcp:
# - "22" # SSH
- "80" # HTTP / Lets Encrypt
- "443" # HTTPS
udp:
- "10000" # Videobridge
### Другой брандмауэр
# Это настроит NAT-соединение для Jitsi Meet
jitsi_meet_behind_nat_firewall: false
jitsi_meet_nat_private_ip: 127.0.0.1
jitsi_meet_nat_public_ip: 255.255.255.255
##############
### Jicofo ###
# Стандартная информация для аутентификации, используемая в нескольких шаблонах службы.
jitsi_meet_jicofo_user: focus
jitsi_meet_jicofo_port: 5347
# Компоненты Jitsi используют стандартные уровни логирования Java, смотрите:
# https://docs.oracle.com/javase/7/docs/api/java/util/logging/Level.html
# При использовании агрегирования логов для компонентов jitsi-meet установите значение "WARNING".
jitsi_meet_jicofo_loglevel: INFO
# Если хотите, вы можете использовать свой собственный jinja config шаблон, указав другой путь
jitsi_meet_jicofo_config_template: jicofo_config.j2
jitsi_meet_jicofo_sip_template: jicofo_sip-communicator.properties.j2
###################
### Videobridge ###
# Файл конфигурации по умолчанию в /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_meet_videobridge_loglevel: INFO
jitsi_meet_videobridge_opts: '--apis=,' # список через запятую '--apis=rest,'
jitsi_meet_videobridge_statistics_enable: true
jitsi_meet_videobridge_statistics_interval: 1000
jitsi_meet_videobridge_statistics_transport: 'muc' # список через запятую: 'muc,colibri,xmpp'
# Настройте обратный прокси для публикации colibri/stats через HTTPS
# https://{{ jitsi_meet_server_name }}/colibri/stats
# ВЫ ТАКЖЕ ДОЛЖНЫ ВКЛЮЧИТЬ 'rest' в jitsi_meet_videobridge_opts и
# 'colibri,xmpp' в jitsi_meet_videobridge_statistics_transport
jitsi_meet_expose_colibri_stats: false
# (Словарный тип) Учетные данные других серверов для включения режима MUC (Multi User Chat).
# https://github.com/jitsi/jitsi-videobridge/blob/master/doc/muc.md#legacy-videobridge-configuration
jitsi_meet_videobridge_other_xmpp_servers: {}
# xmppserver1:
# hostname: example.net
# domain: auth.example.net
# username: jvb
# password: $PASSWORD
# muc_jids: [email protected]
# muc: [email protected]
# muc_nickname: уникальный-id-экземпляра
# # отключить_проверку_сертификата: true
# Если хотите, вы можете использовать свой собственный jinja config шаблон, указав другой путь
jitsi_meet_videobridge_config_template: videobridge_config.j2
jitsi_meet_videobridge_sip_template: videobridge_sip-communicator.properties.j2
############
### Meet ###
# "anonymous" позволяет любому использовать сервер видеоконференций.
jitsi_meet_authentication: anonymous
# Дружественная к конфиденциальности добавка, смотрите здесь для деталей:
# https://github.com/jitsi/jitsi-meet/issues/422
# https://github.com/jitsi/jitsi-meet/pull/427
jitsi_meet_enable_third_party_requests: true
# Настройки общего доступа к экрану для Chrome. Вам нужно будет создать и упаковать расширение браузера
# специально для вашего домена; смотрите https://github.com/jitsi/jidesha
jitsi_meet_desktop_sharing_chrome_method: 'ext'
jitsi_meet_enable_desktop_sharing_chrome: true
jitsi_meet_desktop_sharing_chrome_ext_id: 'diibjkoicjeejcmhdnailmkgecihlobk'
# Путь к локальному расширению на диске для копирования на целевой хост. Удаленное имя файла
# будет базовым именем предоставленного здесь пути.
jitsi_meet_desktop_sharing_chrome_extension_filename: ''
# Настройки общего доступа к экрану для Firefox. Установите max_version на '42' и disabled на 'false'
# если вы хотите использовать общий доступ к экрану в Firefox.
jitsi_meet_desktop_sharing_firefox_ext_id: 'null'
jitsi_meet_enable_desktop_sharing_firefox: true
jitsi_meet_desktop_sharing_firefox_max_version_ext_required: '-1'
jitsi_meet_channel_last_n: -1
jitsi_meet_enable_layer_suspension: false
jitsi_meet_start_audio_only: false
jitsi_meet_show_audio_levels: false
jitsi_meet_audio_levels_interval: 200
jitsi_meet_resolution: 480
jitsi_meet_constraints_video_aspect_ratio: "16 / 9"
jitsi_meet_constraints_video_height_ideal: "{{ jitsi_meet_resolution }}"
jitsi_meet_constraints_video_height_max: 720
jitsi_meet_constraints_video_height_min: 240
# Если хотите, вы можете использовать свой собственный jinja config шаблон, указав другой путь
jitsi_meet_config_js_template: jitsi_meet_config.js.j2
jitsi_meet_interface_config_js_template: interface_config.js.j2
###################
### SIP шлюз ###
jitsi_meet_configure_sip_gateway: false
jitsi_meet_jigasi_account: [email protected]
jitsi_meet_jigasi_password: fdi49fndKjhe3
########################
### Настройка интерфейса ###
jitsi_meet_customize_the_ui: false
jitsi_meet_lang: 'en'
jitsi_meet_appname: 'Имя моего приложения'
jitsi_meet_org_link: 'https://link-to-my-organization.com'
jitsi_meet_welcomepage_title: 'Безопасные, полностью функциональные и абсолютно бесплатные видеоконференции'
jitsi_meet_welcomepage_description: 'Давайте, видеочат с всей командой. На самом деле, пригласите всех, кого вы знаете. __app__ — это полностью зашифрованное, 100% открытое решение для видеоконференций, которое вы можете использовать весь день, каждый день, бесплатно — без необходимости в учетной записи.'
# По умолчанию это пустая строка, так как CSS-файл является объединенным файлом для
# всего сайта, и он меняется очень часто с каждым релизом. Он будет
# заменен только в том случае, если у вас есть пользовательский CSS-файл и вы укажете его путь в этой переменной
jitsi_meet_css_file: ''
jitsi_meet_welcome_page_additions_file: welcomePageAdditionalContent.html.j2
jitsi_meet_title_template: title.html.j2
jitsi_meet_favicon_file: images/favicon.ico
jitsi_meet_logo_file: images/jitsilogo.png
jitsi_meet_watermark_file: images/watermark.png
jitsi_meet_default_background: '#474747'
jitsi_meet_show_video_background: true
jitsi_meet_default_remote_display_name: 'Уважаемый Jitster'
jitsi_meet_default_local_display_name: 'я'
jitsi_meet_generate_roomnames_on_welcome_page: true
jitsi_meet_lang_detection: false # Разрешите i18n обнаружить язык системы
Совместный доступ к экрану
Jitsi Meet поддерживает функцию совместного доступа к экрану через расширения браузера. Только стороне, делящей экран, нужно установить расширение — другие участники встречи смогут видеть общий экран без установки чего-либо. Вам потребуется создать собственное расширение браузера для Chrome и/или Firefox. Смотрите документацию Jidesha для подробных инструкций по сборке. Эта роль была протестирована только с пользовательскими расширениями Chrome.
Chrome запрещает установку расширений с неподтвержденных сайтов, поэтому вам нужно
скачать файл .crx
напрямую, затем перейти к chrome://extensions
и перетащить расширение для установки. Если вы хотите предоставить другому
участнику поддержку общего доступа к экрану, поделитесь с ним URL-адресом расширения
через текстовый чат Jitsi Meet.
Зависимости
Технически это не зависимость, но вам стоит обратить внимание на geerlingguy.certbot для удивительно легких SSL-сертификатов.
Пример Playbook
Приведение примера того, как использовать вашу роль (например, с переданными переменными в качестве параметров), всегда полезно для пользователей:
- name: Настроить сервер jitsi-meet.
hosts: jitsi
vars:
# Измените это, чтобы соответствовать записи DNS для вашего IP хоста.
jitsi_meet_server_name: meet.example.com
roles:
- role: geerlingguy.certbot
become: yes
certbot_create_if_missing: true
certbot_admin_email: "webmaster@{{ jitsi_meet_server_name }}"
certbot_certs:
- domains:
- "{{ jitsi_meet_server_name }}"
certbot_create_standalone_stop_services: []
- role: udelarinterior.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
Информация об авторе
Freedom of the Press Foundation, UdelaR Interior, @santiagomr
ansible-galaxy install UdelaRInterior/ansible-role-jitsi-meet