Инструкция описывает текущий офлайн-комплект из 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 не является новым выпуском.
20261026repair2 выбрана Ubuntu 24.04 amd64. Сборщик также предусматривает пакеты для
Ubuntu 24.04/22.04, Debian 12, AlmaLinux 9 и RHEL 9. Наличие ветки сборщика
не подтверждает совместимость и допустимость ОС для экспертизы. Испытания
на российских доверенных ОС оформляются отдельно.bash, tar, gzip, openssl, python3, sha256sum или shasum.
Для .run --check root не требуется. Для проверки GPG-подписи нужен gpg.docker compose) устанавливаются из комплекта, если включены пакеты
для выбранной ОС. При явной поставке без Docker они должны быть установлены заранее.app.xksm.local, api.xksm.local и localhost.Входящие подключения: 443/TCP для HTTPS; HTTP 80 в текущем профиле привязан к loopback хоста. Flow-коллектор публикует 2055/UDP и 6343/UDP — разрешить их только от необходимых источников. Базы данных и API не публикуются отдельными хост-портами. Исходящие подключения к оборудованию определяются его настройками: обычно HTTPS BMC 443/TCP, IPMI 623/UDP и SSH 22/TCP при использовании этих функций.
Получить у поддержки согласованный выпуск, инструкцию, контрольные суммы, манифест, лицензию и при наличии подпись с доверенным отпечатком ключа. Убедиться, что версия приложения и целевая ОС соответствуют заявке. Контрольная сумма обнаруживает повреждение, но сама по себе не доказывает автора. Отпечаток ключа и эталонные суммы проверять по доверенному каналу.
В примерах 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 для обхода ошибок экспертного комплекта.
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 для установки не требуются.
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 не являются подтверждённым способом активации данного бандла. Не использовать лицензию облачного экземпляра или другого ноутбука; срок и привязка согласуются для машины эксперта. Успешно выпущенная ранее лицензия не подтверждает активацию новой машины.
Сначала проверить среду:
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-комплект.
В полном кандидате 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 на чистой ОС: фактическое
покрытие указано в протоколе конкретного выпуска.
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 для экспертного прогона. Неисправность набора пакетов
целевой ОС исправляется пересборкой комплекта, а не онлайн-загрузкой на эксперте.
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 фиксируются отдельно. Повторная установка и ошибка её запуска могут прервать сервисы; выполнять в согласованное окно с резервной копией, не обещать отсутствие простоя.
Каталог установки в примерах — /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.
Обновление инициирует администратор. До него подготовить и проверить резервные копии PostgreSQL, необходимых данных ClickHouse, файлов приложения, конфигураций и ключей; доступ к резервным копиям ограничить. Простое копирование volumes работающей БД не является подтверждённой согласованной резервной копией.
Из каталога действующей установки используется update.sh --images-tar FILE --tag TAG --sha256 HASH
с согласованными файлами новой версии; при необходимости — --ch-migrations DIR.
HASH — SHA256 именно нового images.tar из предварительно проверенной поставки.
Проверить контрольные суммы и подлинность нового комплекта до обновления.
Скрипт делает резервную копию PostgreSQL и пытается откатить тег при ошибке;
он не обеспечивает автоматический откат схемы/данных БД и не заменяет процедуру
полного восстановления. Не выполнять произвольный alembic downgrade -1.
Сценарий восстановления должен быть испытан на отдельной машине до работ в продукции.
ООО «ХК СЕРВ»: support@xkserv.ru, телефон +7 (499) 504-42-22. Будние дни 09:00–18:00; часовой пояс уточняется при согласовании сопровождения. Вопросы приобретения и получения лицензии: info@xkserv.ru. Для обращения указать версию/commit, ОС, этап установки, время и очищенное сообщение об ошибке. Не прикладывать секреты и приватные ключи.