Пошаговый план обновления BigBlueButton в контейнере (с бэкапом и откатом)

Дата: 2026-02-10
Контейнер: BBB-CONT22-1 (10.218.14.37)
Домен: school.cdto.life
Текущая версия: 3.0.19 (3240)
Целевая версия: 3.0.21 (или последняя 3.0.x)


Обзор

Обновление выполняется внутри LXD-контейнера BBB-CONT22-1. Официальный способ обновления BigBlueButton 3.0 — повторный запуск скрипта bbb-install.sh с теми же параметрами; он обновит пакеты до последней 3.0.x.

Перед обновлением обязательны: полное сохранение состояния (конфиги + LXD-снимок контейнера), при необходимости — бэкап записей и БД. Откат — восстановление контейнера из снимка.


Фаза 0: Подготовка (на хосте)

Шаг Действие Команда / примечание
0.1 Выбрать окно обслуживания Минимум 30–60 минут без активных конференций
0.2 Убедиться, что контейнер запущен lxc list BBB-CONT22-1 — статус RUNNING
0.3 Проверить текущую версию lxc exec BBB-CONT22-1 -- bbb-conf --version
0.4 Сохранить секрет API (на случай отката конфигов) lxc exec BBB-CONT22-1 -- bbb-conf --secret → записать URL и Secret

Фаза 1: Бэкап (обязательно)

1.1 Полное сохранение состояния (конфиги + LXD-снимки)

Выполняется на хосте из репозитория DENKART:

cd /home/cdto/DENKART/scripts
./save-state-before-migration.sh pre-bbb-upgrade

Создаётся каталог config/snapshots/state-pre-bbb-upgrade-<timestamp>/ с:
- правилами iptables;
- копиями конфигов (iptables, nginx, haproxy);
- конфигами из контейнеров (LXD, haproxy BBB, nginx);
- LXD-снимками контейнеров BBB-CONT22-1, docs-denkart, nginx-reverse-proxy с именем pre-proxy-YYYYMMDD-HHMM.

Имя снимка BBB сохраните — оно понадобится для отката (см. вывод скрипта или MANIFEST.txt в каталоге снимка).

1.2 (Рекомендуется) Дополнительный снимок только BBB

Чтобы иметь отдельную точку отката именно контейнера BBB:

SNAP_NAME="pre-bbb-upgrade-$(date +%Y%m%d-%H%M%S)"
lxc snapshot BBB-CONT22-1 "$SNAP_NAME"
echo "Снимок BBB для отката: $SNAP_NAME"

1.3 (По желанию) Полный бэкап BBB (записи, PostgreSQL)

Если важны записи и данные Greenlight:

sudo /home/cdto/DENKART/scripts/backup-bbb.sh

Бэкап сохраняется в /D/backups/bbb/<timestamp>/ (snapshot контейнера, дамп PostgreSQL, конфиги).

1.4 Закоммитить и выгрузить точку отката

cd /home/cdto/DENKART
git add -A
git status
git commit -m "Состояние перед обновлением BBB (pre-bbb-upgrade). Снимок: state-pre-bbb-upgrade-<timestamp>"
git push origin develop

При необходимости создать тег:

git tag -a v1.x-pre-bbb-upgrade -m "До обновления BBB 3.0.19 -> 3.0.21"
git push origin v1.x-pre-bbb-upgrade

Фаза 2: Обновление BBB внутри контейнера

Все команды ниже выполняются внутри контейнера BBB-CONT22-1 (через lxc exec BBB-CONT22-1 -- ...) или в интерактивной оболочке: lxc exec BBB-CONT22-1 -- bash.

2.1 Подготовка в контейнере

lxc exec BBB-CONT22-1 -- bash -c 'apt update && apt list --upgradable | grep -E "bbb-|bigbluebutton" || true'

Проверить, что репозиторий BigBlueButton доступен.

2.2 Обновление через bbb-install (рекомендуемый способ)

Официальная документация: обновление 3.0 выполняется повторным запуском bbb-install.sh. Скрипт нужно запустить внутри контейнера с теми же параметрами, что и при установке (хостнейм, email для Let's Encrypt и т.д.).

Вариант A — последняя 3.0.x:

lxc exec BBB-CONT22-1 -- bash -c 'wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v3.0.x-release/bbb-install.sh | bash -s -- -v jammy-300 -s school.cdto.life -e ВАШ_EMAIL'

Замените ВАШ_EMAIL на email, использованный при первичной установке (для Let's Encrypt).

Вариант B — конкретная версия 3.0.21:

lxc exec BBB-CONT22-1 -- bash -c 'wget -qO- https://raw.githubusercontent.com/bigbluebutton/bbb-install/v3.0.x-release/bbb-install.sh | bash -s -- -v jammy-300-3.0.21 -s school.cdto.life -e ВАШ_EMAIL'

Если в контейнере уже настроены SSL и firewall (UFW), можно при необходимости опустить -w (не трогать UFW). Если при первой установке использовались другие флаги (например -g для Greenlight), добавьте их.

2.3 Конфликт конфигов при обновлении

Если при установке пакетов появится запрос о сохранении изменённого конфига (например /etc/default/bbb-graphql-server):

  • Выбрать «Keep current» или оставить текущий файл, если вы его правили.
  • Если позже появятся ошибки GraphQL, сравнить с дистрибутивным:
    ls -l /etc/default/bbb-graphql-server*
    При необходимости:
    sudo mv /etc/default/bbb-graphql-server.dpkg-dist /etc/default/bbb-graphql-server
    и перезапуск:
    sudo bbb-conf --restart

2.4 Перезапуск и проверка

lxc exec BBB-CONT22-1 -- bbb-conf --restart
lxc exec BBB-CONT22-1 -- bbb-conf --check
lxc exec BBB-CONT22-1 -- bbb-conf --version

Убедиться, что в выводе bbb-conf --check нет критичных ошибок (блок «Potential problems»). Проверить статус сервисов:

lxc exec BBB-CONT22-1 -- bbb-conf --status

Фаза 3: Проверка после обновления

Шаг Действие Команда / способ
3.1 Версия lxc exec BBB-CONT22-1 -- bbb-conf --version — ожидается 3.0.21 (или выбранная 3.0.x)
3.2 API curl -s https://school.cdto.life/bigbluebutton/api/version (с хоста или извне)
3.3 Сайт и вход Открыть https://school.cdto.life в браузере, войти, создать комнату
3.4 Звук/видео Краткий тест микрофона и камеры в конференции
3.5 Записи При необходимости проверить воспроизведение существующей записи

При проблемах — см. раздел «Откат» ниже.


Откат (если обновление прошло неудачно)

Вариант 1: Восстановление контейнера из LXD-снимка

Используется снимок из шага 1.1 или 1.2. Имя снимка — из вывода save-state-before-migration.sh или pre-bbb-upgrade-YYYYMMDD-HHMMSS.

# Остановить контейнер
lxc stop BBB-CONT22-1

# Восстановить из снимка (подставьте фактическое имя)
lxc restore BBB-CONT22-1 pre-proxy-YYYYMMDD-HHMM
# или, если делали отдельный снимок BBB:
# lxc restore BBB-CONT22-1 pre-bbb-upgrade-YYYYMMDD-HHMMSS

# Запустить контейнер
lxc start BBB-CONT22-1

# Проверить версию и сервисы
lxc exec BBB-CONT22-1 -- bbb-conf --version
lxc exec BBB-CONT22-1 -- bbb-conf --check

После отката снова проверить https://school.cdto.life и API.

Вариант 2: Восстановление конфигов и iptables (если откатывали только хост)

Если меняли что-то на хосте (iptables, конфиги nginx и т.д.) и нужно вернуть их к состоянию до обновления:

# Восстановление iptables
sudo iptables-restore < /home/cdto/DENKART/config/snapshots/state-pre-bbb-upgrade-<timestamp>/iptables.rules

# Конфиги — скопировать вручную из каталога state-pre-bbb-upgrade-<timestamp> в config/iptables, config/nginx и т.д., затем применить по вашей процедуре.

Вариант 3: Откат кода/документации репозитория

Если создавали тег перед обновлением:

cd /home/cdto/DENKART
git checkout v1.x-pre-bbb-upgrade

Краткая шпаргалка по шагам

  1. Бэкап: ./scripts/save-state-before-migration.sh pre-bbb-upgrade → снимок BBB → (по желанию) backup-bbb.sh → git commit + push.
  2. Обновление: в контейнере запустить bbb-install.sh с -v jammy-300 (или -v jammy-300-3.0.21) и теми же -s, -e, что при установке.
  3. Проверка: bbb-conf --restart, bbb-conf --check, bbb-conf --version, проверка https://school.cdto.life и API.
  4. Откат: lxc stop BBB-CONT22-1lxc restore BBB-CONT22-1 <имя_снимка>lxc start BBB-CONT22-1 → проверить.

Связанные документы