Jitsi Meet

Материал из ALT Linux Wiki
Версия от 16:50, 18 июня 2020; ArsenyMaslennikov (обсуждение | вклад) (Новая страница: «Jitsi Meet — веб-приложение на базе технологии WebRTC. Для сигналинга использует XMPP через BOSH с и…»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)

Jitsi Meet — веб-приложение на базе технологии WebRTC. Для сигналинга использует XMPP через BOSH с использованием собственного XEP. В системах на базе Альт оно расположено в пакете jitsi-meet-web

Jicofo — XMPP-компонент, модератор видеоконференций. Клиенты договариваются о связи, заходя в общую XMPP-комнату с ним, и обмениваются там XMPP-сообщениями. Имеет HTTP API /about/health для опроса о состоянии сервиса.

Jitsi Videobridge — ключевой компонент системы, SFU. Он передаёт видео и аудио между участниками, осуществляя роль посредника, терминирует RTP/RTCP, определяет доступные рамки битрейта в обе стороны на конкретного клиента. Имеет свой внутренний HTTP API для мониторинга (/colibri/debug).

Это SFU, не MCU — он не занимается транскодингом и поэтому потребляет относительно мало CPU.

Jigasi — шлюз для участия в Jitsi-конференциях через SIP-телефонию.

Jibri — appliance для записи конференции. использует Selenium с Chromium внутри (и тянет за собой зависимости на Xorg, icewm, модуль ядра snd-aloop). Ведёт себя как ничего не передающий участник записываемой конференции, но Jicofo и клиенты его держат на особом положении. Также заходит по отдельному аккаунту в специальную XMPP-комнату для рекордеров. Их можно (и нужно!) воткнуть несколько, если планируется вести запись нескольких конференций сразу.

Как развернуть?

Minimal Viable Product

Вам потребуются пакеты prosody, jitsi-meet-prosody, jitsi-meet-web, jicofo, jitsi-videobridge. Для размещения нужны:

  • jitsi-videobridge: хост с доступными портами 10000/udp, 4443/tcp и хорошей пропускной способностью (рекомендуется минимум 100Mbps симметрично)
  • веб-сервер: хост с доступным портом 443/tcp
    • Шаблон:Caution обратите внимание: веб-сервер должен поддерживать HTTPS, иначе браузеры откажутся поддерживать на нём WebRTC. Лучше всего сначала выписать SSL-сертификат, а потом продолжать настройку веб-сервера.
  • xmpp-сервер: хост с доступным портом 5280/tcp для работы XMPP-over-HTTP (BOSH).

Установите пакеты:

apt-get install prosody jitsi-meet-prosody jitsi-meet-web jicofo jitsi-videobridge

Теоретически компоненты могут размещаться на разных машинах; на практике мы не рекомендуем устанавливать prosody и jicofo на разные машины — это может привести к низкой производительности сервиса и большим колебаниям задержки связи.

При настройке будем предполагать, что в качестве базового доменного имени выбрано $DOMAIN.

Настройка XMPP-сервера

В файл /etc/prosody/$DOMAIN.cfg.lua напишите:

plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }

-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "$DOMAIN";

cross_domain_bosh = false;
consider_bosh_secure = true;

VirtualHost "$DOMAIN"
    authentication = "anonymous"
    --app_id="example_app_id"
    --app_secret="example_app_secret"
    -- Assign this host a certificate for TLS, otherwise it would use the one
    -- set in the global section (if any).
    -- Note that old-style SSL on port 5223 only supports one certificate, and will always
    -- use the global one.
    ssl = {
        key = "/etc/prosody/certs/$DOMAIN.key";
        certificate = "/etc/prosody/certs/$DOMAIN.crt";
    }
    speakerstats_component = "speakerstats.$DOMAIN"
    conference_duration_component = "conferenceduration.$DOMAIN"
    -- we need bosh
    modules_enabled = {
        "bosh";
        "pubsub";
        "ping"; -- Enable mod_ping
        "speakerstats";
        "turncredentials";
        "conference_duration";
    }
    c2s_require_encryption = false

Component "conference.$DOMAIN" "muc"
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        -- "token_verification";
    }
    admins = { "focus@auth.$DOMAIN" }
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "auth.$DOMAIN"
    ssl = {
        key = "/etc/prosody/certs/auth.$DOMAIN.key";
        certificate = "/etc/prosody/certs/auth.$DOMAIN.crt";
    }
    authentication = "internal_plain"

-- internal muc component, meant to enable pools of jibri and jigasi clients
Component "internal.auth.$DOMAIN" "muc"
    storage = "memory"
    modules_enabled = {
      "ping";
    }
    admins = { "focus@auth.$DOMAIN", "jvb@auth.$DOMAIN" }
    muc_room_locking = false
    muc_room_default_public_jids = true

Component "focus.$DOMAIN"
    component_secret = "xxx" -- достаточно длинный пароль, он же JICOFO_SECRET

Component "speakerstats.$DOMAIN" "speakerstats_component"
    muc_component = "conference.$DOMAIN"

Component "conferenceduration.$DOMAIN" "conference_duration_component"
    muc_component = "conference.$DOMAIN"

Подключение SIP-шлюза jigasi

Подключение рекордера jibri

FAQ

Можно ли использовать не prosody, а другой XMPP-сервер?

Краткий ответ: нет.

В комплекте с Jitsi идут модули для расширения функциональности XMPP-сервера prosody, написанные на Lua; они считаются частью продукта Jitsi Meet. В теории, ничего не мешает написать и поддерживать эти модули для вашего XMPP-сервера; одно время проект Jitsi использовал openfire.