Настройка Jitsi Meet на Ubuntu Server 22.04 LTS

Подготовка сервера:
Правила брандмауэра
Для корректной работы сервера видеоконференции нам нужно открыть следующие порты:
• TCP/80 — для получения и обновления бесплатных сертификатов от Let’s Encrypt.
• TCP/443 — для доступа клиентов к coturn.
• UDP/10000-20000 — для отправки/получения аудио/видео пакетов в JVB.
• TCP/4443 — для приема и передачи шифрованного трафика вызова.

Открываем:

sudo -s
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

Настройка репозиториев

apt update
apt install software-properties-common gnupg2 curl nginx-full
apt install apt-transport-https
apt-add-repository universe
curl -sL https://prosody.im/files/prosody-debian-packages.key -o /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
curl -sL https://download.jitsi.org/jitsi-key.gpg.key | sudo 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/" | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
apt update

Задаем имя сервера, а также настраиваем его разрешение в локальный адрес. Для получения бесплатного сертификата от Let’s Encrypt данное имя также должно разрешаться из Интернет и вести на наш сервер по портам 80 и 443.
Выполняем команду:
hostnamectl set-hostname meet.your-domain.ru
где meet.your-domain.ru имя нашего сервера.
Открываем файл:
nano /etc/hosts
Добавляем строку с внешним адресом и именем сервера, например:
xxx.xxx.xxx.xxx meet.your-domain.ru
установим socat:
apt install socat
socat инструмент для переадресации запросов к сокетам c хостовой машины на клиентскую. Данный пакет рекомендуется установить до установки jitsi.
Устанавливаем jitsi:
apt install jitsi-meet
Если при установки сертификат не был получени или мы ранее использовали свой сертификат, в Jitsi есть готовый скрипт для получения сертификата от Let’s Encrypt — запускаем его:
/usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
Настройка аутентификации пользователей
Prosody configuration
If you have installed Jitsi Meet from the Debian package, these changes should be made in /etc/prosody/conf.avail/[your-hostname].cfg.lua
Enable authentication
Inside the VirtualHost “[your-hostname]” block, replace anonymous authentication with hashed password authentication:

VirtualHost "meet.your-domain.ru"
authentication = "internal_hashed"

Enable anonymous login for guests
Add this block after the previous VirtualHost to enable the anonymous login method for guests:

VirtualHost "guest.meet.your-domain.ru"
authentication = "anonymous"
c2s_require_encryption = false

Note that guest.meet.your-domain.ru is internal to Jitsi, and you do not need to (and should not) create a DNS record for it, or generate an SSL/TLS certificate, or do any web server configuration. While it is internal, you should still replace meet.your-domain.ru with your hostname.
Jitsi Meet configuration
In config.js, the anonymousdomain options has to be set.
If you have installed jitsi-meet from the Debian package, these changes should be made in /etc/jitsi/meet/[your-hostname]-config.js.

var config = {
hosts: {
domain: 'meet.your-domain.ru',
anonymousdomain: 'meet.your-domain.ru',
...
},
...
}

Jicofo configuration
When running Jicofo, specify your main domain in an additional configuration property. Jicofo will accept conference allocation requests only from the authenticated domain. This should go as a new ‘authentication’ section in /etc/jitsi/jicofo/jicofo.conf:

jicofo {
authentication: {
enabled: true
type: XMPP
login-url: meet.your-domain.ru
}

файл конфигурации самого Jitsi Meet
nano /etc/jitsi/meet/meet.your-domain.ru-config.js
укажем необходимость указать имя при подключении, раскомментировав строку
requireDisplayName: true
а так же отключим звук у пользователей при подключении
startWithAudioMuted: true
Теперь добавим в файл конфигурации jicofo необходимость требовать авторизации, с сохранением анонимного доступа для внешних пользователей.
nano /etc/jitsi/jicofo/sip-communicator.properties
и добавим строку
org.jitsi.jicofo.auth.URL=XMPP:meet.your-domain.ru
Create users in Prosody (internal auth)
Finally, run prosodyctl to create a user in Prosody:
sudo prosodyctl register <username> meet.your-domain.ru <password>
Перезапускаем службы:
systemctl restart jitsi-videobridge2 prosody jicofo

Leave a Reply