Установка и настройка Jitsi Meet на Ubuntu 22.04
Инструкция про установку и базовую настройку Jitsi Meet: как подготовить систему, настроить аутентификацию для создания конференций и не только.
Введение
В этой статье мы расскажем, что такое сервер видеоконференций Jitsi Meet и как установить его на свой сервер. Мы будем рассматривать настройку публичного сервера, доступного из интернета. Поэтому выпустим бесплатный TLS-сертификат от Let’s Encrypt и добавим обязательную авторизацию для создания конференций.
Что такое Jitsi Meet
Jitsi Meet — это бесплатный сервис для проведения аудио/видео конференций с открытым исходным кодом. Поддерживает все необходимые для конференц-связи функции: создание нескольких залов, демонстрацию экрана, запись конференции, общение в чате и так далее. Для подключения можно использовать браузер или отдельный клиент, который есть для всех популярных платформ: Windows, MacOS, Linux, Android, iOS.
В отличие от других аналогичных сервисов, вроде Zoom или Google Meet, Jitsi Meet можно установить на свой сервер. Это значит, вы не зависите от стороннего сервиса и полностью контролируете свои данные. Jitsi Meet состоит из различных модулей. Часть из них — основные модули, которые составляют ядро системы. Другие — дополнительные, которые позволяют кастомизировать Jitsi Meet и добавлять функциональность при необходимости.
Системные требования
У Jitsi Meet нет единых базовых требований к системе, которые подойдут для всех случаев. Все зависит от количества конференций и участников в них, качества видео и дополнительных возможностей, которые вы можете захотеть использовать. Но все же приведем немного данных для понимания общего порядка.
- Сеть. Небольшому серверу для общения с друзьями или небольшой командой будет достаточно скорости 1 Гбит/с, но для серьезного сервера на большое число конференций рекомендуется скорость 10 Гбит/с.
- RAM. В большинстве случаев рекомендуется 8 ГБ оперативной памяти. Для небольших совещаний можно обойтись 4 ГБ, а для тестирования можно вообще ограничиться 2 ГБ. Использовать больше 8 ГБ не рекомендуется — лучше создать кластер из нескольких серверов, а не добавлять больше памяти.
- CPU. Для большинства ситуаций хватит 4х ядер процессора физического сервера. Если Jitsi Meet развернут на VPS, то процессор будет делить время с другими потребителями этого сервера, и в этой ситуации лучше использовать больше ядер.
- Диск. Вполне будет достаточно 20 ГБ HDD. Можно использовать и SSD, но особой оптимизации это не даст.
Создание виртуальной машины на платформе Selectel
Перед началом установки Jitsi Meet мы создадим виртуальную машину, где будем разворачивать этот сервис. В разделе Облачная платформа выберем Серверы и нажмем кнопку Создать сервер.
Переходим в интерфейс создания новой виртуальной машины.
- В первую очередь выберем источник образа — Ubuntu 22.04.
- Затем выберем конфигурацию CPU и RAM. Так как мы создаем тестовый сервер, будет достаточно 2 CPU и 4 ГБ RAM.
- Выбираем HDD-диск размером не менее 20 ГБ, как того требует Jitsi Meet.
- Выбираем существующую публичную подсеть или создаем новый публичный IP-адрес. Мы планируем настраивать публичный адрес, поэтому сервер должен быть доступен всем из интернета.
- Обязательно проверьте, что выбрали правильный SSH-ключ для подключения к машине.
После создания сервера подождем несколько минут, пока виртуальная машина настраивается и загружается. После этого в списке серверов мы увидим новый сервер. Копируем публичный IP-адрес и подключимся к нему по SSH с использованием ключа, который мы выбрали при создании машины.
Мы подготовились к установке и настройке Jitsi Meet.
Открытие портов брандмауэра
Для работы Jitsi Meet на сервере должны быть открыты несколько обязательных портов:
- 80/TCP – Если используется Let’s Encrypt, этот порт нужен для выпуска и обновления TLS-сертификата.
- 443/TCP – Для общего доступа к Jitsi Meet, в том числе через браузер.
- 10000/UDP – Для проведения аудио/видео конференций.
- 5349/TCP – Резервный порт для аудио/видео конференций на случай, если UPD-порт 10000 заблокирован.
Чтобы открыть эти порты, выполним команды:
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -I INPUT -p tcp --dport 10000 -j ACCEPT
iptables -I INPUT -p tcp --dport 5349 -j ACCEPT
Чтобы эти настройки сохранились и после перезагрузки сервера и брандмауэр не блокировал подключения, установим пакет iptables-persistent и сохраним правила:
apt install iptables-persistent
netfilter-persistent save
Перед началом установки Jitsi Meet нужно выбрать имя домена, на котором будет доступен сервер. Мы для примера во всех настройках будем использовать доменное имя meet.my-domain.com. Во всех последующих инструкциях заменяйте это имя на свое.
Для начала вам нужно добавить в DNS запись с типом A, которая будет указывать на IP-адрес вашего сервера. В зависимости от вашего регистратора доменных имен, это делается по-разному, поэтому обратитесь к соответствующей документации вашего провайдера.
Далее нужно настроить сервер, чтобы также установить соответствие доменного имени и IP-адреса. Выполним команду:
hostnamectl set-hostname meet.my-domain.com
Затем добавим в файл /etc/hosts запись вида:
5.159.102.117 meet.my-domain.com
где 5.159.102.117 – публичный IP-адрес вашего сервера.
Установка сервера видеоконференций Jitsi Meet
Мы будем устанавливать Jitsi Meet на виртуальную машину с Ubuntu 22.04. Для начала убедимся, что в системе активирован репозиторий universe, который необходим для установки зависимостей:
sudo apt-add-repository universe
Далее добавим репозиторий Prosody. Это кроссплатформенный XMPP-сервер, который используется в Jitsi «под капотом»:
curl -sL https://prosody.im/files/prosody-debian-packages.key | sudo tee /etc/apt/keyrings/prosody-debian-packages.key
echo "deb [signed-by=/etc/apt/keyrings/prosody-debian-packages.key] http://packages.prosody.im/debian $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/prosody-debian-packages.list
apt install lua5.2
Теперь добавим непосредственно репозиторий Jitsi Meet:
curl -sL https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jitsi-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
Обновим список пакетов:
sudo apt update
Теперь установим Jitsi Meet. Установщик сам убедится, что в системе присутствует Nginx или Apache и сконфигурирует виртуальный хост для веб-сервера. Если у вас уже запущен какой-либо сервер на порту 443, установка завершится ошибкой из-за конфликта, т.к. Jitsi Meet тоже использует этот порт.
sudo apt install -y jitsi-meet lua-unbound
Вскоре запустится интерактивный установщик, который периодически будет требовать выбрать те или иные опции:
- На первом экране нужно указать домен, на котором будет располагаться ваш сервер. Мы для примера используем meet.my-domain.com.
- Далее необходимо определиться с SSL-сертификатом. Установщик может самостоятельно выпустить сертификат через Let’s Encrypt, использовать ваш сертификат или выпустить новый самоподписанный. Мы выберем первый вариант — выпуск сертификата через Let’s Encrypt.
- Далее нужно указать e-mail адрес, как того требует соглашение сервиса Let’s Encrypt. На этот адрес будут приходить уведомления, в том числе об истечении сертификата.
Если DNS-записи вашего домена настроены правильно, то через несколько минут Jitsi Meet автоматически сгенерирует сертификат Let’s Encrypt и поместит его в нужный каталог.
Настройка аутентификации пользователей
По умолчанию в Jitsi Meet любой пользователь может создавать конференции. Если сервер развернут внутри корпоративной сети, тогда такой вариант может вам подойти. Но если разворачивать публичный сервер, необходима авторизация. Мы настроем Jitsi Meet так, что создавать конференции смогут только зарегистрированные пользователи, а подключаться к ним — кто угодно.
Для начала отредактируем файл:
/etc/prosody/conf.avail/meet.my-domain.com.cfg.lua
В разделе VirtualHost «[meet.my-domain.com]» заменим анонимную аутентификацию на аутентификацию с паролем:
VirtualHost "jitsi-meet.example.com"
authentication = "internal_hashed"
Теперь включим анонимный доступ для гостей, чтобы они могли подключаться к уже созданным видеоконференциям. Для этого после предыдущего блока добавьте следующее:
VirtualHost "guest.jitsi-meet.example.com"
authentication = "anonymous"
c2s_require_encryption = false
В данном случае поддомен guest необходим только для настроек Jitsi. Для него не нужно создавать DNS-запись, генерировать TLS-сертификат или настраивать веб-сервер.
Далее будем редактировать файл:
/etc/jitsi/meet/meet.my-domain.com-config.js. Нужно найти в нем строки:
hosts: {
// XMPP domain.
domain: 'meet.my-domain.com',
И добавить строку anonymousdomain: ‘guest.meet.my-domain.com’, чтобы в итоге получилось так:
hosts: {
// XMPP domain.
domain: 'meet.my-domain.com',
anonymousdomain: 'guest.meet.my-domain.com',
Тем самым мы указываем, на каком хосте нужно выполнять аутентификацию анонимных пользователей.
Следующим шагом редактируем файл /etc/jitsi/jicofo/jicofo.conf. Найдем в нем раздел jicofo и добавим в него новый блок:
authentication: {
enabled: true
type: XMPP
login-url: meet.my-domain.com
}
Настройка Jitsi Meet завершена. Нам остается только создать пользователей, которые смогут создавать конференции. Для этого выполним команду:
sudo prosodyctl register <логин> meet.my-domain.com <пароль>
Осталось перезапустить все компоненты Jitsi, чтобы применить выполненные настройки:
sudo systemctl restart prosody jicofo jitsi-videobridge2
Начало работы с Jitsi Meet
Теперь немного попробуем использовать Jitsi в действии. Открываем в браузере адрес нашего сервера, например https://meet.my-domain.com.
Мы видим начальный интерфейс Jitsi Meet, который предлагает создать новые конференции и показывает уже созданные. Указываем название для конференции или просто нажимаем кнопку Start Meeting, чтобы создать комнату со случайным названием.
Дальше появляется окно, в котором Jitsi предлагает нам залогиниться. Нажимаем кнопку I’m a host, вводим логин и пароль созданного пользователя. Наша настройка авторизации для создания конференций работает.
Теперь попробуем залогиниться в эту комнату анонимно, чтобы проверить вторую часть конфигурации. Для этого копируем из адресной строки ссылку и открываем ее в приватной вкладке или в другом браузере. Подключаемся к конференции, при этом Jitsi не запросит логин и пароль, т.к. комната уже создана и подключаться к ней может любой желающий.
Заключение
Мы рассмотрели установку и базовую настройку Jitsi Meet на Ubuntu 22.04. Подготовили систему к установке, автоматически выпустили TLS-сертификат, а также настроили обязательную аутентификацию для создания конференций.