HY2XS

HY2XS — production installer/runtime-manager для развёртывания Hysteria2 + HY2XS admin на чистом Debian 13 amd64.

Состав baseline:

  • production builder на Debian 13 amd64 создаёт один переносимый архив;
  • install-only оркестратор на Bun + TypeScript поставляется на target как готовый compiled artifact;
  • HY2XS admin поставляется в составе пакета как bundled fork;
  • vanilla Hysteria2 устанавливается как pinned binary (version/url/sha256 из metadata install package);
  • runtime-конфиг управляется через /etc/hy2xs/hy2xs.env и команду reconfigure.

В baseline намеренно не входят target-side build, standalone rollback/update/uninstall subcommands, Telegram bot delivery, port hopping и generic server-manager функции.

При этом install/reconfigure содержат bounded rollback для failure-сценариев firewall/systemd/config/smoke.

Структура репозитория

  • tools/build — production builder и packaging pipeline.
  • orchestrator — исходники install-only оркестратора на Bun + TypeScript.
  • package — skeleton итогового install package: entrypoint, templates, systemd units, package docs.
  • apps — исходники HY2XS admin fork.
  • docs — архитектурная документация и acceptance.
  • dist — итоговые install archives, создаются builder'ом и не хранятся в git.

Сборка

Production-сборка выполняется только на Debian 13 amd64:

PACKAGE_VERSION=0.1.0 ./tools/build/build.sh

Builder сам проверяет ОС, архитектуру, структуру проекта, lock-файлы, версии Go/Bun/Node.js/pnpm и при необходимости скачивает локальный toolchain.

Ожидаемый результат:

dist/hy2xs-install-0.1.0.tar.gz

На target server не должно быть bun install, pnpm install, TypeScript transpilation, frontend build или Go build.

Подробности сборки: tools/build/README.md.

Публикация

Целевой репозиторий:

https://git.ext.flamy.studio/flamy_dev/HY2XS_flamy.git

Публиковать изменения нужно только после прохождения baseline acceptance, сборки оркестратора и smoke checks итогового пакета.

Установка и конфигурация

На чистом Debian 13 target нужно распаковать архив и запустить от root:

Обязательные системные зависимости target-хоста:

apt-get update
apt-get install -y sudo ca-certificates curl iproute2 tar openssl nftables systemd

sudo является обязательной зависимостью target-хоста. Он используется не для интерактивной установки, а для smoke-проверок прав доступа от имени runtime-пользователей.

sudo должен быть установлен до запуска ./install.sh: preflight проверяет его до шага installDeps, поэтому deps-стадия не является bootstrap-слоем для sudo.

./install.sh --non-interactive

Опционально можно передать внешний source-config (не путь runtime-файла на target):

./install.sh --config /root/custom-hy2xs.env --non-interactive

/etc/hy2xs/hy2xs.env создаётся install-слоем автоматически и далее редактируется оператором перед reconfigure.

После установки применяются команды оркестратора:

hy2xs-orchestrator reconfigure --package-dir /usr/local/lib/hy2xs/package --config /etc/hy2xs/hy2xs.env --dry-run
hy2xs-orchestrator reconfigure --package-dir /usr/local/lib/hy2xs/package --config /etc/hy2xs/hy2xs.env --apply
hy2xs-orchestrator doctor --package-dir /usr/local/lib/hy2xs/package --config /etc/hy2xs/hy2xs.env

HY2XS_ADMIN_INITIAL_PASSWORD и HY2XS_ADMIN_CON_PASS — install-only bootstrap-поля. Их изменение в /etc/hy2xs/hy2xs.env после установки не ротирует существующие credentials в SQLite автоматически.

Ключевые инварианты:

  • только IPv4 (0.0.0.0:<port> для Hysteria, 127.0.0.1:<ui_port> для UI по умолчанию);
  • IPv6 явно out of scope;
  • UI запускается не от root (hy2xs-admin);
  • секреты и чувствительные конфиги: 0600;
  • snapshot deploy-фактов: /etc/hysteria/post-install.env;
  • editable runtime layer: /etc/hy2xs/hy2xs.env.
S
Description
No description provided
Readme AGPL-3.0 2.7 MiB
v1.0.0 Latest
2026-09-08 00:55:49 +00:00
Languages
Go 46.6%
TypeScript 32.9%
Shell 14.5%
Vue 5.6%
PowerShell 0.2%
Other 0.2%