← Назад к «Обновление системы»

Обновление системы LSUS

Процедура обновления уже развёрнутых компонентов LSUS: серверных ролей в Docker, агента lsus-client и (при необходимости) lsus-usb-control. Подход тот же, что при первичной установке — локальные пакеты .deb / .rpm, сохранение /opt/lsus-docker/.env и данных на диске.

Установка с нуля — Развёртывание серверов. Справочник переменных — Справочник. Клиент — Клиент LSUS.

Принципы обновления

Принцип Смысл
Пакеты с диска apt install ./… или dnf install ./… из каталога поставки, как при установке; на Альт Сервере — apt-get install ./… от root (su -)
Порядок пакетов Сначала образы (lsus-image-postgres, lsus-image-pgbouncer — только Master/Site, lsus-image-nginx, lsus-image-<роль>), затем ролевой пакет (lsus-master, lsus-site, lsus-edge). На практике достаточно одного ролевого пакета — остальные подтянутся по Depends/Requires.
.env не затирается Если .env уже есть, пакет не перезаписывает его — сохраняются пароли, порты и пути. Добавляются только недостающие безопасные defaults PostgreSQL/пулов
Данные сохраняются Каталог DATA_DIR и вынесенные диски остаются между обновлениями; меняются только образы и контейнеры
Контейнеры пересоздаются автоматически Скрипт postinst ролевого пакета сам делает docker load образов и docker compose … up -d --force-recreate

Перед обновлением

  1. Ознакомьтесь с описанием релиза и историей изменений на портале поставки.
  2. Запланируйте окно обслуживания: на время пересоздания контейнеров возможна краткая недоступность веб-интерфейса и API.
  3. Выполните резервное копирование по регламенту организации.

warningОбязательно сделайте резервную копию

Перед обновлением (особенно перед мажорным переходом) создайте резервную копию:
- базы PostgreSQL (DATA_DIR/postgres/);
- каталогов репозиториев (master/repos, site/repos);
- KB-кеша (master/kb-cache);
- хранилища Edge (edge/storage);
- моделей AI (data/ai/ollama);
- файла /opt/lsus-docker/.env и credentials-*.txt.

Без резервной копии откат после неудачного обновления затруднён или невозможен.

Резервное копирование PostgreSQL

# логический дамп (рекомендуется перед обновлением)
sudo docker exec lsus-postgres pg_dumpall -U postgres > /backup/lsus-$(date +%F).sql

# или физическая копия каталога (при остановленных контейнерах)
sudo docker compose -f /opt/lsus-docker/docker-compose.yml --env-file /opt/lsus-docker/.env --profile master stop
sudo cp -a /opt/lsus-docker/data/postgres /backup/postgres-$(date +%F)
sudo docker compose -f /opt/lsus-docker/docker-compose.yml --env-file /opt/lsus-docker/.env --profile master start

Проверка версии до обновления

Зафиксируйте текущую версию перед обновлением:

# версия в .env
grep LSUS_VERSION /opt/lsus-docker/.env

# версия сервера через API (порт 443 по умолчанию)
curl -sk https://master.example.com/api/v1/clients/health | grep server_version

Обновление сервера: Master, Site или Edge

Шаг 1. Получить пакеты новой версии

Скачайте с портала LSUS нужный набор .deb или .rpm для вашей ОС и роли в один каталог, например /opt/lsus-pkgs.

Шаг 2. Установить пакеты в правильном порядке

Пример для Master на Astra Linux (при установке из локального каталога):

cd /opt/lsus-pkgs
sudo apt update
sudo apt install ./lsus-image-postgres_<версия>_all.deb
sudo apt install ./lsus-image-pgbouncer_<версия>_all.deb
sudo apt install ./lsus-image-nginx_<версия>_all.deb
sudo apt install ./lsus-image-master_<версия>_all.deb
sudo apt install ./lsus-master_<версия>_astra.deb

lightbulbАльтернатива — один пакет

При установке из репозитория ОС или одной командой из локального каталога достаточно поставить только ролевой пакет — пакетный менеджер сам обновит все пакеты образов по зависимостям:

wzxhzdk:3

Для Site замените lsus-image-masterlsus-image-site, ролевой пакет → lsus-site (PgBouncer нужен).
Для Edge пакет lsus-image-pgbouncer не нужен, ролевой пакет — lsus-edge.
Для РЕД ОС — те же имена пакетов с суффиксом -<версия>-1.noarch.rpm, команда sudo dnf install ./….
Для Альт Сервера — пакеты с суффиксом -alt1, от root (su -): # apt-get install ./lsus-master-<версия>-alt1.noarch.rpm; при подключённом репозитории LSUS — # apt-get update && # apt-get install lsus-master. Подробнее — Установка на Альт Сервер.

infoЧто делает postinst

При установке поверх существующей версии ролевой пакет:
1. обновляет LSUS_VERSION в .env (порты и пароли не трогает);
2. добавляет отсутствующие ключи профиля PostgreSQL/пулов;
3. делает docker load образов из /usr/share/lsus-docker/images/;
4. пересоздаёт контейнеры профиля (docker compose … up -d --force-recreate).

Шаблон скрипта — docker/packaging/common/postinst.sh.tpl в исходниках поставки.

Шаг 3. Когда нужна ручная команда compose

В типовом сценарии ничего дополнительно делать не нужно — перезапуск выполняет postinst. Команду вручную имеет смысл выполнить, если:

  • вы изменили .env и не переустанавливали ролевой пакет;
  • postinst завершился с ошибкой (Docker не был доступен, сбой docker load);
  • обновили только пакеты образов (lsus-image-*) без ролевого пакета.
cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate

Для Site — --profile site, для Edge — --profile edge.

lightbulbОбновление через update.sh

Если обновление выполняется вручную через /opt/lsus-docker/update.sh, используйте update.sh из нового комплекта поставки, а не только новые файлы images/*.tar.gz. Новый update.sh запускает миграцию Docker-конфигурации и .env перед пересозданием контейнеров.

Шаг 4. Проверить работоспособность

# health — ожидаемый ответ {"status":"ok","role":"master"} (порт 443 по умолчанию)
curl -k https://master.example.com/api/v1/health

# статус контейнеров — все Up (healthy)
cd /opt/lsus-docker && sudo docker compose -f docker-compose.yml --env-file .env --profile master ps

# параметры PostgreSQL после обновления
sudo bash /opt/lsus-docker/scripts/check-postgres-tuning.sh

# версия после обновления
curl -sk https://master.example.com/api/v1/clients/health | grep server_version

Откат на предыдущую версию

Если после обновления сервер работает некорректно и устранить проблему не удалось, выполните откат.

Совместимость версий

warningПроверяйте совместимость

  • Минорные обновления (например, 1.0.66 → 1.0.67) — откат безопасен, схема БД не меняется.
  • Мажорные переходы (например, 1.0.x → 1.1.x) — схема БД может измениться. После миграции откат возможен только через восстановление БД из резервной копии.
  • Не прыгайте через несколько мажорных релизов без сверки с описанием релизов — миграции могут быть необратимыми.

Процедура отката

1. Остановите контейнеры:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master down

2. Верните предыдущую версию пакетов (переустановите пакеты старой версии — пример для Master на Astra):

cd /opt/lsus-pkgs
sudo apt install ./lsus-image-postgres_<старая_версия>_all.deb
sudo apt install ./lsus-image-pgbouncer_<старая_версия>_all.deb
sudo apt install ./lsus-image-nginx_<старая_версия>_all.deb
sudo apt install ./lsus-image-master_<старая_версия>_all.deb
sudo apt install ./lsus-master_<старая_версия>_astra.deb

infoПримечание

Если LSUS_VERSION в .env обновился, отредактируйте его вручную, вернув старое значение, либо переустановите старый ролевой пакет — он вернёт версию в .env.

3. При мажорном переходе — восстановите БД из резервной копии:

# восстановить логический дамп
sudo docker exec -i lsus-postgres psql -U postgres < /backup/lsus-<дата>.sql

4. Запустите контейнеры и проверьте:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile master up -d --force-recreate
curl -k https://master.example.com/api/v1/health

Действия при падении миграции БД

Если миграция базы данных оборвалась посередине (контейнер Master не стартует, в логах ошибка миграции):

  1. Не перезапускайте контейнер бездумно — это может усугубить состояние БД.
  2. Изучите логи миграции:

bash sudo docker logs lsus-master 2>&1 | grep -i -A20 "migrat\|alembic\|error"

  1. Восстановите БД из резервной копии (см. Резервное копирование), выполненной до обновления.
  2. Повторите обновление после восстановления чистого состояния БД.

warningПредупреждение

Никогда не оставляйте БД в частично мигрированном состоянии «на потом» — это источник трудно диагностируемых ошибок. Либо доведите миграцию до конца (устранив причину сбоя), либо откатитесь к чистой резервной копии.

Обновление клиента LSUS

Клиент обновляется отдельными пакетами с портала. Порядок: сначала lsus-client, затем lsus-client-gui (если установлен), затем lsus-usb-control (если обновляются все).

infoАвтообновление через LSUS

Автообновление клиента через саму систему LSUS работает с установленным набором пакетов как с одним семейством: базовый lsus-client обновляется всегда, lsus-client-gui и lsus-usb-control подтягиваются только если они уже установлены. Это не ставит GUI/USB на серверы без этих компонентов.

Агент lsus-client

cd /opt/lsus-pkgs

# Astra / Debian / Ubuntu
sudo apt install ./lsus-client_<версия>_all.deb
sudo apt install ./lsus-client-gui_<версия>_all.deb   # если установлен GUI

# РЕД ОС / ALT
sudo dnf install ./lsus-client-<версия>-1.noarch.rpm
sudo dnf install ./lsus-client-gui-<версия>-1.noarch.rpm   # если установлен GUI

Перезапуск службы:

sudo systemctl restart lsus-client.service

Настройки в /etc/lsus-client/ сохраняются между обновлениями.

Агент lsus-usb-control

Только если в контуре используется контроль сменных носителей:

cd /opt/lsus-pkgs

# Astra / Debian / Ubuntu
sudo apt install ./lsus-usb-control_<версия>_astra.deb

# РЕД ОС / ALT
sudo dnf install ./lsus-usb-control-<версия>.rpm

sudo systemctl restart lsus-usb-control.service

Конфигурация в /etc/lsus-usb-control/ сохраняется. Подробнее — USB Control.

Агент lsus-config-agent

Агент управления конфигурациями (Ansible для Linux) обновляется отдельным пакетом:

cd /opt/lsus-pkgs

# Astra / Debian / Ubuntu
sudo apt install ./lsus-config-agent_<версия>_all.deb

# РЕД ОС / ALT
sudo dnf install ./lsus-config-agent-<версия>.rpm

sudo systemctl restart lsus-config-agent.service

Настройки в /etc/lsus-config-agent/ сохраняются. Подробнее — lsus-config-agent.

Windows-агенты

Windows-агенты (патч-служба LsusAgent и служба конфигураций LsusConfigAgent) обновляются автоматически с сервера — команда UPDATE_AGENT скачивает новый MSI/ZIP и переустанавливает службу. Ручное обновление не требуется. Хосты за сайт-сервером получают пакет из кэша сайта, без повторной перекачки с master на каждую машину.

Управление версиями — во вкладке Управление обновлениями → Версии агента на Master. Сервер различает пакеты по component (patch / config), поэтому службы можно обновлять независимо. Подробнее — Клиент LSUS (Windows).

Обновление AI-стека

AI-стек (Ollama и OpenClaw) версонируется отдельно от сервера (AI_VERSION, не LSUS_VERSION) и обновляется независимо. Установка — см. Установка AI-стека.

# обновить оба компонента
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ai-all

# или по отдельности
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh ollama
sudo bash demo-infra/scripts/install-lsus-docker-rpm.sh openclaw

При ручной установке из локального каталога:

# Astra / Debian / Ubuntu
sudo apt install ./lsus-image-ollama_<версия>_all.deb
sudo apt install ./lsus-image-openclaw_<версия>_all.deb

# РЕД ОС / RHEL
sudo dnf install ./lsus-image-ollama-<версия>-1.noarch.rpm
sudo dnf install ./lsus-image-openclaw-<версия>-1.noarch.rpm

Перезапуск профилей после обновления:

cd /opt/lsus-docker
sudo docker compose -f docker-compose.yml --env-file .env --profile ollama up -d --force-recreate
sudo docker compose -f docker-compose.yml --env-file .env --profile openclaw up -d --force-recreate

infoМодели сохраняются

Загруженные модели Ollama (data/ai/ollama/) и конфигурация OpenClaw (data/ai/openclaw/) не удаляются при обновлении — обновляются только образы и контейнеры.

Портал документации

Если в поставке есть отдельные пакеты портала или иных сервисов, обновляйте их по инструкции к релизу тому же принципу: пакет ОС с локального каталога, затем пересоздание контейнеров через docker compose.

Чек-лист обновления

  • [ ] Ознакомились с описанием релиза.
  • [ ] Сделали резервную копию БД и данных.
  • [ ] Зафиксировали текущую версию.
  • [ ] Установили пакеты (достаточно одного ролевого; при установке из локального каталога — все пакеты образов и ролевой в одной команде).
  • [ ] Проверили health-эндпоинт и статус контейнеров.
  • [ ] Сверили версию после обновления.
  • [ ] Обновили клиентские пакеты (lsus-client, lsus-config-agent — если нужно).
  • [ ] Обновили AI-стек, если используется (Ollama/OpenClaw — по отдельной версии AI_VERSION).

Связанные страницы