jitsi_meet

jitsi-meet

Galaxy GitHub tag (latest by date) GitHub stars GitHub forks

Устанавливает и настраивает видеоконференцсистему 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

О проекте

Installs Jitsi Meet videoconferencing software

Установить
ansible-galaxy install UdelaRInterior/ansible-role-jitsi-meet
Лицензия
Unknown
Загрузки
3317
Владелец
Red Unidades Informáticas de la UdelaR en el Interior