SvayaИИ-платформаТехнические решенияПродуктыВнедрение
ВойтиПопробовать бесплатно

Документация / Развертывание

Развертывание платформы на ваших серверах

Редакция 14 сентября 2026

Для администратораПервое развертываниеОколо часа на готовом сервере

Платформа ставится на ваш сервер четырьмя командами. Первая собирает описание из трех слоев, вторая проверяет сервер, третья поднимает сервисы, четвертая показывает состояние. Каждая следующая команда запускается только после того, как прошла предыдущая.

Термины этой страницы. Установка - это ваша платформа на ваших серверах. Описатель установки - это файл, в котором записано, из чего она собрана. Собранные файлы конфигурации - это то, что платформа делает из описателя и по чему поднимаются сервисы. Руками эти файлы не правятся, об этом отдельно на странице о конфигурации.

Что нужно до начала

  • Linux-сервер. Для пилота обычно хватает 12 ядер, 32 ГиБ памяти и 150 ГиБ SSD. Числа взяты из замера на живом сервере, где при полном развертывании платформа заняла около 7 ГиБ диска. Остальное место уходит под ваши данные, журналы и резервные копии, а для промышленной работы числа другие и собраны на странице требований к серверу.
  • Docker Engine и Compose второй версии как плагин, то есть docker compose, а не старый docker-compose. Точный диапазон версий фиксируется поставкой, практическим ориентиром до этого служит Docker Engine 24 и новее.
  • Точное время. Подписи поставки проверяются по времени сервера. Часы, разошедшиеся с эталонным временем, дают отказ уже в середине установки образов. NTP - это протокол, которым сервер сверяет время с эталоном.
  • Свободный порт 443. Это единственный порт, который платформа публикует наружу.
  • Три файла описателя и манифест выпуска. Базовый слой, профиль и манифест приезжают в поставке, третий слой вы пишете под свою компанию.
  • Секреты. Пароли, ключи и сертификаты платформа в описателе не хранит, там стоят только их имена. Значения кладутся в хранилище секретов до развертывания.

Порядок развертывания

  1. Собрать конфигурацию из описателя

    Команда сливает три слоя, проверяет получившееся описание по схеме и правилам и собирает файлы, по которым поднимутся сервисы. Сервер она не трогает, поэтому выполнять ее можно сколько угодно раз.

    Команда на сервере сборка конфигурации
    bm-deploy render \
      --base base.yaml \
      --profile-layer profiles/production.yaml \
      --config nasha-ustanovka.yaml \
      --manifest release/manifest.yaml \
      --out ./compose
    
    render: 47 артефактов
    services.core: N=1 - плавная замена вырождается в замену с коротким простоем

    Предупреждения о плавной замене не означают отказа. Они означают, что сервис объявлен в одном экземпляре, поэтому при обновлении он будет остановлен и поднят заново, а на это время его работа прервется на несколько секунд. Для показного стенда это обычное дело. Для промышленной работы число экземпляров задается профилем, и тогда обновление идет без перерыва.

  2. Проверить готовность сервера

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

    Команда на сервере проверка готовности
    bm-deploy preflight \
      --base base.yaml --profile-layer profiles/production.yaml \
      --config nasha-ustanovka.yaml --manifest release/manifest.yaml
    
    preflight: среда не готова - операция не начинается
    [ОТКАЗ] docker-versions: docker/docker compose недоступны или не сообщают версию
    [ОТКАЗ] disk-space: на /var/lib/bm свободно 28.9 ГиБ, требуется 674.0 ГиБ
    [ОТКАЗ] host-clock: состояние синхронизации не определено

    Так выглядит отказ на неподготовленной машине. На готовом сервере та же команда отвечает одной строкой preflight: входы валидны, среда готова и перечисляет пройденные проверки.

  3. Поднять платформу

    Команда переносит образы сервисов на сервер, приводит схемы баз данных в соответствие с версией кода и поднимает сервисы по собранной конфигурации. Каждый шаг она записывает в журнал. Если развертывание прервалось, его продолжают с места отказа, и уже перенесенные образы и примененные изменения схемы второй раз не выполняются.

    Команда на сервере развертывание
    bm-deploy install \
      --base base.yaml --profile-layer profiles/production.yaml \
      --config nasha-ustanovka.yaml --manifest release/manifest.yaml \
      --license license.yaml

    Повторный запуск на уже развернутой версии ничего не меняет и говорит об этом сообщением установка версии 1.8.167 уже существует - изменений ноль.

  4. Посмотреть, что получилось

    Команда состояния отвечает, что развернуто на сервере сейчас. До первого развертывания она отвечает установка отсутствует, после развертывания печатает версию, профиль и состояние операций.

    Команда на сервере состояние
    bm-deploy status

Что проверяет готовность

Команда выполняет следующие проверки. Та, которой в вашей установке нечего проверять, пропускается, и пропуск печатается отдельной строкой с причиной.

ПроверкаЧто смотритКогда пропускается
docker-versionsDocker и Compose отвечают и попадают в диапазон, объявленный поставкойНе пропускается
disk-spaceСвободное место в каталоге данных в сравнении с объявленными томами и запасомНе пропускается
bundle-spaceМесто под распаковку поставки, когда она ставится из файлаКогда поставка не импортируется
data-dirsПрава на запись в каталоги данных, конфигурации и состоянияНе пропускается
perimeter-portsПорты, которые платформа публикует наружу, свободныНе пропускается
host-clockЧасы сервера синхронизированыДля закрытой сети заменяется явным подтверждением
gpu-runtimeДрайвер и среда исполнения видеокартКогда видеокарт в установке не объявлено
model-weightsВеса языковых моделей доставлены на серверКогда языковая модель работает не на ваших серверах
offline-bundleПоставка лежит в вашей сети целикомКогда профиль допускает интернет

Если команда отказала

Каждая команда возвращает код, по которому виден класс отказа. Код говорит главное, тронут ли сервер, и это понятно до чтения самого сообщения.

КодЧто означаетЧто делать
0ГотовоПереходить к следующему шагу
1Шаг операции упал, состояние записано в журналПродолжить операцию с места отказа
2Неверный вход, то есть ошибка в описателе или в аргументах команды. Сервер не тронутЧитать сообщение проверки, там назван код правила и точное место в описателе
3Не хватает явного подтверждения опасного действияПеречитать, что именно подтверждается, и повторить с подтверждением
4Операция уже идетДождаться ее конца либо разобрать зависшую операцию
5Несовместимость версийОбновляться цепочкой через промежуточную версию
6Найдены правки конфигурации, сделанные в обход описателяВернуть правку в описатель либо принять расхождение явно
7Состояние уже достигнуто, изменений нольНичего, это обычный ответ повторного запуска
8Проверка целостности не прошлаНе продолжать, разбирать причину
9Недоверенный вход отклонен до распаковкиПроверить подпись поставки и источник файла

Сообщения проверки описателя устроены одинаково. В квадратных скобках стоит код правила, дальше место в описателе и причина.

Пример отказа сборки код возврата 2
[logical-dump-in-production] backup.postgres_mode: режим логического дампа допустим
  только для показного профиля, в промышленном и закрытом запрещен
[secret-unknown] perimeter.tls: секрет "perimeter-tls-cert" отсутствует
  в реестре секретов

Что открыть сразу после развертывания

Зайдите в интерфейс и откройте «Обзор установки». Экран отвечает на единственный вопрос первого дня, поднялось ли все, что должно было подняться.

Экран «Обзор установки»: состояние, требующие внимания части, версия платформы, профиль, таблица частей установки и перечень модулей
Обзор установки. Состояние собирается из проверок всех частей платформы. Колонка «Если откажет» говорит последствие словами, а врезка под плитками называет, что случилось и что делать. Данные на снимке демонстрационные. Открыть экран целиком

Если состояние установки показано как «работает с ограничениями», смотрите таблицу частей ниже на том же экране. Она называет часть с замечанием и последствие ее отказа.