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

Обновлено Обновлено: Опубликовано Опубликовано:

В данной инструкции мы сделаем небольшой обзор по развертыванию сервиса проведения конференцсвязи Jitsi на Linux Ubuntu / Debian. 

Предварительная настройка

Прежде чем приступить к установке Jitsi, выполним работы по подготовке системы.

Белый IP-адрес

Для работы Jitsi необходимо наличие статического белого IP-адреса.

Через NAT данный сервис не работает, поэтому либо мы настраиваем видеоконференцию только внутри локальной сети, либо отдаем внешний адрес серверу.

Правила брандмауэра

Для корректной работы сервера видеоконференции нам нужно открыть следующие порты:

  • 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 и установим его ключ:

curl -fsSL https://prosody.im/files/prosody-debian-packages.key | gpg --dearmor -o /usr/share/keyrings/prosody-debian-packages.gpg

echo "deb [signed-by=/usr/share/keyrings/prosody-debian-packages.gpg] http://packages.prosody.im/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/prosody.list

3. Установим теперь репозиторий и gpg-ключ для самого jitsi:

curl -fsSL 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/' > /etc/apt/sources.list.d/jitsi-stable.list

Обновим кэш apt:

apt update

Настройка закончена.

Имя сервера

Для установки jitsi важно задать имя сервера, а также обеспечить его разрешение в локальный адрес. Для получения бесплатного сертификата от Let's Encrypt данное имя также должно разрешаться из Интернет и вести на наш сервер по портам 80 и 443.

Выполняем команду:

hostnamectl set-hostname jitsi.dmosk.ru

* где jitsi.dmosk.ru — имя нашего сервера.

Открываем файл:

vi /etc/hosts

Добавляем строку с внешним адресом и именем сервера, например:

1.2.3.4 jitsi.dmosk.ru

Мы готовы приступить к установке сервиса видеосвязи.

Установка jitsi

Мы готовы к установке программного обеспечения из настроенных репозиториев. Для начала установим socat:

apt install socat

socat — инструмент для переадресации запросов к сокетам c хостовой машины на клиентскую. Данный пакет рекомендуется установить до установки jitsi.

Теперь устанавливаем сам jitsi:

apt install jitsi-meet

В ходе установки система задаст несколько вопросов.

Указываем имя нашего сервера (его мы задавали при подготовке сервера):

Вводим имя нашего сервера при установке Jitsi

* где jitsi.dmosk.ru — то имя, которое мы задали серверу и указали в файле hosts.

Теперь установщик предложит создать самоподписанный сертификат или использовать уже имеющийся. В нашем примере мы дадим ответ для создания сертификата:

Сгенерировать самоподписанный сертификат

Готово. Jitsi установлен.

Для запуска первой конференции переходим по ссылке https://jitsi.dmosk.ru, где jitsi.dmosk.ru — имя нашего сервера. Откроется веб-интерфейс (браузер отобразит ошибку безопасности из-за самоподписанного сертификата — игнорируем) и мы можем сразу перейти к созданию конференции, кликнув по Создать конференцию:

На стартовом окне Jitsi мы можем перейти к созданию конференции

Настройка 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

Мы должны получить права модератора и комната будет создана.

Оптимизация для большого числа участников

С системными настройками по умолчанию рекомендуется использовать Jitsi для 100 пользователей и меньше. Если число участников будет превышать, рекомендуется увеличить параметры:

  • DefaultLimitNOFILE — лимит на количество открытых файлов.
  • DefaultLimitNPROC — лимит на количество открытых процессов.
  • DefaultTasksMax — максимальное число разрешенных процессов.

Открываем файл:

vi /etc/systemd/system.conf

Приводим к виду вышеописанные опции:

DefaultLimitNOFILE=65000
DefaultLimitNPROC=65000
DefaultTasksMax=65000

Применяем настройки:

systemctl daemon-reexec

Проверить применение можно командой:

systemctl show --property DefaultLimitNOFILE

# Ubuntu # Мультимедиа # Серверы # Телефония
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет