Интеграция Jitsi Meet для видеоконференций на сайте

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Интеграция Jitsi Meet для видеоконференций на сайте
Простая
~3-5 рабочих дней
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    874
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    851

Интеграция Jitsi Meet для видеоконференций на сайте

Jitsi Meet — единственное полноценное решение для видеоконференций с открытым исходным кодом, которое можно развернуть на собственном сервере без лицензионных отчислений. Это отличает его от Zoom SDK, Daily.co и Twilio: нет поминутной тарификации, данные не покидают инфраструктуру. Для корпоративных систем, медицинских платформ, образовательных LMS — принципиальный момент.

Два варианта использования

Jitsi as iframe — самый быстрый путь. Встраивается через Jitsi External API и <iframe>. Публичный сервер meet.jit.si не требует установки — используется для прототипов и некритичных задач.

Self-hosted Jitsi — полный контроль. Сервер развёртывается на Ubuntu 22.04, данные остаются в вашей инфраструктуре, доступна кастомизация интерфейса.

Self-hosted: минимальные требования

  • 1 vCPU, 2 GB RAM — до 10 участников
  • 4 vCPU, 8 GB RAM — до 50 участников (через Jitsi Videobridge)
  • Открытые порты: 443/TCP, 10000/UDP (медиа)
  • Домен с SSL-сертификатом (Let's Encrypt подходит)

Установка через официальный репозиторий:

curl https://download.jitsi.org/jitsi-key.gpg.key | sudo gpg --dearmor -o /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

sudo apt-get update
sudo apt-get install jitsi-meet

Установщик запросит домен и настроит Nginx + Let's Encrypt автоматически.

Встраивание через Jitsi External API

<script src="https://your-jitsi.domain.com/external_api.js"></script>
const domain = 'your-jitsi.domain.com';
const options = {
    roomName: 'meeting-' + roomId,
    width: '100%',
    height: 600,
    parentNode: document.getElementById('jitsi-container'),
    userInfo: {
        displayName: currentUser.name,
        email: currentUser.email,
    },
    configOverwrite: {
        startWithAudioMuted: true,
        startWithVideoMuted: false,
        disableDeepLinking: true,
        prejoinPageEnabled: false,   // убрать экран предпросмотра
    },
    interfaceConfigOverwrite: {
        TOOLBAR_BUTTONS: ['microphone', 'camera', 'desktop', 'chat', 'hangup'],
        SHOW_JITSI_WATERMARK: false,
        SHOW_BRAND_WATERMARK: false,
    },
};

const api = new JitsiMeetExternalAPI(domain, options);

// События
api.addEventListener('videoConferenceJoined', ({ roomName }) => {
    console.log('Joined:', roomName);
    markMeetingStarted(roomName);
});

api.addEventListener('videoConferenceLeft', () => {
    api.dispose();
    redirectToPostMeeting();
});

api.addEventListener('participantJoined', ({ id, displayName }) => {
    logParticipant(id, displayName, 'joined');
});

JWT-аутентификация комнат

По умолчанию Jitsi открыт — любой знающий название комнаты может войти. Для закрытых конференций включается JWT-аутентификация:

# /etc/prosody/conf.avail/your-jitsi.domain.com.cfg.lua
VirtualHost "your-jitsi.domain.com"
    authentication = "token"
    app_id = "myapp"
    app_secret = "your-secret-key"
    allow_empty_token = false

JWT генерируется на вашем бэкенде:

use Firebase\JWT\JWT;

class JitsiTokenService
{
    private const APP_ID = 'myapp';
    private const SECRET = 'your-secret-key';

    public function generate(User $user, string $roomName, bool $isModerator = false): string
    {
        $payload = [
            'iss'  => self::APP_ID,
            'sub'  => 'your-jitsi.domain.com',
            'aud'  => self::APP_ID,
            'room' => $roomName,
            'exp'  => time() + 3600,
            'context' => [
                'user' => [
                    'id'           => (string) $user->id,
                    'name'         => $user->name,
                    'email'        => $user->email,
                    'moderator'    => $isModerator,
                ],
            ],
        ];

        return JWT::encode($payload, self::SECRET, 'HS256');
    }
}

Токен передаётся в опциях External API:

const options = {
    roomName: roomName,
    jwt: '{{ $jitsiToken }}',
    // ...
};

Управление комнатами через API

Jitsi не имеет REST API для управления комнатами из коробки, но Prosody (XMPP-сервер внутри Jitsi) предоставляет HTTP API для статистики:

GET https://your-jitsi.domain.com/colibri/stats

Для отслеживания активных конференций и участников в своей системе используем события External API на стороне клиента и webhook-уведомления.

Сроки

  • Self-hosted установка на сервер + SSL: 0.5 дня
  • Встраивание iframe + базовые события: 1 день
  • JWT-аутентификация комнат: 1 день
  • Интеграция с бизнес-логикой сайта (создание комнат, запись участников): 2–3 дня