← Документация и информация о ПО

Инструкция по установке программного обеспечения

Программное обеспечение: XK Server Management Platform (XKSM)
Версия: 2.64.0
Правообладатель: ООО «ХК СЕРВ»
Дата документа: 26.10.2026

1. Назначение и статус проверки

Инструкция описывает текущий офлайн-комплект из deploy/airgap: самораспаковывающийся установщик .run и архив tar.gz с одинаковым содержимым. Версия переданного выпуска, commit, платформа и состав образов фиксируются в его VERSION и ARTIFACT-MANIFEST.json.

Редакция от 26.10.2026 описывает проверяемый порядок, а не протокол успешной установки. Известный комплект для ноутбука xksm-install-2.64.0.run от 21.10.2026 содержит готовые образы, но не включает Docker Engine и Compose. Для него применяется ветка с заранее установленными Docker/Compose v2 и ключом --no-docker-bootstrap. Полностью автономная установка на чистую ОС допустима только для отдельно собранного и проверенного комплекта с пакетами точной ОС. Совпадение номера версии двух файлов не гарантирует одинаковое содержимое: сверять SHA256, манифест и ID образов. Не перезаписывать старый файл новой сборкой без нового идентификатора и контрольных сумм.

Новый кандидат от 26.10.2026 имеет build-id 20261026repair2, приложение 2.64.0, целевую ОС Ubuntu 24.04 amd64 и включает 36 deb-пакетов офлайн-подготовки Docker Engine/Compose. Пакеты проверены без сети в отдельном Ubuntu-контейнере: Docker 29.9.2, Compose 5.6.1; проверены установка пакетов и CLI, не запуск daemon или чистой ОС. Файлы передаются поддержкой отдельно от учётных данных:

Контрольные суммы нового кандидата (SHA256):

6f467e42f95587dbef8c003ba86fbfb77c5e89b844aeb8983667867bf10f73b1  xksm-install-2.64.0.run
b203a2b1df046a73b860943eb653ac21df8fb592dbde11a5a35992f73f7c4e6b  xksm-airgap-2.64.0.tar.gz

В новом кандидате проверены 79 внутренних контрольных сумм и .run --check. Он не подменяет старый ноутбучный файл с тем же именем. В отдельном контейнерном окружении проверены миграции, первоначальная настройка, вход, Base-лицензия, пересоздание backend и резервирование/восстановление тестовой БД. Исправлены права JWT-каталога и ключей для UID/GID 10001 без изменения их содержимого. Это не протокол чистой ОС, перезагрузки хоста или аппаратных операций. Сканирование точных образов: 0 CRITICAL; в backend остаются 44 HIGH-записи (8 CVE) без указанного исправления в базе. Решение по остаточному риску фиксируется отдельно.

По сообщению владельца от 26.10.2026, установка ноутбучного комплекта, вход и запуск после перезагрузки Ubuntu работают корректно. Это подтверждение оператора, а не самостоятельно выполненный протокол чистой установки. Оно относится к переданному ноутбучному комплекту и не переносится на новую сборку. Редакция согласована с исходниками установщика. Полная установка актуального выпуска на двух чистых машинах пока не подтверждена. Перед повторной подачей выполнить проверки из repeat-submission-readiness.md; протоколы должны относиться к передаваемой сборке. Старый комплект 1.4.0 не является новым выпуском.

2. Требования и доступы

Входящие подключения: 443/TCP для HTTPS; HTTP 80 в текущем профиле привязан к loopback хоста. Flow-коллектор публикует 2055/UDP и 6343/UDP — разрешить их только от необходимых источников. Базы данных и API не публикуются отдельными хост-портами. Исходящие подключения к оборудованию определяются его настройками: обычно HTTPS BMC 443/TCP, IPMI 623/UDP и SSH 22/TCP при использовании этих функций.

3. Получение и проверка поставки

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

3.1 Установщик

В примерах 2.64.0 — версия исходников; использовать фактическое имя переданного проверенного выпуска, не переименовывать старый файл.

sha256sum --check --ignore-missing SHA256SUMS
bash xksm-install-2.64.0.run --check
sudo bash xksm-install-2.64.0.run --extract-only --dir /opt/xksm
cd /opt/xksm
sha256sum -c CHECKSUMS.sha256

Если согласована обязательная подпись, выполнить проверку по процедуре поставки с XKSM_REQUIRE_SIGNATURE=1 и заранее доверенным ключом. Не использовать --insecure-skip-signature для обхода ошибок экспертного комплекта.

3.2 Архив файлов

sudo mkdir -p /opt/xksm
sudo tar -xzf xksm-airgap-2.64.0.tar.gz -C /opt/xksm --strip-components=1
cd /opt/xksm
sha256sum -c CHECKSUMS.sha256

Комплект содержит images.tar, docker-compose.airgap.yml, install.sh, gen-secrets.sh, update.sh, license-fingerprint.sh, migrations/, tls/edge.conf, VERSION, ARTIFACT-MANIFEST.json, CHECKSUMS.sha256. Для автоматического bootstrap Docker также нужен docker/ с пакетами целевой ОС. PostgreSQL-миграции включены в backend-образ, ClickHouse-миграции — в migrations/. Исходники из внутреннего Git для установки не требуются.

4. Подготовка конфигурации и лицензии

cd /opt/xksm
sudo bash ./gen-secrets.sh /opt/xksm
sudoedit /opt/xksm/.env

Генератор создаёт уникальные пароли PostgreSQL, Redis и ClickHouse, ключ XK_DB_ENCRYPTION_KEY, отдельный AUDIT_CHAIN_HMAC_KEY для журнала аудита, секрет приложения и JWT/TLS-ключи. Существующий .env сохраняется. Не использовать --force для ротации работающей установки. Не отправлять .env, приватные ключи, пароли и содержимое лицензии в отчёты.

Ключ HMAC аудита генерируется независимо: 32 случайных байта записываются 64 шестнадцатеричными символами. Сохранить его вместе с защищённой резервной копией конфигурации: замена ключа нарушит проверку существующей цепочки. При обновлении установки без этой переменной Compose остановится с ошибкой AUDIT_CHAIN_HMAC_KEY_required. Восстановить прежний ключ из доверенной конфигурации или резервной копии; при непустом журнале не создавать новый ключ и не пересчитывать историю без отдельной процедуры миграции.

Установить ALLOWED_HOSTS, CORS_ORIGINS и XK_PUBLIC_BASE_URL по фактическому имени. При смене имени заменить tls/certs/edge.crt и edge.key сертификатом и соответствующим ключом, проверить доверие клиентского браузера. Не изменять AIRGAP_TAG произвольно: он должен совпадать с образами поставки.

Сохранить защитные настройки XK_DEV_MODE=0, DEBUG=false, XKSM_XK_ATTEST_MODE=enforce. В офлайн-профиле AI отключён, облачные лицензионные URL пусты. Для текущего состава Base федерация остаётся выключенной (FEDERATION_ENABLED=false); AI, федерация и внешние СХД не включаются в эту экспертизу. Не включать автоматическую отправку обращений во внешний портал без отдельного согласования и проверки.

Файл LICENSE.xksm выпускается вендором и должен приниматься встроенным проверяющим ключом. Не генерировать новый ключ верификации ради обхода лицензии. При аппаратной привязке после загрузки образов используется sudo ./license-fingerprint.sh; передать вендору только результат fingerprint. Без привязки режим переносимости должен быть явно согласован при выпуске.

В этой инструкции используется подписанный файл через штатный офлайн-установщик. Онлайн-активация и загрузка лицензии через UI не являются подтверждённым способом активации данного бандла. Не использовать лицензию облачного экземпляра или другого ноутбука; срок и привязка согласуются для машины эксперта. Успешно выпущенная ранее лицензия не подтверждает активацию новой машины.

4.1 Ноутбук с готовым Docker: получение fingerprint

Сначала проверить среду:

cat /etc/os-release
uname -m
free -h
df -h /opt
sudo docker version
sudo docker compose version
sudo ss -ltn '( sport = :80 or sport = :443 )'

Ожидаются Linux x86_64/amd64 и рабочая команда docker compose. Все команды выполняются в терминале Ubuntu, не PowerShell/CMD. Для 8 ГБ RAM установить один worker:

cd /opt/xksm
sudoedit /opt/xksm/.env

Добавить или заменить строку XKSM_CELERY_CONCURRENCY=1. Не создавать дубли переменной. Затем загрузить образы и получить fingerprint:

sudo docker load -i images.tar
umask 077
sudo bash ./license-fingerprint.sh > "$HOME/xksm-laptop-fingerprint.txt"

Передать только xksm-laptop-fingerprint.txt поддержке для выпуска отдельного LICENSE.xksm. Генератор конфигурации предварительно заполняет тег образа из VERSION. При отсутствии Docker этот шаг не запустится: требуется сначала подготовленная поддерживаемая среда или проверенный bootstrap-комплект.

4.2 Новый Ubuntu 24.04 без Docker: лицензия ещё не выпущена

В полном кандидате 20261026repair2 сначала можно выполнить штатную установку без лицензии, чтобы установить включённые зависимости и получить fingerprint. До активации действует ограниченный режим; он не считается экспертной лицензией.

cd /opt/xksm
sudo bash ./install.sh
umask 077
sudo bash ./license-fingerprint.sh > "$HOME/xksm-fingerprint.txt"

Передать fingerprint поддержке, получить подписанный файл для этой машины, затем повторить установщик с лицензией по разделу 5. Повторный запуск сохраняет существующие секреты и данные; --force, удаление томов и обход подписи не нужны. После активации проверить лицензию и согласованные права Base. Данный порядок не является подтверждением испытания установки Docker на чистой ОС: фактическое покрытие указано в протоколе конкретного выпуска.

5. Установка

cd /opt/xksm
set -o pipefail
sudo bash ./install.sh --no-docker-bootstrap --license "$HOME/LICENSE.xksm" 2>&1 | tee "$HOME/xksm-install.log"

Команда выше предназначена для известного ноутбучного комплекта с готовым Docker/Compose. Для нового кандидата 20261026repair2 на Ubuntu 24.04 amd64 с включёнными локальными пакетами использовать:

sudo bash ./install.sh --license "$HOME/LICENSE.xksm"

Установка без --no-docker-bootstrap использует bootstrap при отсутствии Docker/Compose; при наличии совместимых Docker/Compose их переустановка не требуется. Загрузку зависимостей из Интернета на экспертной машине не выдавать за офлайн-установку.

Если файл ещё не выдан, запуск без --license возможен в ограниченном режиме, но это не подтверждает доступ ко всем экспертным функциям.

Установщик проверяет суммы до установки пакетов и загрузки образов, устанавливает локальные зависимости, загружает images.tar, подготавливает секреты и права, поднимает PostgreSQL/Redis/ClickHouse, выполняет миграции, запускает backend, Celery, Celery Beat, frontend и edge. Образы не скачиваются из registry.

Отсутствие CHECKSUMS.sha256 или несоответствие сумм останавливает установку. Не применять --skip-checks для экспертного прогона. Неисправность набора пакетов целевой ОС исправляется пересборкой комплекта, а не онлайн-загрузкой на эксперте.

6. Проверка результата и первоначальная настройка

cd /opt/xksm
sudo docker compose -f docker-compose.airgap.yml --env-file .env ps
sudo docker compose -f docker-compose.airgap.yml --env-file .env exec -T backend \
  python -c "import urllib.request; print(urllib.request.urlopen('http://localhost:8000/api/health/live').status)"

Для браузера на том же Linux-хосте добавить локальное имя:

grep -qE '^[[:space:]]*127\.0\.0\.1[[:space:]]+app\.xksm\.local([[:space:]]|$)' /etc/hosts || printf '\n127.0.0.1 app.xksm.local\n' | sudo tee -a /etc/hosts

Открыть https://app.xksm.local и проверить сертификат. Если браузер работает на другой машине, имя должно указывать на IP Linux-хоста XKSM, а не на 127.0.0.1. В Windows/WSL настройки имени нужны на машине браузера. Публичный app.xksm.ru не является адресом установленного ноутбучного экземпляра.

Открыть выбранный HTTPS-адрес и проверить сертификат. На пустой БД приложение проверяет /api/v1/setup/status и показывает мастер первоначальной настройки. Указать название и короткое имя организации, выбранные логин и email первого администратора, пароль и его подтверждение. Мастер вызывает /api/v1/setup/init с CSRF-защитой; после завершения войти созданной учётной записью. Это создание первого пользователя новой установки, а не сброс пользователя существующего экземпляра. На существующей установке не сбрасывать и не изменять рабочий аккаунт admin.

Затем подготовить отдельную учётную запись эксперта в нужной организации. Предпочтительно создать её через управление пользователями и назначить права на согласованные сценарии. Для административной подготовки есть CLI python -m scripts.create_admin_user; он требует уже созданных организации и ролей. На действительно новой организации можно использовать следующий Bash-пример, заменив ORG_ID на её числовой ID и указав отдельный, ещё не занятый логин/email:

read -r -s -p 'Пароль отдельного эксперта: ' EXPERT_PASSWORD
printf '\n'
printf '%s' "$EXPERT_PASSWORD" | sudo docker compose -f docker-compose.airgap.yml \
  --env-file .env exec -T backend python -m scripts.create_admin_user \
  --username mincifra_expert --email expert@example.invalid --role admin --org-id ORG_ID
unset EXPERT_PASSWORD

Пример выдаёт административные права; после подготовки ограничить их согласованным набором. Скрипт меняет пароль/права при совпадении логина: не указывать имя существующего владельца и не запускать для него. Для испытаний не использовать владельца; проверить фактические права и MAC-допуск отдельного эксперта.

Проверить вход, статус лицензии и каждую заявленную группу функций. Наличие меню либо ответ healthcheck не заменяет функционального сценария. Испытания перезагрузки, повторного запуска и второй чистой VM фиксируются отдельно. Повторная установка и ошибка её запуска могут прервать сервисы; выполнять в согласованное окно с резервной копией, не обещать отсутствие простоя.

7. Размещение файлов и эксплуатация

Каталог установки в примерах — /opt/xksm. Он содержит .env с правами 0600, keys/ с приватным JWT-ключом, license/LICENSE.xksm и tls/certs/. JWT-каталог и ключи предназначены для runtime UID/GID 10001: каталог 0700, приватный ключ 0600, публичный 0644. Установщик и обновление устанавливают эти права, сохраняя существующие ключи; символические ссылки отклоняются. Лицензионный каталог/файл также используют UID/GID 10001, права 0700/0600. Приватные ключи не включаются в распространяемый комплект.

Постоянные данные PostgreSQL, Redis, ClickHouse и приложения размещены в именованных Docker volumes. Пути firmware, logs и backup внутри приложения находятся в /var/xksm. Журналы контейнеров доступны через docker compose logs; перед передачей диагностического вывода удалить секретные и персональные данные. Не передавать полный вывод docker compose config, поскольку он раскрывает .env.

8. Обновление и восстановление

Обновление инициирует администратор. До него подготовить и проверить резервные копии PostgreSQL, необходимых данных ClickHouse, файлов приложения, конфигураций и ключей; доступ к резервным копиям ограничить. Простое копирование volumes работающей БД не является подтверждённой согласованной резервной копией.

Из каталога действующей установки используется update.sh --images-tar FILE --tag TAG --sha256 HASH с согласованными файлами новой версии; при необходимости — --ch-migrations DIR. HASH — SHA256 именно нового images.tar из предварительно проверенной поставки. Проверить контрольные суммы и подлинность нового комплекта до обновления. Скрипт делает резервную копию PostgreSQL и пытается откатить тег при ошибке; он не обеспечивает автоматический откат схемы/данных БД и не заменяет процедуру полного восстановления. Не выполнять произвольный alembic downgrade -1. Сценарий восстановления должен быть испытан на отдельной машине до работ в продукции.

9. Поддержка

ООО «ХК СЕРВ»: support@xkserv.ru, телефон +7 (499) 504-42-22. Будние дни 09:00–18:00; часовой пояс уточняется при согласовании сопровождения. Вопросы приобретения и получения лицензии: info@xkserv.ru. Для обращения указать версию/commit, ОС, этап установки, время и очищенное сообщение об ошибке. Не прикладывать секреты и приватные ключи.