В данной инструкции рассматривается развёртывание связки BigBlueButton + Moodle с использованием Scalelite.
BigBlueButton используется как сервер видеоконференций, интегрированный в Moodle, что позволяет проводить онлайн-занятия, вебинары и записывать сессии напрямую внутри учебной платформы. Такой подход даёт полный контроль над пользователями, доступами и данными без зависимости от сторонних сервисов.
Однако один сервер BigBlueButton имеет ограничения по нагрузке и отказоустойчивости. Для решения этой задачи используется Scalelite — балансировщик, который объединяет несколько BBB-серверов в кластер. Это позволяет распределять пользователей между нодами, масштабировать систему по мере роста нагрузки и централизованно хранить записи.
Архитектура и роли серверов
Перед началом установки важно понимать, как устроена система и какую роль выполняет каждый сервер.
В данной инструкции используются три типа компонентов:
1. Сервер Scalelite (bbb.proctus.ru)
Это центральный сервер, к которому подключается Moodle и все пользователи.
- выступает как балансировщик;
- принимает все API-запросы;
- распределяет конференции между BBB-серверами.
Для Moodle вся система выглядит как один сервер, несмотря на то, что внутри используется кластер.
2. Серверы BigBlueButton (bbb1, bbb2, bbb3…)
Это рабочие ноды, на которых непосредственно проходят конференции.
- обрабатывают видео, аудио и чат;
- выполняют запись занятий;
- работают независимо друг от друга.
Scalelite автоматически выбирает наименее загруженный сервер и направляет туда новую конференцию.
3. Зачем используется кластер
Один сервер BigBlueButton ограничен по ресурсам и подходит только для небольшого количества пользователей.
Кластер позволяет:
- добавлять новые серверы (bbb1, bbb2, bbb3 и т.д.);
- равномерно распределять нагрузку;
- масштабировать систему без изменений в Moodle.
Что именно делается в этой инструкции
- bbb.proctus.ru — сервер Scalelite (балансировщик);
- bbb3.proctus.ru — первый сервер BigBlueButton (пример).
В дальнейшем вы можете добавлять дополнительные серверы:
- bbb1.proctus.ru
- bbb2.proctus.ru
- bbb4.proctus.ru
Все они подключаются к Scalelite и работают как единый кластер.
Важно
- Moodle подключается только к Scalelite;
- пользователи не подключаются напрямую к BBB;
- добавление новых серверов не требует изменений в Moodle.
Ниже приведена пошаговая инструкция по развёртыванию Scalelite и BigBlueButton с последующей интеграцией в единый кластер.
Часть 1. Установка Scalelite на bbb.proctus.ru
1. Базовая подготовка сервера
Сначала устанавливаем имя хоста:
hostnamectl set-hostname bbb.proctus.ru
Далее создаём необходимые группы и пользователя. На сервере Scalelite пользователь bigbluebutton используется как технический SSH/rsync-пользователь и должен совпадать по UID/GID с пользователем Scalelite внутри контейнеров.
getent passwd 1000 || true
getent group 1000 || true
groupadd -g 1000 bigbluebutton
groupadd -g 2000 scalelite-spool
useradd -u 1000 -m -g bigbluebutton -d /home/bigbluebutton -s /bin/bash bigbluebutton
usermod -a -G scalelite-spool bigbluebutton
2. Установка Docker
apt update && apt upgrade -y
apt install -y ca-certificates curl gnupg mc
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu jammy stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
apt update && apt upgrade -y
apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-compose
apt autoremove
3. Подготовка директорий для записей
mkdir -p /mnt/scalelite-recordings/var/bigbluebutton/{spool,published,unpublished}
mkdir -p /mnt/scalelite-recordings/var/bigbluebutton/recording/scalelite
chown -R 1000:2000 /mnt/scalelite-recordings/var/bigbluebutton
chmod -R 0775 /mnt/scalelite-recordings/var/bigbluebutton
ln -s /mnt/scalelite-recordings/var/bigbluebutton /var/bigbluebutton
4. Установка Scalelite
git clone https://github.com/jfederico/scalelite-run
cd scalelite-run
5. Настройка файла .env
Ниже пример базовых параметров:
URL_HOST=bbb.proctus.ru
SECRET_KEY_BASE=СГЕНЕРИРОВАТЬ
LOADBALANCER_SECRET=СГЕНЕРИРОВАТЬ
NGINX_SSL=true
LETSENCRYPT_EMAIL=rvu@inbox.ru
# актуальный образ
SCALELITE_DOCKER_IMAGE=blindsidenetworks/scalelite:latest
Практический вариант — сразу создать готовый .env с генерацией ключей:
cat <<EOF > .env
SL_HOST=bbb
DOMAIN_NAME=proctus.ru
SECRET_KEY_BASE=$(openssl rand -hex 64)
LOADBALANCER_SECRET=$(openssl rand -hex 24)
NGINX_SSL=true
SCALELITE_NGINX_EXTRA_OPTS=--mount type=bind,source=/etc/letsencrypt,target=/etc/nginx/ssl,readonly
LETSENCRYPT_EMAIL=rvu@inbox.ru
SCALELITE_DOCKER_IMAGE=blindsidenetwks/scalelite:v1.8.1
SCALELITE_RECORDINGS_DOCKER_IMAGE=bigbluebutton/bbb-playback-proxy:jammy-300-alpine
SCALELITE_RECORDING_DIR=/mnt/scalelite-recordings/var/bigbluebutton
RAILS_LOG_TO_STDOUT=true
RAILS_LOG_LEVEL=info
EOF
6. Проверка docker-compose.yml
Перед запуском убедитесь, что volumes объявлены, например так:
volumes:
postgres-data:
redis-data:
7. Получение SSL-сертификата
Запускаем получение сертификата Let’s Encrypt:
./init-letsencrypt.sh
8. Запуск Scalelite
chmod -R 777 ./log/scalelite-api/
docker compose up -d
docker exec -it scalelite-api bundle exec rails db:prepare
docker exec -it scalelite-api bundle exec rake status
Часть 2. Установка BigBlueButton 3.0 на bbb3.proctus.ru
1. Базовая установка
hostnamectl set-hostname bbb3.proctus.ru
apt update && apt upgrade -y
groupadd -g 1000 bigbluebutton
groupadd -g 2000 scalelite-spool
useradd -u 1000 -m -g bigbluebutton -d /home/bigbluebutton -s /bin/bash bigbluebutton
usermod -a -G scalelite-spool bigbluebutton
wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v3.0.x-release/bbb-install.sh | bash -s -- \
-v jammy-300 \
-s bbb3.proctus.ru \
-e rvu@inbox.ru
После установки проверяем конфигурацию и сохраняем секрет сервера:
bbb-conf --check
bbb-conf --secret
2. Включение video playback
apt install -y bbb-playback-video
Создаём каталог и файл конфигурации:
mkdir -p /etc/bigbluebutton/recording
nano /etc/bigbluebutton/recording/recording.yml
Содержимое файла:
steps:
archive: sanity
sanity: captions
captions:
- process:presentation
- process:video
process:presentation: publish:presentation
process:video: publish:video
3. Включение MP4 вместо WebM
Открываем файл:
nano /usr/local/bigbluebutton/core/scripts/presentation.yml
И переключаем форматы видео так:
video_formats:
# - webm
- mp4
4. Опционально: ускорение обработки записей
Чтобы увеличить количество worker-процессов, выполните:
systemctl edit bbb-rap-resque-worker.service
Добавьте:
[Service]
Environment=COUNT=3
После этого перезапустите сервис:
systemctl restart bbb-rap-resque-worker.service
5. Подготовка директорий для Scalelite
mkdir -p /var/bigbluebutton/recording/scalelite
mkdir -p /var/bigbluebutton/spool
chown -R bigbluebutton:scalelite-spool /var/bigbluebutton/recording/scalelite
chown -R bigbluebutton:scalelite-spool /var/bigbluebutton/spool
chmod -R 0775 /var/bigbluebutton
6. Тест локальной записи
- Создайте комнату.
- Включите запись.
- Завершите конференцию.
После этого проверьте, появилась ли опубликованная запись:
ls /var/bigbluebutton/published
Часть 3. Интеграция BBB с Scalelite через rsync
1. Создание SSH-ключа
На сервере BBB создаём SSH-ключ от пользователя bigbluebutton:
sudo -u bigbluebutton ssh-keygen -t ed25519 -N '' -f /home/bigbluebutton/.ssh/id_rsa
2. Настройка интеграции на сервере BBB
wget -qO- https://raw.githubusercontent.com/jfederico/scalelite-run/master/init-recordings-bigbluebutton.sh | bash -s -- -s bbb.proctus.ru -u bigbluebutton
Скрипт покажет публичный SSH-ключ BBB-сервера. Его нужно добавить на сервер Scalelite в authorized_keys.
3. Добавление публичного ключа на сервере Scalelite
sudo su - bigbluebutton
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
4. Проверка SSH-доступа
С сервера BBB проверяем подключение к Scalelite:
sudo -u bigbluebutton ssh scalelite-spool 'hostname && whoami'
5. Добавление BBB-сервера в кластер
Сначала на BBB получаем секрет:
bbb-conf --secret
Затем на сервере Scalelite добавляем BBB-ноду в кластер:
docker exec -it scalelite-api bundle exec rake servers:add["https://bbb3.proctus.ru/bigbluebutton/api","BBB_SECRET"]
docker exec -it scalelite-api bundle exec rake servers
После того как получите SERVER_ID, включите сервер в пуле и запустите опрос:
docker exec -it scalelite-api bundle exec rake servers:enable[SERVER_ID]
docker exec -it scalelite-api bundle exec rake poll:all
Финальная проверка
После завершения настройки рекомендуется убедиться, что система работает корректно:
- чат и демонстрация экрана работают штатно
- комнаты открываются через Scalelite
- записи создаются и публикуются без ошибок
- видео воспроизводится корректно
Материал подготовлен командой ООО «ДОТ»
Материалы данной страницы могут использоваться и распространяться только с указанием источника:
distedutech.ru