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

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

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

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

Прежде чем приступить к установке 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

* где 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 # Мультимедиа # Серверы # Телефония
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет