Установка сервера для видеоконференций Jitsi Meet
Jitsi Meet — это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет создавать и развертывать решения для видеоконференцсвязи. Jitsi Meet работает на базе открытой технологии WebRTC. Это позволяет использовать для проведения конференций браузер, а также клиентские приложения для Linux, macOS, Windows, iOS и Android.
Внимание!
Предупреждаем вас, что Jitsi Meet не подходит на роль полноценного сервиса видеоконференцсвязи. Это бесплатный продукт для демонстрации возможностей коммерческого облачного сервиса 8×8, у разработчиков нет задачи реализовать важные корпоративные возможности. А такие возможности как интеграция с AD/LDAP, обход NAT, поддержка SIP, запись конференций и др., доступны только при установке и настройке дополнительных плагинов. Более того, некоторые функции в принципе отсутствуют, например, создание запланированных конференций – все мероприятия по сути являются виртуальными комнатами.
Также следует учесть, что установка и поддержка в работоспособном состоянии сервера Jitsi Meet требует высокой квалификации по администрированию ОС Linux.
Системные требования
Необходимые пакеты для успешной установки Jitsi Meet:
- gnupg2
- nginx-full
- sudo
- OpenJDK 8/OpenJDK 11
Заранее ознакомьтесь со списком портов, которые вам понадобится открыть в ОС или пробросить во внешнюю сеть:
- 80/tcp — для верификации/продления SSL-сертификата с помощью Let’s Encrypt;
- 443/tcp — для общего доступа к Jitsi Meet;
- 10000/udp — для общей сетевой видео / аудиосвязи;
- 22/tcp — если вы обращаетесь к серверу с помощью SSH (значение по умолчанию, если вы используете другой порт, укажите его вместо 22).
Платформа Jitsi Meet поддерживает развёртывание на ОС Debian/Ubuntu и openSUSE. Для примера рассмотрим, как установить Jitsi Meet на Debian 10.
Для выполнения перечисленных далее команд в ОС должна присутствовать программа sudo и пользователь, под которым они запускаются, должен быть в соответствующей группе. В Debian по умолчанию sudo может отсутствовать, проверьте её наличие командой sudo -V
и установите при необходимости с помощью команды apt install sudo
(выполняется под учётной записью root). А для добавления пользователя с логином user
в группу sudo
выполните sudo usermod -a -G sudo user
.
Основные модули Jitsi Meet
Jicofo — XMPP-компонент, процесс, который управляет подключением клиентских приложений к видеоконференции. Также во время её проведения он реализует функционал отправки приглашений, распределения нагрузки при использовании нескольких XMPP-серверов и пр. У него есть свой HTTP API /about/health
для опроса о состоянии ресурса.
Jitsi Videobridge – ключевой компонент системы. При передаче видео и аудио между участниками он выполняет роль посредника, то есть осуществляет функцию терминирования RTP/RTCP, устанавливает границы битрейта в обе стороны на каждого клиента. Есть свой собственный HTTP API для мониторинга (/colibri/debug
).
Он работает по архитектуре Simulcast и не занимается транскодингом, потому потребляет относительно мало ресурсов CPU сервера, но при этом возрастает нагрузка на клиентскую часть по сравнению с другими архитектурами.
К системе ВКС Jitsi можно подключить несколько видеобриджей — тогда каждой новой конференции будет поставлен в соответствие один из них.
Jigasi — внешнее расширение для участия в Jitsi-конференциях через SIP-телефонию (требуется отдельная настройка).
Jibri — набор сервисов для записи и трансляции конференции. Запускает Chrome в виртуальном видеобуфере, захватывая и кодируя выходные данные с помощью ffmpeg. Сервис предназначен для запуска на отдельном компьютере (или виртуальной машине), без других приложений, использующих дисплей или аудио устройства. Каждый запущенный экземпляр Jibri поддерживает только один процесс записи за раз.
Prosody — это кроссплатформенный XMPP-сервер, написанный на языке программирования Lua.
Шаг 1. Установка дополнительных пакетов
1. Получите список доступных обновлений для всех пакетов из подключенных в ОС репозиториев:
1 |
sudo apt update |
2. Установите необходимые пакеты:
- apt-transport-https. Поскольку для репозитория Jitsi требуется HTTPS-соединение, вам нужно установить пакет apt-transport-https, чтобы APT установил HTTPS-соединение с репозиторием Jitsi.
- gnupg2. Требуется для работы с PGP ключами.
- nginx-full. Высокопроизводительный веб-сервер. Требуется, чтобы программа установки настроила виртуальный хост на веб-сервере для обслуживания Jitsi Meet.
- curl. Инструмент командной строки для передачи данных с синтаксисом URL. Нужен для скачивания PGP-ключа.
- ufw. Простой брандмауэр. Нужен для открытия портов.
1 |
sudo apt install apt-transport-https gnupg2 nginx-full curl ufw -y |
Шаг 2. Настройка доменного имени
Чтобы сервер Jitsi Meet функционировал правильно, нужно установить соответствие доменного имени, которое мы будем использовать для своего экземпляра Jitsi Meet, с именем хоста системы.
- Решите, какой домен будет использовать ваш сервер. Например, myjitsi.example.org.
- Для настройки доменного имени используйте утилиту hostnamectl из набора инструментов systemd, предназначенную для управления именем хоста системы:
1 |
sudo hostnamectl set-hostname myjitsi.example.org |
3. Добавьте в файл /etc/hosts
такое же доменное имя:
1 2 3 |
127.0.0.1 localhost x.x.x.x myjitsi.example.org |
где x.x.x.x — это общедоступный IP-адрес вашего сервера.
Шаг 3. Настройка брандмауэра
Чтобы пользователи могли подключаться к серверу Jitsi Meet, нужно настроить брандмауэр. Для этого потребуется открыть требуемые порты с помощью ufw. Для этого последовательно выполните следующие команды:
1 2 3 4 5 6 7 8 9 |
sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw allow 10000/udp sudo ufw allow 22/tcp sudo ufw enable |
Проверьте статус брандмауэра с помощью команды:
1 |
sudo ufw status verbose |
Если эти порты открыты, вы увидите следующий вывод:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Status: active To Action From -- ------ ---- 22/tcp ALLOW Anywhere 80/tcp ALLOW Anywhere 443/tcp ALLOW Anywhere 10000/udp ALLOW Anywhere 22/tcp (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443/tcp (v6) ALLOW Anywhere (v6) 10000/udp (v6) ALLOW Anywhere (v6) |
Шаг 4. Добавление пакета Jitsi в список репозиториев
- С помощью curl импортируйте официальный GPG-ключ репозитория Jitsi:
1 |
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg' |
2. Добавьте ссылку на репозиторий со стабильной версией:
1 |
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 > /dev/null |
Шаг 5. Установка Jitsi Meet
Перед установкой получите список доступных пакетов из репозитория Jitsi:
1 |
sudo apt update |
Установите Jitsi Meet:
1 |
sudo apt install jitsi-meet |
Вам также будет предложено ввести имя хоста экземпляра Jitsi Meet. Если у вас есть домен, используйте конкретное доменное имя, например: myjitsi.example.org
. В качестве альтернативы вы можете ввести IP-адрес машины (если он статический).
Это имя хоста будет использоваться для настройки виртуального хоста внутри Jitsi Meet, а также для подключения пользователей к конференциям.
Вы можете сгенерировать самоподписанный SSL-сертификат, или отказаться от него если у вас уже есть коммерческий сертификат и вы будете использовать его.
Шаг 6. Аутентификация пользователя
По умолчанию Jitsi Meet настроен так, что любой пользователь может подключиться к вашему серверу и создать конференцию. Но возможно настроить сервер так, чтобы конференцию мог начать только зарегистрированный пользователь. В этом случае при создании новой комнаты, Jitsi Meet будет запрашивать имя пользователя и пароль. Но для этого понадобится отредактировать файлы конфигурации.
В следующих примерах мы будем использовать переменную your_hostname
вместо доменного имени.
Активация обязательной аутентификации
- С помощью любого текстового редактора откройте файл
/etc/prosody/conf.avail/[your_hostname].cfg.lua
- Найдите строку
authentication = "anonymous"
в блокеVirtualHost "[your_hostname]"
и замените её на строку:
1 |
authentication = "internal_hashed" |
Тем самым вы замените возможность анонимного использования сервиса обязательной аутентификацией по логину и паролю.
3. Добавьте в конец файла следующий раздел:
1 2 3 4 5 6 7 |
... VirtualHost "guest.your_hostname" authentication = "anonymous" c2s_require_encryption = false |
guest.your_hostname
— это внутренний домен для Jitsi, и вам не нужно (и не следует) создавать для него DNS-запись, или генерировать сертификат SSL / TLS, или выполнять какую-либо конфигурацию веб-сервера.Это позволяет анонимным пользователям присоединяться к конференции, созданной авторизованным на сервере пользователем. При этом гость должен знать уникальный адрес и пароль конференции (если он задан).
4. Откройте другой файл etc/jitsi/meet/your_hostname-config.js
, в текстовом редакторе раскомментируйте строку // anonymousdomain: 'guest.example.com'
, и замените адрес guest.example.com
своим настоящим именем хоста Jitsi Meet.
Эти данные необходимы, чтобы указать Jitsi Meet, какое внутреннее имя хоста необходимо использовать для гостей, не прошедших аутентификацию.
Далее, в настройках компонента, необходимо указать домен, который будет использоваться для запуска Jicofo. Чтобы получить возможность проводить конференции, Jicofo будет использовать только зарегистрированные домены.
Для завершения внесения изменений в конфигурацию, добавьте следующую строку в файл /etc/jitsi/jicofo/sip-communicator.properties
1 |
org.jitsi.jicofo.auth.URL=XMPP:your_hostname |
Создание пользователей
Для создания пользователей используйте утилиту prosodyctl:
1 |
sudo prosodyctl register <username> your_hostname <password> |
Перезапустите службы systemd, чтобы изменения вступили в силу:
1 |
sudo systemctl restart jitsi-videobridge2 prosody jicofo |
Теперь при создании комнаты в Jitsi Meet вам необходимо будет ввести имя пользователя и пароль.
Шаг 7. Начало работы с Jitsi Meet
После завершения установки запустите веб-браузер (например, Firefox, Chrome или Safari) и введите имя хоста или IP-адрес в адресную строку.
Если вы использовали самоподписанный сертификат, ваш веб-браузер попросит вас подтвердить, что вы доверяете этому сертификату. Также если вы подключаетесь к Jitsi с помощью мобильного приложения для iOS или Android, возможно, на этом этапе оно завершится ошибкой при использовании самоподписанного сертификата.
Вы должны увидеть веб-страницу, предлагающую вам начать новую встречу:
Убедитесь, что вы можете успешно создать собрание. Поделитесь ссылкой на него, проверьте, что другие участники тоже могут присоединиться и что все порты были открыты корректно.