Установка и базовая настройка Jitsi на Ubuntu


В данной инструкции мы сделаем небольшой обзор по развертыванию сервиса проведения конференцсвязи Jitsi на Linux Ubuntu / Debian.
Подготовка сервера
Установка системы видеоконференцсвязи
Настройка SSL
Аутентификация пользователей
Оптимизация для работы от 100 пользователей
Предварительная настройка
Прежде чем приступить к установке Jitsi, выполним работы по подготовке системы.
Правила брандмауэра
Для корректной работы сервера видеоконференции нам нужно открыть следующие порты:
- TCP/80 — для получения и обновления бесплатных сертификатов от Let's Encrypt.
- TCP/443 — для доступа клиентов к coturn.
- UDP/10000-20000 — для отправки/получения аудио/видео пакетов в JVB.
- TCP/4443 — для приема и передачи шифрованного трафика вызова.
Вводим команды:
iptables -I INPUT -p tcp --match multiport --dports 80,443 -j ACCEPT
iptables -I INPUT -p udp --dport 10000:20000 -j ACCEPT
iptables -I INPUT -p tcp --dport 4443 -j ACCEPT
Также нам может потребоваться открыть дополнительные порты:
- TCP/5222 — если есть дополнительный JVB или дополнительный Jibri на отдельной машине.
- TCP/5349 — для coturn, если установить порт для turn в /etc/prosody/conf.d/<домен>.cfg.lua.
- UDP/3478 — для coturn, если установить порт для turn в /etc/prosody/conf.d/<домен>.cfg.lua.
- TCP/8080 — если вам нужен доступ к Colibri REST API.
- TCP/8888 — для доступа к Jicofo REST API.
Выполняем:
iptables -I INPUT -p tcp --dport 5222 -j ACCEPT
iptables -I INPUT -p tcp --dport 5349 -j ACCEPT
iptables -I INPUT -p udp --dport 3478 -j ACCEPT
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -I INPUT -p tcp --dport 8888 -j ACCEPT
Для сохранения правил используем netfilter-persistent:
apt install iptables-persistent
netfilter-persistent save
Настройка репозиториев
В стандартных хранилищах пакетов Ubuntu нет Jitsi и необходимых для нее компонентов. Выполним необходимые настройки.
1. Добавляем репозиторий universe:
apt update
apt install software-properties-common gnupg2 curl
apt-add-repository universe
Если мы получим сообщение:
'universe' distribution component is already enabled for all sources.
... значит он уже есть в нашей системе. Идем дальше.
2. Также добавим репозиторий packages.prosody.im:
echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | tee -a /etc/apt/sources.list
... и установим его ключ:
wget https://prosody.im/files/prosody-debian-packages.key
apt-key add prosody-debian-packages.key
3. Установим теперь репозиторий и gpg-ключ для самого jitsi:
curl https://download.jitsi.org/jitsi-key.gpg.key | sh -c 'gpg --dearmor > /usr/share/keyrings/jitsi-keyring.gpg'
echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | tee /etc/apt/sources.list.d/jitsi-stable.list > /dev/null
Обновим кэш apt:
apt update
Настройка закончена.
Имя сервера
Для установки jitsi важно задать имя сервера, а также обеспечить его разрешение в локальный адрес. Для получения бесплатного сертификата от Let's Encrypt данное имя также должно разрешаться из Интернет и вести на наш сервер по портам 80 и 443.
Выполняем команду:
hostnamectl set-hostname jitsi.dmosk.ru
* где jitsi.dmosk.ru — имя нашего сервера.
Открываем файл:
vi /etc/hosts
К строке 127.0.0.1 добавим имя нашего сервера, например:
127.0.0.1 jitsi.dmosk.ru localhost
* обратите внимание, чтобы полное имя сервера шло перед localhost.
Мы готовы приступить к установке сервиса видеосвязи.
Установка jitsi
Мы готовы к установке программного обеспечения из настроенных репозиториев. Для начала установим socat:
apt install socat
* socat — инструмент для переадресации запросов к сокетам c хостовой машины на клиентскую. Данный пакет рекомендуется установить до установки jitsi.
Теперь устанавливаем сам jitsi:
apt install jitsi-meet
В ходе установки система задаст несколько вопросов.
Указываем имя нашего сервера (его мы задавали при подготовке сервера):
* где jitsi.dmosk.ru — то имя, которое мы задали серверу и указали в файле hosts.
Теперь установщик предложит создать самоподписанный сертификат или использовать уже имеющийся. В нашем примере мы дадим ответ для создания сертификата:
Готово. Jitsi установлен.
Для запуска первой конференции переходим по ссылке https://jitsi.dmosk.ru, где jitsi.dmosk.ru — имя нашего сервера. Откроется веб-интерфейс (браузер отобразит ошибку безопасности из-за самоподписанного сертификата — игнорируем) и мы можем сразу перейти к созданию конференции, кликнув по Создать конференцию:
Настройка SSL
Для корректной работы сервера нужен правильный сертификат. Его можно купить или получить бесплатно от Let's Encrypt. Рассмотрим оба варианта.
1. Бесплатный от Let's Encrypt
В процессе установки jitsi, если мы выбрали использование сертификата Let's Encrypt, он будет автоматически получен.
Но если при установки сертификат не был получени или мы ранее использовали свой сертификат, в Jitsi есть готовый скрипт для получения сертификата от Let's Encrypt — запускаем его:
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Система потребует ввести адрес электронной почты:
Enter your email and press [ENTER]: master@dmosk.ru
После нажатия ENTER будет выполнена проверка имени хоста, который мы указали при установке (он должен вести на наш сервер по портам 80 и 443). Если проверка пройдена, мы увидим сообщение об успешном получении сертификата и путь до файлов fullchain.pem и privkey.pem.
Сертификат установлен.
2. Использование своего сертификата
Предположим, мы купили сертификат и поместили его по путям /etc/jitsi/meet/jitsi.dmosk.ru.crt (открытый ключ) и /etc/jitsi/meet/jitsi.dmosk.ru.key (закрытый).
Открываем конфигурационный файл nginx:
vi /etc/nginx/sites-enabled/$(hostname).conf
* где $(hostname) должен вернуть jitsi.dmosk.ru — имя, которое мы задали серверу.
Находим директивы ssl_certificate и ssl_certificate_key. Для них задаем правильные пути до сертификатов:
ssl_certificate /etc/jitsi/meet/jitsi.dmosk.ru.crt;
ssl_certificate_key /etc/jitsi/meet/jitsi.dmosk.ru.key;
После проверяем корректность конфигурационного файла и перезапускаем nginx:
nginx -t && nginx -s reload
Сертификат установлен.
Настройка аутентификации
По умолчанию после установки Jitsi пользователи могут заходить в систему и создавать комнаты для беседы без проверки подлинности. Для того, чтобы наша система требовала ввода логина и пароля, меняем настройку нашего сервера.
В первую очередь, откроем на редактирование конфигурационный файл компонента Prosody XMPP:
vi /etc/prosody/conf.avail/$(hostname).cfg.lua
Находим группу опций VirtualHost "<имя сервера>" и приводим к виду опции:
VirtualHost "jitsi.dmosk.ru"
-- authentication = "jitsi-anonymous" -- do not delete me
authentication = "internal_hashed"
...
* мы закомментировали строку с jitsi-anonymous, чтобы запретить анонимные соединения и добавили authentication = "internal_hashed", чтобы требовать аутентификацию по логину и паролю.
Также в самый низ данного файла добавим:
...
VirtualHost "guest.jitsi.dmosk.ru"
authentication = "anonymous"
c2s_require_encryption = false
* в данном примере мы определяем хост guest.jitsi.dmosk.ru для анонимных запросов. Они нужны для возможности гостевого подключения к созданным конференциям. Важно отметить, что данное имя узла является внутренним и его нам не нужно добавлять в систему NS для его разрешения в IP-адрес.
Теперь откроем файл:
vi /etc/jitsi/meet/$(hostname)-config.js
Найдем строки:
hosts: {
// XMPP domain.
domain: 'jitsi.dmosk.ru'
* где jitsi.dmosk.ru — имя нашего узла.
Добавим ниже строку с опцией anonymousdomain:
hosts: {
// XMPP domain.
domain: 'jitsi.dmosk.ru'
anonymousdomain: 'guest.jitsi.dmosk.ru',
* данной строкой мы передаем серверу инструкцию, на каком хосте выполнять аутентификацию для анонимных пользователей.
Создаем файл:
vi /etc/jitsi/jicofo/sip-communicator.properties
org.jitsi.jicofo.auth.URL=XMPP:jitsi.dmosk.ru
* где jitsi.dmosk.ru — имя нашего узла.
Перезапускаем службы:
systemctl restart jitsi-videobridge2 prosody jicofo
Создаем учетную запись для модератора (пользователя, под которым можно авторизоваться, чтобы создать комнату):
prosodyctl register admin $(hostname)
* в данном примере мы создаем пользователя admin.
После ввода команды система попросит ввести пароль для создаваемого пользователя. Придумываем и дважды его вводим.
Пробуем создать конференцию — мы должны увидеть сообщение, требующее дождаться модератора. Говорим, что мы и есть модератор:
Появится окно для ввода логина и пароля. Вводим данные для созданной учетной записи:
Мы должны получить права модератора и комната будет создана.
Оптимизация для большого числа участников
С системными настройками по умолчанию рекомендуется использовать Jitsi для 100 пользователей и меньше. Если число участников будет превышать, рекомендуется увеличить параметры:
- DefaultLimitNOFILE — лимит на количество открытых файлов.
- DefaultLimitNPROC — лимит на количество открытых процессов.
- DefaultTasksMax — максимальное число разрешенных процессов.
Открываем файл:
vi /etc/systemd/system.conf
Приводим к виду вышеописанные опции:
DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000
Применяем настройки:
systemctl daemon-reexec
Проверить применение можно командой:
systemctl show --property DefaultLimitNOFILE