Files
HY2XS_flamy/docs/03-server-hysteria2.md
T

117 lines
5.0 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 — основной транспортный компонент сервера.
Он не форкается и не поставляется как часть UI-форка.
## Source policy
Базовое правило:
- Hysteria2 скачивается **во время установки**
- источник — **официальный upstream**
- install layer не должен подменять собой upstream-дистрибуцию Hysteria2
## Версионная политика
С учётом выбранной модели «берём свежее из upstream» фиксируется такая практика:
- по умолчанию install layer тянет **свежий upstream release / install source**
- фактически установленная версия обязательно записывается в `post-install.env`
- поддерживаются политики `latest | vX.Y.Z` через `HY2XS_HYSTERIA_VERSION`
- при `vX.Y.Z` install обязан валидировать соответствие фактически установленной версии
## Платформа
- ОС: только Debian 12
- 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-профиле запрещён до отдельной реализации;
- `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