Bbb

Материал из wiki.nntc.nnov.ru
Версия от 18:55, 31 августа 2025; Vovan (обсуждение | вклад) (Установка BBB, если требуется внешний reverse-proxy снаружи)
Перейти к навигации Перейти к поиску

Проблематика

Работа BBB за NAT

Когда веб-клиент пытается установить соединение с аудио посредством WebRTC, то в протоколе внутри WebSocket сервер отдаёт внутренний IP сервера вместо внешнего. На этом этапе аудио соединение рушится и это проблема.

Проксирование через Nginx

Если порт 443 и 80 заняты другим сервером (очень часто так бывает), то для работы BBB на определённом домене необходимо настраивать реверс-прокси на внешнем веб сервере (как правило это Nginx). В случае с BBB здесь достаточно хитрая настройка reverse-proxy.

Также необходимо учитывать, что инсталлер BBB не может установить решение без использования certbot и настройки валидного сертификата (с некоторых пор без валидного сертификата в браузерах не работает WebRTC. Вот совсем не работает... Совсем-совсем...).

Поэтому алгоритм установки BBB для работы за reverse-proxy тоже специфический. Можно даже это назвать некоторым лайвхаком...

Решение

Установка BBB, если требуется внешний reverse-proxy снаружи

1. С наружнего роутера забрасываем 80 порт на внутренний ip BBB сервера (вероятно, он используется уже на действующем решении, где работает certbot и обновляет посредством этого 80 порта другие сертификаты LE, однако придётся его временно перерулить на внуренний ip BBB сервера, ведь certbot-у на этом сервере тоже нужно убедиться, что это тот сервер, который имеет право получить валидный сертификат);

2. UDP порты 16384-32768 снаружи заруливаем на внутренний ip адрес BBB и оставляем так навсегда;

3. Запускаем скрипт установки

./bbb-install.sh -v jammy-300 -s my-bbb-server.ru -e vasya@mail.ru

, где

my-bbb-server.ru

это домен вашего будущего сервера BBB, а

vasya@mail.ru

это емэйл, на который будет если что писать certbot (в нашем случае не будет, т.к. мы отключим его. Потому что у нас на реверс-прокси есть свой сертбот, который будет обновлять фронтальный сертификат. А внутри BBB сервера через 30 дней сертификат перестанет быть валидным - ну и ладно. Наружнему реверс-прокси будет сказано игнорировать это. И да, это будет безопасно для конечного пользователя);

4. Ждём завершения установки;

5. Возвращаем 80 порт на место.

Практически всё готово. Но не всё...

Настройка внешней системы на BBB сервер на примере MOODLE

На BBB-сервере выполняем команду

bbb-conf --secret

и получаем в ответ что-то типа

URL: https://sferum.nntc.nnov.ru/bigbluebutton/
Secret: vUftg5lCmWvRC7ZUftg5lCmWvRCgByIRPZD31ffPYuQcdcQv0Z2Vu

Далее идём в настройки плагина (можно найти на официальном сайте BBB) и вставляем туда эти данные.

Всё.

Исправление ошибки с передачей локального ip адреса BBB сервера на веб-клиент

Как выше было описано, проблема работы звука на BBB сервере, находящемся за NAT, заключается в том, что веб-клиент получает от сервера локальный адрес, который, конечно же, неведом клиенту, который подключается к конференции из интернета.

Чтобы это исправить, нужно перенастроить сервис, посредством которого этот адрес оказывается в протоколе, посредством которого клиент и сервер через вебсокет устанавливают соединение.

Для этого на сервере BBB открываем файл

/etc/bigbluebutton/bbb-webrtc-sfu/production.yml

и заменяем в нём везде значение параметра

announcedIp

на домен, на котором будет работать ваш сервер.

В случае с этой статьёй это домен