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
Быстрый старт
# на 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