# Runtime env и post-install snapshot ## Цель документа Зафиксировать двухслойную модель: - editable runtime env: `/etc/hy2xs/hy2xs.env` - generated deploy snapshot: `/etc/hysteria/post-install.env` ## Зачем нужен файл После первичной установки оператору нужны: 1) runtime-файл, который оркестратор читает и валидирует; 2) snapshot-файл фактического deploy-состояния. В snapshot видно: - какой пакет был установлен - какой build артефакт использован - какой стек оркестратора применён - какая версия Hysteria реально установилась - какой fork/build UI разложен на target - какие базовые параметры сети и портов заданы Именно для этого создаётся `post-install.env`. ## Чего файл не делает Этот файл: - не делает оркестратор update-manager'ом - не гарантирует автоматическое применение изменений - не заменяет runtime-конфиги - не превращает target в builder ## Рекомендуемые пути ```bash /etc/hy2xs/hy2xs.env /etc/hysteria/post-install.env ``` `/etc/hy2xs/hy2xs.env` и `/etc/hysteria/post-install.env` должны иметь права `0600 root:root`. `/etc/hysteria/config.yaml` должен иметь права `0640 hysteria:hy2xs-admin` (UI только читает). ## Минимальный набор переменных ### Deploy / package - `DEPLOY_TARGET_OS` - `DEPLOY_TIMESTAMP` (last apply timestamp) - `PACKAGE_NAME` - `PACKAGE_BUILD_ID` - `PACKAGE_VERSION` ### Orchestrator - `ORCH_SOURCE_STACK=bun-typescript` - `ORCH_BUILD_MODE` - `ORCH_BUILD_ID` - `ORCH_ENTRYPOINT` ### Общие - `DEPLOY_DOMAIN` - `PUBLIC_HOST` - `PUBLIC_PORT` - `SSH_PORT` - `HY2XS_FIREWALL_ENABLED` - `HY2XS_FIREWALL_STAGED_APPLY` - `HY2XS_ADMIN_USER` - `HY2XS_FORCE_PASSWORD_CHANGE` - `HY2XS_ALLOW_SELF_SIGNED_DEV` ### Hysteria - `HY2_SOURCE=official-upstream` - `HY2_VERSION` - `HY2_TLS_MODE` - `HY2_ACME_EMAIL` - `HY2_TLS_CERT_PATH` - `HY2_TLS_KEY_PATH` - `HY2_LISTEN_HOST` - `HY2_PORT` - `HY2_AUTH_MODE` - `HY2_AUTH_URL` - `HY2_TRAFFIC_STATS_LISTEN` - `HY2_OBFS_TYPE` - `HY2_OBFS_PASSWORD` - `HY2_BANDWIDTH_UP_Mbps` - `HY2_BANDWIDTH_DOWN_Mbps` - `HY2_IGNORE_CLIENT_BANDWIDTH` - `HY2_CONFIG_PATH` ### HY2XS admin - `HUI_ENABLED` - `HUI_FORK_REF` - `HUI_BUILD_ID` - `HUI_BIND_HOST` - `HUI_PORT` - `HUI_INSTALL_DIR` - `HUI_DATA_DIR` - `HUI_LOG_DIR` ## Как работать с файлами Правильная модель: 1. оркестратор создаёт `hy2xs.env` и `post-install.env` при установке; 2. оператор редактирует только `hy2xs.env`; 3. оператор запускает `reconfigure --dry-run`, затем `reconfigure --apply`; 4. оркестратор обновляет runtime и перезаписывает snapshot. Важно: - `HY2XS_ADMIN_INITIAL_PASSWORD` используется только для первичного bootstrap seed; - `HY2XS_ADMIN_CON_PASS` — отдельная runtime-сущность для Hysteria auth/smoke; - bootstrap secret хранится в явном формате `KEY=VALUE` (`ADMIN_USER`, `ADMIN_INITIAL_PASSWORD`, `ADMIN_CON_PASS`), права `0600`; - `HY2XS_FORCE_PASSWORD_CHANGE` в production baseline установлен в `false` (forced UX-flow пока не реализован); - после первичного seed перезапуски `hy2xs-admin` не должны переопределять пароль admin и `con_pass`. ## Что нельзя делать - сваливать туда временный мусор - считать, что edit env автоматически меняет runtime без `reconfigure --apply` - использовать файл как замену настоящей конфигурации сервисов ## Пример Используйте canonical runtime-файл `package/config/hy2xs.env` как базовый шаблон значений и переносите его параметры в `/etc/hy2xs/hy2xs.env`.