Как обычно, без предупреждения и со словами от Роскомнадзора «это не я» в России неожиданно деградировали сервисы видеоконференций. Причем выборочно: если в Telegram и WhatsApp это было объявлено, то Google Meet, который, как и YouTube, начали «замедлять», стал неожиданностью. Zoom-то остался работать, как и Teams.
Мы также использовали в своей работе Google Meet, и у нас все встречи, как внутренние, так и внешние, были преимущественно в нем. Поэтому встал вопрос: что делать?
Так как это «замедление», то можно было бы использовать запрещенную вещь из трех букв. Но этот способ хоть и работал, но был проблематичен по многим вещам: от внутренней корпоративной приватной сети до проблем с законодательством. Да и использование виртуальных частных сетей не спасало ситуацию на 100% — для собраний на 3-4-5 человек еще хватало пропускной способности, но если хотелось сделать общий мит на большее число человек, то получалось слайд-шоу с массовым отвалом.
Варианты решения проблемы
Устроенный «мозговой штурм» привел к следующим вариантам:
- Плюнуть на всё и продолжать использовать Google Meet и инструмент на три буквы. Опасно по законодательству, есть проблемы с корпоративной сетью и не факт, что будет работать у всех и без проблем;
- Использовать Zoom. Из плюсов — на бесплатном тарифе миты более чем на 40 минут не затянутся. Минус — не факт, что не забанят вскоре;
- Использовать Яндекс Телемост, благо почта у компании на Яндекс 360. Плюс — уже заплачено в бизнес-тарифе. Минус… Есть некоторые проблемы при подключении из-за пределов РФ, а у нас сервера и часть команды из-за этого не только в России;
- Использовать видеоконференции в NextCloud. Опять же, он используется у нас как внутреннее хранилище для файлов документов и стоит свой собственный инстанс сервиса. Плюс — уже всё есть, надо только всё настроить. Минус — никто не захотел этим заниматься;
- Использовать self-hosted сервисы с открытым кодом. Тут вариантов два: BigBlueButton или Jitsi Meet. Посмотрев на системные требования и сложности по установке и настройке, выбрали последний.
Разворачиваем Jitsi Meet
В разворачивании Jitsi, по сути, ничего сложного нет. Разве что добавили LDAP для авторизации, но всё остальное интуитивно понятно по официальной документации. Ставили мы его на VPS по следующему алгоритму, который идет в виде Ansible-скрипта:
-
Установка Docker. Устанавливаем Docker на сервере, который нужен для запуска Jitsi в контейнере.
-
Установка зависимостей. Пакет docker-compose используется для запуска Jitsi, а unzip — для распаковки архива с настройками.
-
Создание директории для проекта. Создаём папку, например /opt/jitsi. Это место для хранения всех файлов, связанных с Jitsi, чтобы всё было организовано.
-
Скачивание архива с Jitsi. Скрипт загружает архив jitsi-meet-docker.zip из указанного URL на сервер и сохраняет его в /tmp. Этот архив содержит готовые файлы для запуска Jitsi через Docker.
-
Распаковка архива. Архив из /tmp распаковывается в созданную ранее директорию. Теперь на сервере есть все файлы, необходимые для запуска Jitsi.
-
Настройка портов в Docker. Создаём файл docker-compose.override.yml, который добавляет настройки для открытия портов:
- Prosody (сервер XMPP) использует порт 5280 для внутреннего трафика.
- JVB (видеосервер Jitsi) открывает порт 4443 для внешнего доступа.
Это позволяет Jitsi корректно работать с видео- и аудио-потоками, а также подключаться к серверу через интернет.
-
Генерация паролей. Запускаем скрипт gen-passwords.sh, который создаёт безопасные пароли для Jitsi. Это обеспечивает защиту Jitsi от несанкционированного доступа извне.
-
Настройка переменных в .env. В файл .env добавляем настройки:
- JVB_STUN_SERVERS=stun.l.google.com:19302 — указывает серверы STUN для улучшения соединений.
- JVB_TCP_HARVESTER_DISABLED=false — включает сбор трафика через TCP.
- JVB_TCP_PORT=4443 — задаёт порт для TCP-трафика.
Эти настройки обеспечивают стабильную работу Jitsi, особенно при сложных сетевых условиях.
- Запуск Jitsi через Docker. Команда docker compose up -d запускает все контейнеры в фоновом режиме. Теперь Jitsi работает на сервере, и пользователи могут подключаться к нему через браузер.
Вы же можете заказать себе виртуальный сервер сразу с Jitsi в один клик и без необходимости проделывания манипуляций на сервере через SSH.

Испытание на прочность
Мы работаем с Jitsi уже пару недель, и уже можно подвести какие-то промежуточные итоги. Начнем с сервера и нагрузочной способности.
VPS типа vm.v2.medium (Xeon Gold 6226R, 8 ядер, 16 Гб ОЗУ, 160 GB NVMe) вполне хватает. Даже с запасом. У нас на нее настроен мониторинг, где показывается уровень стресса. Когда в мите было 12 человек, 8 из которых включили видео, уровень стресса был 0,25, а в среднем без видео — 0,1, а то и меньше. Например, встреча на 13 человек нагрузила сервер не более чем на 0,04, что позволяет проводить параллельно до 10 встреч без видео на 10–15 человек в каждой спокойно.

Jitsi плохо работает, когда уровень стресса 0,9 и выше, но если брать максимальное число людей на встрече, то мы рассчитывали на 25–30 человек с видео единовременно, и он сервер такое число народу выдержал. И нам никто не мешает добавить машине больше ядер или перенести сам сервер на более мощную платформу.
Минимальные же требования для Jitsi это VPS с 2 виртуальными ядрами и 2 Гб ОЗУ (например vm.v2-nano или лучше).

Единственное, что стоит отметить: Jitsi у всех по-разному работает под корпоративной приватной сетью. У некоторых коллег он постоянно вылетает, но это единичные случаи, и у большинства сотрудников такое не наблюдалось. Думаю, если мы перенесём сервер на белый адрес (сейчас он в «серой» внутренней сети), всё будет отлично.
Недостатки
А теперь о проблемах, которые возникли у нас и могут возникнуть и у вас тоже:
- Нет интеграции с календарями «из коробки», с тем же Google Calendar. Точнее, она есть, но плагин существует только для сервера от самих разработчиков Jitsi, а не для коммьюнити-версии. Поэтому об удобстве, как у Google Meet, можно забыть. Плагин есть только для Outlook. Мы решили этот вопрос уведомлениями в Rocket Chat, или можно создавать события в календарях вручную и туда вставлять ссылку на миты.
- Нет встроенного управления митами: по дефолту кто угодно может создавать какие угодно миты и приглашать туда кого угодно. Мы закрываем сейчас доступ к Jitsi через LDAP, но для построения инфраструктуры с переговорными комнатами, модераторами и т. п. необходимо ставить и настраивать плагины, такие как Galaxy или Jitsi Admin. Пока что нам хватает общего функционала.
- Кто первый, тот и админ, если не запретить. Первый, кто пришел на встречу, ей и будет управлять и иметь возможность записи встречи и т. п. Решается это настройками внутри самой встречи, при создании, увы, это не сделать — вы должны зайти внутрь встречи, потом только включить лобби и установить пароль на нее.

В остальном функционала хватает: расширение экрана, чат, настройка производительности, возможность встраивать встречи на сайт и т. п. Да, не возможности Google Meet или Zoom, но близко и с отличным качеством звука и видео.

Итоги
Мы остаемся на Jitsi Meet и будем ее допиливать дальше. Как корпоративное средство для встреч или переговоров Jitsi будет наиболее простым и самым низкоресурсоемким способом организовать их. А быстрое развертывание, которые мы уже сделали для вас, позволяет поднять свой сервер за минуты без чтения мануалов.
А каким средством видеоконференций вы пользуетесь?