Janus Gateway: видеосвязь в своём приложении на своём сервере
Janus Gateway это WebRTC-сервер общего назначения для видеозвонков, конференций и SIP-моста внутри вашего сайта на вашем сервере. Разбираю лицензию GPL-3.0, плагины, управление, TURN и честно говорю, что готового интерфейса в нём нет.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Сайты и веб-приложенияКогда готовой комнаты мало
Клинике нужна кнопка «Позвонить врачу» в личном кабинете. Онлайн-школе нужен урок внутри платформы, где ученик уже вошёл и видит свои оценки. Консультант хочет, чтобы клиент нажал на ссылку и заговорил прямо в окне вашего сайта.
Для части таких задач хватает готовой комнаты. Я разбирал Jitsi, BigBlueButton для вебинаров и LiveKit для интерактивных эфиров. Janus лежит ниже. Это серверная часть, которая соединяет браузеры по WebRTC и гоняет медиа. Комнаты, роли, кнопки и вход пользователей вы строите сами. Он нужен, когда важна полная свобода интерфейса или мост между браузером и обычной телефонией.
Что это за проект и что я проверил
Проверял 17.10.2026 по репозиторию meetecho/janus-gateway. Разработчик Meetecho, в исходниках автором указан Lorenzo Miniero. Первый коммит от 11 февраля 2014 года, проекту больше двенадцати лет. На странице репозитория около 9,2 тысячи звёзд и 2,6 тысячи форков. Последний коммит от 16 октября 2026 года, за предыдущие 30 дней их 38. Последняя версия v1.4.3: тег и запись в CHANGELOG от 12 октября 2026 года. До неё вышли v1.4.2 (23 сентября) и v1.4.1 (20 апреля). Раздел Releases на странице GitHub при проверке был пуст, поэтому даты беру из тега и CHANGELOG.
Лицензия по файлу COPYING: GNU GPL версии 3. В конце файла добавлено исключение Meetecho, но только про линковку с OpenSSL. Исключения для плагинов там нет. JavaScript-библиотека janus.js лежит под лицензией MIT. Ядро и плагины написаны на C. README говорит, что сервер сделан для Linux, на macOS собирается, а Windows не поддерживается.
Плагины: из чего собирается ваш продукт
Ядро Janus договаривается о соединении и передаёт медиа, логика живёт в плагинах из того же репозитория. По исходникам подтверждены такие:
- VideoRoom: видеокомната по схеме SFU, где каждый публикует свой поток, а остальные подписываются. Подходит от вебинара с одним спикером до конференции на всех. Запись на сервер включается настройкой комнаты.
- AudioBridge: сведение звука в комнате, только Opus, без видео.
- Streaming: раздача в браузер потоков по RTP (например, из GStreamer или FFmpeg), RTSP-источников и файлов.
- Record&Play: запись и воспроизведение в собственном формате MJR.
- TextRoom: текстовые комнаты через data channels. VideoCall: звонок один на один по имени.
- Lua и Duktape (JavaScript): логику плагина пишете скриптом.
SIP-мост и обычные телефоны
SIP-плагин регистрируется на вашем SIP-сервере, например Asterisk, от имени пользователя из браузера. Человек звонит с вашего сайта на добавочный номер или принимает входящий. Во время разговора можно слать DTMF, ставить на удержание и переводить звонок. Для медиа поддерживаются обычный RTP и SDES-SRTP. Собственных телефонных номеров у Janus нет, ему нужен SIP-сервер или оператор, к которому он подключается.
Плагин NoSIP проще: он только переводит медиа между WebRTC и обычным RTP, а сигнализацию ведёт ваше приложение.
Как им управлять и как закрыть доступ
Приложение говорит с Janus по JSON-протоколу. Транспорты в репозитории: HTTP, WebSockets, MQTT, RabbitMQ, Nanomsg и Unix-сокеты.
Доступ закрывается несколькими способами: общий api_secret, авторизация по токенам (подписанные токены HMAC, хэш по умолчанию sha1, sha256 поддерживается) и отдельный admin_secret для административного API. У комнат VideoRoom есть pin, secret и режим signed_tokens. Параметр restrict_info_api прячет от посторонних список плагинов и версий. Так я бы строил вход: человек заходит в ваше приложение, ваш бэкенд выдаёт ему токен на нужную комнату, браузер подключается к Janus с этим токеном.
Что важно учесть
Разработчик нужен и на фронтенд, и на бэкенд, причём знающий WebRTC. В папке html есть демо-страницы под основные плагины. README при этом пишет, что janus.js сделан в основном для демо и не обязательно годится для продакшена, и советует для Node.js библиотеку Janode.
Установка. В README описана сборка из исходников: autogen.sh, configure, make, с набором библиотек. README отдельно предупреждает, что libnice из Ubuntu известен проблемами и лучше собрать свежий. По данным packages.ubuntu.com (вторичный источник) в Ubuntu 24.04 и 26.04 пакет janus имеет версию 1.1.2. В CHANGELOG версий 1.4.2 и 1.4.3 по нескольку исправлений безопасности с пометкой SEC, поэтому версию из дистрибутива нельзя считать равной свежей.
TURN. В конфиге Janus сказано прямо: TURN для пользователей настраивается на стороне клиента, а в Janus его прописывают, только если сам сервер сидит за строгим фаерволом. Значит, отдельный TURN-сервер вам нужен для клиентов из жёстких сетей. В комментарии к конфигу упомянут coturn как совместимый с TURN REST API. Для сервера за NAT есть параметры nat_1_1_mapping и rtp_port_range. Что часть пользователей без TURN не подключится, это общее правило WebRTC.
Нагрузка. Официальных цифр я не нашёл. FAQ говорит, что бенчмарк зависит от плагина и сделать его непросто. Каждый экземпляр Janus автономен, встроенной мультитенантности нет, несколько серверов связывает приложение вокруг.
Лицензия и закон. По GPL-3.0 код сервера открыт. Если вы запускаете Janus у себя и приложение говорит с ним по протоколу, это обычная схема. Если правите код Janus или пишете свой плагин и передаёте сборку заказчикам, условия GPL читайте вместе с юристом, это не моя оценка. В документации Janus про российское законодательство ничего нет. Запись в VideoRoom и SIP-плагине есть как функция, но 152-ФЗ и согласие на запись разговоров я не обещаю.
Что можно сделать уже сейчас
Запишите сценарий: кто кому звонит, сколько человек в комнате одновременно, нужны ли телефонные номера и запись, какие роли. Если нужна просто комната без своего интерфейса, лучше взять готовое. Для односторонних эфиров смотрите Owncast и Restreamer.
Поднимите Janus на тестовом сервере и откройте демо VideoRoom из папки html. Проверьте звонок из домашней сети и с мобильного интернета.
Поставьте TURN и повторите проверку из офиса с жёстким фаерволом.
Дальше макет: бэкенд с выдачей токенов и страница с видеоокном в вашем кабинете. Собрать это под ключ могу в рамках услуги по сайтам и веб-приложениям.
Частые вопросы
Можно ли поставить Janus на Windows?
Нет, README говорит, что Windows не поддерживается. Неофициальным сборкам .exe доверять не стоит.
Можно ли принимать звонки с обычного телефона?
Через SIP-плагин, если есть SIP-сервер или оператор, который доставляет вызов. Сам Janus номеров не даёт.
Как масштабировать на несколько серверов?
По FAQ проекта встроенной поддержки нет: экземпляр работает сам по себе, а несколькими управляет ваше приложение.
Коротко о главном
Janus Gateway под GPL-3.0 даёт серверную основу для встроенного видео и SIP-моста на вашем сервере. Интерфейс, токены, TURN, обновления и нагрузочные испытания остаются на вашей команде.
Если хотите встроить видеозвонок в свой сайт или приложение, напишите мне в Telegram кодовое слово «ВИДЕОСВЯЗЬ». Я оценю задачу и скажу, хватит ли готовой комнаты.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


