Установка в своем контуре.

Поэтапный путь для инженера. Существующий GitLab остается на месте.

Получите согласованный пакет

Запросите пакет и условия использования: исходный архив, wheel, образы нужной архитектуры, хеш-манифест, зависимости и список приемки. Проверьте происхождение и соответствие версии. Self-hosted описывает место установки, а не автоматически открытую лицензию. Цены и лицензионные условия согласуются отдельно.

Запросить пакет

Подготовьте зависимости

  • Linux x86_64 / amd64 для целевого корпоративного пилота; Python 3.12; Docker Compose 2.30.0 или новее. Профиль также допускает arm64, это отдельная цель проверки.
  • Доверенная операторская среда с UID/GID 10001:10001 и локальным Docker socket. Socket доступен оператору, никогда Worker или коду из MR.
  • Внешний PostgreSQL 18.6 с проверкой TLS verify-full. Отдельные БД и роли для служб, отдельный обычный владелец ContextForge.
  • Уже загруженные и проверенные образы Null и ContextForge по неизменяемым ID. Установщик не скачивает и не собирает их.
  • Корпоративный OIDC/Keycloak, сертификаты кабинета и ContextForge, DNS и сетевые разрешения. GitLab и runner готовятся отдельно.
  • Приватные файлы 0600 и каталоги 0700, принадлежащие оператору. Без symlinks, секретов в Git и автоматического копирования чужого входа. Прямой запуск установки на macOS отклоняется; эмуляция на Mac не является замером native Linux.

Как читать результат этапа

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

ЭтапЧто проверить перед следующим
prepareПриватный профиль и журнал в новой цели; значения совпадают с пакетом.
preflightПроверенные зависимости и привязки без запуска служб.
allocateНовые tenant и БД; затем отдельный официальный вход.
configure / validateПроекции служб и offline-проверка текущих образов.
startСлужбы запущены; полезная работа, версии и границы доступа проверяются отдельно.

Подготовьте приватный профиль

Команды выполняются из распакованного source/sdist, совпадающего с установленным wheel. PILOT_PROFILE и PILOT_TARGET задаются оператором как абсолютные приватные пути; цель должна быть новой. Профиль связывает установку, архитектуру, source commit, локальные image IDs, runtime manifest, PostgreSQL, один или два tenant, HTTPS-кабинет, worker-профили, OIDC и ContextForge. Реальные значения предоставляются вместе с пакетом. Не подставляйте случайные хеши или токены.

Первые три этапа

Это шаблоны действующих команд, не доказательство завершенной установки. Выполняйте по одному этапу и проверяйте его результат.

prepare

set -eu
umask 077
: "${PILOT_PROFILE:?Set the private absolute profile path}"
: "${PILOT_TARGET:?Set the new absolute target path}"
python3.12 -B scripts/install_pilot.py --help
python3.12 -B scripts/install_pilot.py prepare \
  --profile "$PILOT_PROFILE" --target "$PILOT_TARGET"

preflight

set -eu
: "${PILOT_TARGET:?Set the allocated absolute target path}"
python3.12 -B scripts/install_pilot.py apply \
  --target "$PILOT_TARGET" --stage preflight --consent

allocate

set -eu
: "${PILOT_TARGET:?Set the allocated absolute target path}"
python3.12 -B scripts/install_pilot.py apply \
  --target "$PILOT_TARGET" --stage allocate --consent

prepare сохраняет приватный профиль и журнал. preflight проверяет среду и привязки. allocate создает новые tenant и базы.

После allocate остановитесь для входа

Получите новые tenant IDs из приватного allocation metadata. Для каждого профиля отдельно создайте его внешний Codex volume и выполните официальный вход. Ожидаемое имя: null-review-codex-<allocated-id>-<profile_id>. Используйте операторский помощник из того же пакета. Установщик не создает, не ищет и не восстанавливает этот вход. Статус login сам по себе не доказывает успешный вызов модели.

set -eu
: "${NULL_TENANT_ID:?Use the newly allocated tenant ID}"
: "${NULL_CODEX_PROFILE:?Use the profile ID from the agreed profile}"
: "${NULL_ENGINE_IMAGE:?Use the accepted immutable engine image ID}"
scripts/codex-tenant --tenant "$NULL_TENANT_ID" \
  --profile "$NULL_CODEX_PROFILE" --image "$NULL_ENGINE_IMAGE" init
scripts/codex-tenant --tenant "$NULL_TENANT_ID" \
  --profile "$NULL_CODEX_PROFILE" --image "$NULL_ENGINE_IMAGE" login-browser

После официального входа проверьте его состояние. Команды используют только согласованный image ID; не подставляйте старый тег по умолчанию. Это не подтверждение полезного вызова модели.

set -eu
: "${NULL_TENANT_ID:?Use the newly allocated tenant ID}"
: "${NULL_CODEX_PROFILE:?Use the profile ID from the agreed profile}"
: "${NULL_ENGINE_IMAGE:?Use the accepted immutable engine image ID}"
scripts/codex-tenant --tenant "$NULL_TENANT_ID" \
  --profile "$NULL_CODEX_PROFILE" --image "$NULL_ENGINE_IMAGE" status

Настройка, проверка, запуск

configure

set -eu
: "${PILOT_TARGET:?Set the allocated absolute target path}"
python3.12 -B scripts/install_pilot.py apply \
  --target "$PILOT_TARGET" --stage configure --consent

validate

set -eu
: "${PILOT_TARGET:?Set the allocated absolute target path}"
python3.12 -B scripts/install_pilot.py apply \
  --target "$PILOT_TARGET" --stage validate --consent

start

set -eu
: "${PILOT_TARGET:?Set the allocated absolute target path}"
python3.12 -B scripts/install_pilot.py apply \
  --target "$PILOT_TARGET" --stage start --consent

configure создает отдельные проекции служб. validate запускает offline deployment-check без сети. start выполняет detached Compose up без build/pull. Это не проверка полезного ревью, миграций ContextForge или готовности пилота. Результат установщика сохраняет runtime_verified=false и pilot_ready=false.

Если этап прерван

Не повторяйте этап с started/unknown и не удаляйте журнал, БД или каталог цели. Сохраните их для сверки фактических эффектов. Установщик create-only: нет автоматического resume, upgrade, rollback или принятия чужой установки. Повторный start тоже запрещен.

Открыть плейбуки

Варианты размещения

ВариантГраница текущей поставки
Один Linux Docker host + внешний PGТекущий поэтапный bootstrap. Отдельная приемка после запуска.
Корпоративные VM, reverse proxy и существующие GitLab/SSOСогласованная топология и сетевой план, отдельный проект внедрения.
Kubernetes / HelmГотовый chart не поставляется. Не заменяйте им проверку реальных контрактов служб.
Закрытый контур без интернетаНужны полный offline bundle и доступная внутри модель. Текущий Codex CLI профиль не является air-gapped решением.