Развёртывание Scalelite + BigBlueButton 3.0 для Moodle

В данной инструкции рассматривается развёртывание связки 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. Тест локальной записи

  1. Создайте комнату.
  2. Включите запись.
  3. Завершите конференцию.

После этого проверьте, появилась ли опубликованная запись:

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

09.04.2026
Вернуться