112 lines
4.5 KiB
Markdown
112 lines
4.5 KiB
Markdown
# 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`
|
|
- документация не обещает жёсткий pin как baseline
|
|
- если оператору нужна строгая фиксация версии, это отдельный режим, а не базовая модель
|
|
|
|
## Платформа
|
|
|
|
- ОС: только 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
|
|
- корректный `server_name` / SNI на клиентах
|
|
- одна понятная TLS policy
|
|
- без смешивания нескольких несовместимых схем по умолчанию
|
|
|
|
Инварианты:
|
|
- `acme` -> только `acme` block в конфиге;
|
|
- `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 работает поверх актуального состояния сервера
|