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

121 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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