Bbb
Содержание
Проблематика
Работа 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
на домен, на котором будет работать ваш сервер.
В случае с этой статьёй это домен