MAATRIX / Блог / Как установить и настроить Jitsi Meet на VPS

Как установить и настроить Jitsi Meet на VPS

MAATRIX

Zoom требует установки клиента, упирается в лимиты бесплатного тарифа и хранит записи звонков на чужих серверах. Jitsi Meet решает все три проблемы разом: участники заходят по ссылке прямо в браузере, лимитов по времени нет, а данные остаются на вашей инфраструктуре. Разворачивается это на обычном VPS за 20-30 минут, если знать, где обычно спотыкаются новички.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →

Что такое Jitsi Meet и зачем он на своём сервере

Jitsi Meet — открытая платформа видеоконференций, которую можно поставить целиком на свой сервер вместо использования публичного meet.jit.si. У self-hosted варианта три практических плюса.

Во-первых, приватность: аудио, видео и чат не проходят через инфраструктуру третьей стороны, что критично для юридических консультаций, медицинских созвонов или корпоративных переговоров. Во-вторых, контроль — вы сами задаёте лимиты по числу участников, включаете аутентификацию, настраиваете брендинг под свой домен. В-третьих, экономика: публичный meet.jit.si периодически подкидывает уведомления о перегрузке в часы пик, а свой сервер зависит только от вашего железа.

Полный стек Jitsi состоит из нескольких компонентов, которые работают вместе:

  • Prosody — XMPP-сервер, отвечает за сигнализацию (кто к кому подключается, обмен служебными сообщениями);
  • Jicofo (Jitsi Conference Focus) — управляет конференциями, назначает медиа-серверы;
  • JVB (Jitsi Videobridge) — маршрутизирует медиапотоки между участниками, самый требовательный к ресурсам компонент;
  • jitsi-meet — веб-фронтенд, который видят пользователи.

Официальный установщик разворачивает всё это одной командой через apt, но конфигурация после установки — отдельная и самая важная часть работы.

Требования к серверу

Jitsi не тяжёлый по CPU в состоянии покоя, но нагрузка растёт линейно с числом одновременных видеопотоков — JVB перекодирует и ретранслирует медиа для каждого участника.

СценарийvCPURAMДискПримерное число участников
Тесты, 1-3 человека12 GB20 GB SSDдо 4
Небольшая команда24 GB30 GB SSDдо 15-20
Регулярные созвоны/вебинары48 GB50 GB SSDдо 40-50
Крупные конференции8+16 GB+80 GB+ SSD50+

Цифры по числу участников — ориентир, не гарантия: реальная ёмкость зависит от того, сколько людей включают камеры одновременно, от разрешения видео и от качества сети до сервера. Одна конференция на 50 человек с включённым видео у всех нагрузит JVB заметно сильнее, чем вебинар на 200 слушателей с одним спикером в кадре.

Отдельно важна пропускная способность канала: видеозвонок в среднем качестве съедает 2-4 Мбит/с на участника в каждую сторону, так что для конференций от 10+ человек стоит смотреть VPS с гарантированной полосой, а не с урезанным shared-каналом. Для проекта, где важна низкая задержка до пользователей в России, разумно смотреть аренду VPS в России или, если аудитория международная, локацию в US/UK — сервер в MAATRIX можно арендовать с оплатой картой или криптой, без привязки к зарубежным платёжным системам.

ОС — Ubuntu 24.04 LTS или Debian 12, оба официально поддерживаются проектом Jitsi.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Подготовка: домен, DNS и firewall

Перед установкой Jitsi нужны две вещи: полностью настроенный домен, указывающий на IP сервера, и открытые порты.

Заводим A-запись домена (например, meet.example.com) на IP вашего VPS. Если DNS ещё не настроен, разберитесь с ним заранее — процесс подробно описан в статье про настройку домена и DNS с нуля на Ubuntu 24.04. TLS-сертификат Jitsi получает автоматически через Let's Encrypt на этапе установки, но это работает только если домен уже резолвится на сервер и порт 80 открыт для HTTP-01 challenge.

Порты, которые нужно открыть в firewall:

80/tcp   - HTTP (для получения и обновления сертификата)
443/tcp  - HTTPS (веб-интерфейс)
4443/tcp - JVB, fallback-канал для медиа через TCP
10000/udp - JVB, основной канал для медиапотоков (WebRTC)

Если используете UFW:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 4443/tcp
sudo ufw allow 10000/udp
sudo ufw enable
sudo ufw status

Порт 10000/udp — самый частый источник проблем: если провайдер или облако режет UDP по умолчанию (актуально для некоторых NAT-конфигураций и части облачных фаерволов), звонки будут либо не устанавливаться, либо падать в деградированное качество через TCP-фолбэк на 4443. Если UFW для вас в новинку, есть отдельный разбор установки и настройки UFW на VPS с типичными ошибками.

Установка Jitsi Meet

Официальный путь — через apt-репозиторий Jitsi. Выполняем на чистом сервере от имени пользователя с sudo.

Добавляем ключ и репозиторий:

curl -sL 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 update

Перед установкой стоит убедиться, что hostname сервера совпадает с доменом — установщик спрашивает FQDN и использует его для генерации конфигов Prosody:

sudo hostnamectl set-hostname meet.example.com

Ставим сам пакет:

sudo apt install jitsi-meet

В процессе установки будет два диалоговых окна:

  1. Hostname конференции — вводите тот же домен, что в DNS (meet.example.com).
  2. SSL-сертификат — выбирайте "Let's Encrypt certificates (automatically obtain and enable)". Установщик попросит email для уведомлений об истечении и сам выпустит сертификат через certbot.

Если Let's Encrypt на этапе установки не сработал (например, DNS ещё не пропагировался), сертификат можно донастроить позже вручную:

sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh

После установки Jitsi уже доступен по https://meet.example.com и полностью работоспособен для базового сценария — можно создать комнату и позвать участников.

Базовая настройка: аутентификация и лимиты

По умолчанию Jitsi позволяет любому создать конференцию с любым названием — это удобно для теста, но для боевого использования почти всегда нужна аутентификация: чтобы комнаты мог создавать только авторизованный пользователь, а гости лишь присоединялись по ссылке.

Включаем guest-режим с аутентификацией модератора. В /etc/prosody/conf.avail/meet.example.com.cfg.lua находим секцию VirtualHost "meet.example.com" и меняем:

VirtualHost "meet.example.com"
    authentication = "internal_hashed"

Добавляем гостевой домен (если его ещё нет в конфиге — установщик обычно создаёт заготовку):

VirtualHost "guest.meet.example.com"
    authentication = "anonymous"
    modules_enabled = {
        "bosh";
        "turncredentials";
    }
    c2s_require_encryption = false

В /etc/jitsi/meet/meet.example.com-config.js указываем гостевой домен:

anonymousdomain: 'guest.meet.example.com',

В /etc/jitsi/jicofo/jicofo.conf включаем требование аутентификации:

jicofo {
  authentication {
    enabled = true
    type = XMPP
    login-url = "meet.example.com"
  }
}

Создаём пользователя, который сможет заводить конференции:

sudo prosodyctl register admin meet.example.com надёжный_пароль

После изменений перезапускаем сервисы:

sudo systemctl restart prosody jicofo jitsi-videobridge2 nginx

Теперь создавать комнаты сможет только пользователь admin, а участники по ссылке будут заходить как гости без пароля — стандартная схема для команд и клиентских созвонов.

Оптимизация JVB для стабильности видео

JVB — самый нагруженный компонент, и на VPS за NAT (что типично для облачных провайдеров) ему нужно явно указать публичный IP, иначе он будет объявлять клиентам внутренний адрес и медиапотоки не установятся.

В /etc/jitsi/videobridge/sip-communicator.properties добавляем:

org.ice4j.ice.harvest.NAT_HARVESTER_LOCAL_ADDRESS=10.0.0.5
org.ice4j.ice.harvest.NAT_HARVESTER_PUBLIC_ADDRESS=203.0.113.10

Где первый адрес — приватный IP интерфейса сервера (ip addr покажет), второй — публичный IP, на который смотрит DNS. Если у VPS нет NAT и публичный IP присвоен напрямую на интерфейс, эту секцию можно не трогать — Jitsi определит адрес сам.

Для серверов с ограниченной RAM стоит подрезать heap JVB, иначе Java-процесс возьмёт больше памяти, чем разумно на 2-4 GB сервере. В /etc/jitsi/videobridge/jvb.conf или через systemd override:

sudo systemctl edit jitsi-videobridge2
[Service]
Environment="VIDEOBRIDGE_MAX_MEMORY=1g"

Перезапуск:

sudo systemctl daemon-reload
sudo systemctl restart jitsi-videobridge2

Если сервер начинает захлёбываться при росте числа участников — это почти всегда упирается либо в CPU (кодирование/декодирование видео), либо в память JVB, либо в полосу канала. Мониторинг нагрузки стоит настроить заранее, а не разбирать постфактум: подход к диагностике описан в статье про поиск причины высокой нагрузки на процессор.

Ограничение числа участников и запись звонков

Два практичных момента, которые часто нужны сразу после базовой установки.

Лимит участников на комнату. Задаётся в Jicofo, чтобы случайно не положить сервер конференцией на 100 человек, если ресурсов хватает на 20. В /etc/jitsi/jicofo/jicofo.conf:

jicofo {
  conference {
    max-participants = 25
  }
}

Запись конференций (Jibri). Штатный компонент для записи — Jibri, но он требует отдельной установки, headless Chrome и заметно больше ресурсов (по сути отдельную виртуальную машину или контейнер с доступом к X11 и видеокарте для рендеринга). Разворачивать Jibri на том же VPS, где крутится JVB, стоит только если сервер запаса по CPU и RAM ощутимо больше рекомендованного минимума — иначе запись начнёт конкурировать за ресурсы с самими звонками и трясти видео у участников. Для нечастой записи проще временно поднять второй VPS под Jibri и подключить его к основному Jitsi-инстансу по XMPP.

Более лёгкая альтернатива — запись через встроенный "Local Recording" (сохраняет файл в браузере клиента) или трансляция в собственный RTMP-приёмник, если запись нужна не как файл, а как поток для внешнего сервиса.

Нужен сервер под эту задачу?

Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK, США, Франция и РФ. Оплата картой РФ и по СБП.

Арендовать сервер

Нужны сами нейросети для контента?

Генерируйте изображения, видео и озвучку нейросетями на falapi.io — десятки моделей в одном окне. Оплата картой РФ и по СБП.

Частые вопросы

Можно ли использовать Jitsi Meet бесплатно без своего сервера?

Да, публичный meet.jit.si бесплатен, но данные проходят через инфраструктуру Jitsi/8x8, лимиты и стабильность не гарантированы, а брендинг и аутентификацию под себя не настроить. Self-hosted вариант даёт полный контроль ценой администрирования сервера.

Почему участники видят чёрный экран или не подключается видео?

В 9 случаях из 10 это порт 10000/udp — либо закрыт в firewall, либо JVB объявляет клиентам приватный IP вместо публичного из-за отсутствия NAT_HARVESTER настроек. Проверьте оба пункта из разделов выше.

Сколько человек реально выдержит сервер на 4 vCPU / 8 GB?

Зависит от того, у скольких участников включена камера одновременно. Условный ориентир — 30-40 человек с активным видео, но конференция с одним спикером и остальными в режиме "только звук" пройдёт заметно легче. Тестируйте под свою нагрузку перед боевым использованием.

Нужен ли отдельный TURN-сервер?

Jitsi по умолчанию использует встроенный TURN на базе того же JVB (порт 4443/tcp как fallback), и для большинства сценариев этого достаточно. Внешний TURN-сервер (например, coturn) имеет смысл разворачивать отдельно только при очень большой нагрузке или сложной сетевой топологии клиентов.

Как обновить Jitsi Meet до новой версии?

Через стандартный sudo apt update && sudo apt upgrade — пакет входит в тот же репозиторий. Перед обновлением на продакшене стоит сделать снапшот сервера, поскольку мажорные обновления Jitsi иногда меняют формат конфигов.

Обсудить статью, задать вопрос или начать новую тему

Есть вопрос по этой статье, идея для обсуждения или просто хотите поделиться опытом? Сообщество MAATRIX ждёт. Для общения, пожалуйста, зарегистрируйтесь в нашем личном кабинете.

Перейти в сообщество →