Files
HY2XS_flamy/docs/03-server-hysteria2.md
T
founder b903a09fb1 Позиционирование как самостоятельного продукта и переход на AGPL-3.0-only
HY2XS больше не описывается как форк H UI. Из README, docs, сообщений
builder'а и post-install metadata убрана вся fork/H UI терминология.

Лицензия:
- LICENSE: MIT заменён на полный текст AGPL-3.0-only
- README: бейдж и раздел лицензии, подпись Flamy Studio
- orchestrator/package.json, apps/frontend/package.json: license
- package.sh: LICENSE кладётся в install package, license=AGPL-3.0-only
  в metadata
- verify.sh, acceptance.sh: проверки корневой AGPL и metadata

Документация:
- 04-admin-panel-h-ui-fork.md -> 04-admin-panel.md, переписан вокруг
  модели Hysteria2 = external runtime dependency,
  HY2XS admin = native HY2XS component
- docs 01, 02, 03, 08, 09, 11, 12, README: единая терминология HY2XS admin

post-install.env:
- блок HUI_* заменён на HY2XS_ADMIN_*, HUI_FORK_REF -> HY2XS_ADMIN_SOURCE

Внутренний legacy namespace (H_UI_* ключи SQLite, HUI_DATA/HUI_LOG,
API /hui, h_ui_db.sql) намеренно не тронут: он требует отдельной
миграции БД и выносится в отдельный этап.
2026-08-15 03:34:18 +05:00

5.4 KiB
Raw Blame History

Server Hysteria2 baseline

Цель документа

Зафиксировать правила для серверного слоя Hysteria2 в модели, где UI поставляется вместе с проектом, а Hysteria берётся из official upstream во время установки.

Роль Hysteria2

Hysteria2 — основной транспортный компонент сервера.
Он не вендорится и не собирается как часть HY2XS.

Source policy

Базовое правило:

  • Hysteria2 скачивается во время установки
  • источник — официальный upstream
  • install layer не должен подменять собой upstream-дистрибуцию Hysteria2

Версионная политика

С учётом выбранной модели «берём свежее из upstream» фиксируется такая практика:

  • по умолчанию install layer тянет свежий upstream release / install source
  • фактически установленная версия обязательно записывается в post-install.env
  • бинарник Hysteria2 устанавливается только на этапе install
  • версия, URL и SHA256 фиксируются в metadata install package
  • reconfigure не обновляет и не откатывает бинарник Hysteria2

Платформа

  • ОС: только Debian 13
  • init/system management: systemd
  • сетевой фильтр: nftables
  • архитектура baseline: x86_64/amd64

Listen и сеть

Listen

  • только IPv4
  • формат: 0.0.0.0:<PORT>

Порт

  • один фиксированный UDP-порт
  • этот порт должен совпадать в:
    • server config
    • firewall rules
    • post-install.env

Обфускация

В baseline включается:

  • obfs.type: salamander
  • obfs.password

Правила:

  • пароль должен быть сильным
  • пароль должен фиксироваться в конфигурационном контуре
  • значение должно быть доступно оператору через runtime config и post-install.env

TLS

Требования:

  • production default: acme
  • поддерживаемые режимы: acme | file | self_signed_dev
  • self_signed_dev только для dev/lab и только при явном HY2XS_ALLOW_SELF_SIGNED_DEV=true
  • корректный server_name / SNI на клиентах
  • одна понятная TLS policy
  • без смешивания нескольких несовместимых схем по умолчанию

Инварианты:

  • acme -> только acme block в конфиге;
  • acme block обязан содержать type: http|tls из runtime env (HY2XS_ACME_TYPE);
  • HY2XS_ACME_TYPE=dns в production-профиле запрещён до отдельной реализации;
  • HY2XS_HYSTERIA_AUTH_MODE зафиксирован в http и валидируется fail-fast;
  • HY2XS_HYSTERIA_OBFS_TYPE зафиксирован в salamander и валидируется fail-fast;
  • блок masquerade в baseline не задаётся (допустимо, но приводит к 404 Not Found на обычный HTTP трафик);
  • file -> только tls.cert/tls.key block;
  • self_signed_dev -> только dev сценарии.

Auth policy

Для baseline выбирается одна предсказуемая auth-модель.

Правила:

  • install flow должен оставить рабочий auth state
  • bootstrap auth material должен быть либо передан оператором, либо безопасно сгенерирован
  • дальнейшая модель выдачи доступа пользователям не фиксируется в этом пакете docs

Bandwidth и congestion

Серверная baseline policy:

  • bandwidth.up = 50 mbps
  • bandwidth.down = 50 mbps
  • ignoreClientBandwidth = false

Важно:

  • эти параметры сами по себе не исчерпывают speed policy
  • корректный лимит ожидается только в паре с совместимым клиентским конфигом

Рекомендуемые пути

  • /etc/hysteria/config.yaml
  • /var/lib/hysteria/
  • /etc/hy2xs/hy2xs.env
  • /etc/hysteria/post-install.env

Серверные инварианты

После установки должно быть верно:

  1. Hysteria2 получена из official upstream
  2. фактическая версия отражена в post-install.env
  3. конфиг валиден
  4. сервис стартует через systemd
  5. нужный UDP-порт реально слушается
  6. тестовый совместимый клиент может подключиться
  7. bundled UI работает поверх актуального состояния сервера
  8. trafficStats.secret отдельный от JWT_SECRET
  9. IPv6 listen не используется
  10. публичные клиентские endpoint/URL берутся из HY2XS_PUBLIC_HOST + HY2XS_PUBLIC_PORT, а не из listen/request-host