jitsi_meet

jitsi_meet

Роль Ansible для установки Jitsi Meet.

Введение

Это роль Ansible, которая устанавливает Jitsi Meet с nginx в качестве прокси с завершением TLS и (по желанию) сертификат Let's Encrypt (через certbot) на Ubuntu Bionic (18.04).

Требования

  • Домен должен указывать на ваш сервер для использования Let's Encrypt.
  • Ваш брандмауэр должен разрешать порты 80/tcp, 443/tcp, 4443/tcp, 10000/udp.
    • Если ваш сервер находится за NAT, убедитесь, что эти порты перенаправлены.

Переменные роли

  • apt_mirror: На Ubuntu необходимо включить universe. Эта переменная должна указывать на ваш системный зеркальный репозиторий. По умолчанию: http://archive.ubuntu.com/ubuntu.
  • jitsi_domain: Под каким доменом будет доступен Jitsi. Должно быть имя домена, если вы планируете использовать Let's Encrypt. В противном случае может быть IP-адрес. По умолчанию: {{ inventory_hostname }}.
  • certbot_enabled: Устанавливать ли certbot и запрашивать сертификат для {{ jitsi_domain }}. По умолчанию: false.
  • certbot_admin_email: Какой адрес электронной почты зарегистрировать для Let's Encrypt. Обязательно, если certbot_enabled=true. Электронная почта должна существовать. Нет значения по умолчанию.
  • jitsi_nat: Запускаете ли вы jitsi meet за NAT. По умолчанию: false. Если включено, необходимо установить jitsi_nat_local_ip и jitsi_nat_public_ip.
  • jitsi_nat_public_ip: Общий IP-адрес вашего хоста jitsi meet. По умолчанию: IPv4, сообщенный ipify.
  • jitsi_nat_private_ip: Приватный IP-адрес вашего хоста jitsi meet. По умолчанию: IPv4, который Ansible считает стандартным для хоста.
  • nginx_server_names_hash_bucket_size: server_names_hash_bucket_size для nginx. Будет указано в глобальном nginx.conf, если nginx_modify_server_names_hash_bucket_size установлено в true. По умолчанию: 64.
  • nginx_modify_server_names_hash_bucket_size: Изменять ли значение server_names_hash_bucket_size в глобальном файле nginx.conf. По умолчанию: true.

Также посмотрите на geerlingguy/ansible-role-certbot/.../defaults/main.yml для дальнейших параметров конфигурации, связанных с certbot.

Зависимости

Зависит от geerlingguy.certbot Ansible роли для задач Let's Encrypt / certbot:

ansible-galaxy install geerlingguy.certbot

Быстрый старт

Установите Ansible:

# на macOS с Homebrew
brew install ansible

# на Debian
sudo apt update
sudo apt install software-properties-common
sudo apt-add-repository --yes --update ppa:ansible/ansible
sudo apt install ansible

# или через Python / pip
sudo python3 -m pip install ansible

Настройте новый сервер с Ubuntu 18.04 или получите его на Digital Ocean, Vultr, Hetzner Cloud, Cloudscale, Azure, Google Cloud, AWS и др.

Убедитесь, что вы можете войти через свою SSH-ключ:

ssh-copy-id [email protected]
ssh [email protected]

Создайте файл инвентаря:

# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]

[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes # set to `no` if you log in via root
apt_mirror=http://archive.ubuntu.com/ubuntu # change to the mirror you already use
certbot_enabled=yes
jitsi_nat=no # turn on if your server is behind a NAT.

Создайте файл плейбука:

# jitsi.yml
- hosts: jitsi
  roles:
      - cimnine.jitsi_meet

Установите необходимые зависимости:

ansible-galaxy install cimnine.jitsi_meet
ansible-galaxy install geerlingguy.certbot

Запустите файл плейбука на инвентаре:

# если `sudo` на вашем сервере не требует пароль:
ansible-playbook -i jitsi.ini jitsi.yml

# или если `sudo` на вашем сервере требует пароль:
ansible-playbook -K -i jitsi.ini jitsi.yml

Конфигурация

Jitsi Meet может быть настроен из этой роли Ansible. Для этого файл /etc/jitsi/meet/{{ jitsi_domain }}-config.js из основного пакета будет заменен файлом, управляемым этой ролью.

Чтобы включить это поведение, определите переменную: managed_jitsi_config и установите ее в yes.

То есть, добавьте последнюю строку следующего примера в ваш jitsi.ini:

# jitsi.ini
[jitsi]
my-jitsi-server.com jitsi_domain=my-jitsi-server.com [email protected]
[jitsi:vars]
ansible_user=ubuntu
ansible_become=yes
apt_mirror=http://archive.ubuntu.com/ubuntu # change to the mirror you already use
certbot_enabled=yes
jitsi_nat=no
managed_jitsi_config=yes  # manage your jitsi config through this role

Затем задайте все необходимые переменные конфигурации. Значения по умолчанию можно найти в файле defaults/main.yml роли. Все переменные должны быть указаны, а не только те, которые вы хотите переопределить! Обратите внимание на пустые переменные, такие как analytics: {}: из-за особенностей работы Jitsi это должно быть пустым объектом и не может быть null.

Все настройки, их значения, использование и эффект задокументированы в jitsi-meet config.js.

Наиболее минимальный пример:

jitsi_config:
  hosts:
    domain: "{{ jitsi_domain }}"
    muc: "conference.{{ jitsi_domain }}"
  bosh: "//{{ jitsi_domain }}/http-bind"
  clientNode: "http://jitsi.org/jitsimeet"
  testing:
    enableFirefoxMulticast: false
    p2pTestMode: false
  desktopSharingChromeExtId: null
  desktopSharingChromeSources: [ 'screen', 'window', 'tab' ]
  desktopSharingChromeMinExtVersion: '0.1'
  channelLastN: -1
  enableWelcomePage: true
  enableUserRolesBasedOnToken: false
  p2p:
    enabled: true
    stunServers:
      - urls: 'stun:stun.l.google.com:19302'
      - urls: 'stun:stun1.l.google.com:19302'
      - urls: 'stun:stun2.l.google.com:19302'
    preferH264: true
  analytics: {}
  deploymentInfo: {}
  localRecording: {}
  e2eping: {}
  deploymentUrls: {}

ПРИМЕЧАНИЕ: Требования к config.js могут изменяться в любой момент при обновлении jitsi-meet, основная команда не очень общительна по этому поводу. Проверяйте любой CHANGELOG и объявления проекта Jitsi Meet о новых необходимых значениях перед обновлением.

ПРИМЕЧАНИЕ: Структура чувствительна к регистру и точно соответствует настройкам переменных в config.js. Таким образом, например, webrctIceUdpDisable очень отличается от WebRTCIceUDPDisable. Jitsi непоследователен в именовании переменных (например, он случайным образом перемешивает URL и Url), поэтому обращайте внимание на точное имя.

Удаление

Следующие команды помогут вам удалить установку. Они могут не полностью удалить все файлы, но этого достаточно, чтобы начать заново, если вы что-то испортили.

systemctl stop jitsi-videobridge
systemctl disable jitsi-videobridge
apt-get purge -y jigasi jitsi-meet jitsi-meet-web-config jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge

systemctl stop nginx
systemctl disable nginx
apt-get purge -y nginx nginx-common nginx-full

apt purge certbot

rm -rf /etc/jitsi /etc/nginx /etc/letsencrypt

crontab -e -u root

reboot

Лицензия

MIT

О проекте

Install jitsi-meet with nginx and (optionally) certbot

Установить
ansible-galaxy install cimnine/ansible-jitsi-meet-role
Лицензия
mit
Загрузки
633
Владелец
Called myself «serious software architect» as a joke, then ended up sticking to that.