204 lines
7.7 KiB
Markdown
204 lines
7.7 KiB
Markdown
# Operations and troubleshooting
|
||
|
||
## Цель документа
|
||
|
||
Зафиксировать минимальный operational контур после установки.
|
||
|
||
## Что должен помнить оператор
|
||
|
||
### 0. Target prerequisites обязательны
|
||
|
||
На target-хосте install-flow сам обеспечивает системные зависимости (deps stage):
|
||
|
||
```bash
|
||
apt-get update
|
||
apt-get install -y sudo ca-certificates curl iproute2 tar openssl nftables systemd
|
||
```
|
||
|
||
`sudo` обязателен для smoke-проверок прав от имени runtime-пользователей (`hysteria`, `hy2xs-admin`), но его не нужно ставить вручную заранее: на clean-host он устанавливается на deps-стадии до smoke.
|
||
|
||
Важно: packaged baseline использует `HY2XS_SSH_PORT=2323` по умолчанию. На target-хосте это значение обязательно нужно привести к фактическому рабочему SSH-порту оператора в `/etc/hy2xs/hy2xs.env` и применить через `reconfigure --apply`.
|
||
|
||
### 1. Builder и target — разные миры
|
||
Если нужно изменить состав install package, это делается в локальном builder layer, а не на target server.
|
||
|
||
### 2. UI приезжает из нашего пакета
|
||
Если проблема в UI, сначала смотреть:
|
||
- какой `HUI_FORK_REF`
|
||
- какой `HUI_BUILD_ID`
|
||
- тот ли пакет вообще стоит на сервере
|
||
|
||
### 3. Hysteria приходит из upstream
|
||
Если проблема в ядре Hysteria, сначала смотреть:
|
||
- какую фактическую версию оркестратор установил
|
||
- что записано в `HY2_VERSION`
|
||
- не связано ли поведение со свежим upstream release
|
||
- какая версия Hysteria зафиксирована в metadata установленного пакета
|
||
|
||
Для обновления бинарника Hysteria2 используйте новый release install package.
|
||
Изменение runtime env не обновляет бинарник Hysteria2.
|
||
|
||
### 4. Оркестратор — Bun/TypeScript, но target не билдит его
|
||
Если проблема в install flow, сначала смотреть:
|
||
- какой `ORCH_BUILD_ID`
|
||
- какой `ORCH_ENTRYPOINT`
|
||
- не подменён ли install package вручную
|
||
|
||
## Базовые команды проверки
|
||
|
||
Проверка сервисов:
|
||
```bash
|
||
systemctl status hysteria-server
|
||
systemctl status hy2xs-admin
|
||
```
|
||
|
||
Проверка порта:
|
||
```bash
|
||
ss -uln
|
||
```
|
||
|
||
Проверка firewall:
|
||
```bash
|
||
nft list ruleset
|
||
```
|
||
|
||
Проверка `post-install.env`:
|
||
```bash
|
||
cat /etc/hysteria/post-install.env
|
||
```
|
||
|
||
Проверка логов через journald:
|
||
```bash
|
||
journalctl -u hysteria-server -n 100 --no-pager
|
||
journalctl -u hy2xs-admin -n 100 --no-pager
|
||
```
|
||
|
||
Проверка install-state marker:
|
||
```bash
|
||
cat /var/lib/hy2xs/install-state.json
|
||
```
|
||
|
||
Если `reconfigure` сообщает об отсутствии marker, нужно повторно выполнить чистый install и только потом применять runtime-изменения.
|
||
|
||
## Auth endpoint fail checklist
|
||
|
||
```bash
|
||
systemctl status hysteria-server
|
||
systemctl status hy2xs-admin
|
||
|
||
sudo -u hy2xs-admin test -r /etc/hysteria/config.yaml
|
||
|
||
curl -sS -X POST \
|
||
-H 'Content-Type: application/json' \
|
||
--data '{"addr":"127.0.0.1:12345","auth":"invalid","tx":0}' \
|
||
http://127.0.0.1:8080/hui/hysteria2/auth
|
||
|
||
curl -sS \
|
||
-H "Authorization: <trafficStatsSecret>" \
|
||
http://127.0.0.1:36712/online
|
||
```
|
||
|
||
## Типовые проблемы
|
||
|
||
### Сервер установился, но UI не работает
|
||
Проверить:
|
||
- разложился ли bundled UI
|
||
- корректен ли unit `hy2xs-admin`
|
||
- совпадает ли `HUI_INSTALL_DIR` с реальностью
|
||
- не сломан ли bind host / port
|
||
|
||
### Admin UI access via SSH tunnel
|
||
|
||
Production-модель для UI: `HY2XS_UI_BIND_HOST=127.0.0.1`, внешний доступ к `8080/tcp` не открывается.
|
||
Доступ оператора выполняется через SSH local forwarding.
|
||
|
||
Windows-команда туннеля:
|
||
|
||
```bash
|
||
ssh -p 2323 \
|
||
-i C:\Users\kirap\.ssh\id_ed25519_uk1 \
|
||
-N \
|
||
-L 127.0.0.1:8080:127.0.0.1:8080 \
|
||
root@185.156.108.141
|
||
```
|
||
|
||
После запуска открыть `http://127.0.0.1:8080/#/login`.
|
||
|
||
Если SSH-туннель не поднимается (`administratively prohibited`), проверить effective SSH policy:
|
||
|
||
```bash
|
||
sshd -T | grep -E '^(port|allowtcpforwarding|permitopen|gatewayports|passwordauthentication|permitrootlogin) '
|
||
```
|
||
|
||
Рекомендуемый фрагмент hardening `sshd_config`:
|
||
|
||
```sshconfig
|
||
Port 2323
|
||
PubkeyAuthentication yes
|
||
PasswordAuthentication no
|
||
KbdInteractiveAuthentication no
|
||
PermitRootLogin prohibit-password
|
||
|
||
AllowTcpForwarding local
|
||
PermitOpen 127.0.0.1:8080 localhost:8080
|
||
GatewayPorts no
|
||
|
||
X11Forwarding no
|
||
AllowAgentForwarding no
|
||
MaxAuthTries 3
|
||
LoginGraceTime 20
|
||
ClientAliveInterval 300
|
||
ClientAliveCountMax 2
|
||
```
|
||
|
||
### Hysteria скачалась, но не стартует
|
||
Проверить:
|
||
- валиден ли config
|
||
- совпадают ли listen port и firewall rule
|
||
- домен / SNI / TLS policy
|
||
- реальную установленную версию Hysteria
|
||
|
||
### Тестовый клиент не подключается
|
||
Проверить:
|
||
- `server_name`
|
||
- порт
|
||
- `obfs.password`
|
||
- auth material
|
||
- что используется совместимый клиентский конфиг
|
||
|
||
### Install/reconfigure падает на DNS AAAA
|
||
Проверить значение `HY2XS_DNS_AAAA_POLICY` в `/etc/hy2xs/hy2xs.env`:
|
||
- `strict` (default): AAAA приводит к fail в IPv4-only профиле;
|
||
- `warn`: warning + продолжение;
|
||
- `off`: AAAA-check отключён.
|
||
|
||
Для production baseline рекомендуется `strict`.
|
||
|
||
### Скорость не соответствует ожиданиям
|
||
Проверить:
|
||
- `bandwidth.*` на сервере
|
||
- клиентские `up_mbps/down_mbps`
|
||
- нет ли ложного ожидания, что один только host BBR решает speed policy
|
||
|
||
### Изменили `post-install.env`, но runtime не изменился
|
||
Это ожидаемо.
|
||
|
||
`post-install.env` — reference file, а не autoreconcile engine.
|
||
|
||
Редактировать нужно `/etc/hy2xs/hy2xs.env` и затем запускать `reconfigure --dry-run/--apply`.
|
||
|
||
### Изменили bootstrap-поля, но пароль admin не сменился
|
||
Это ожидаемо.
|
||
|
||
`HY2XS_ADMIN_INITIAL_PASSWORD` и `HY2XS_ADMIN_CON_PASS` используются только как bootstrap-данные при первичной установке.
|
||
Для ротации существующих credentials нужен отдельный flow на уровне account-management.
|
||
|
||
## Правила эксплуатации
|
||
|
||
1. Не править сервер как будто на нём есть builder.
|
||
2. Не считать bundled UI источником install-policy.
|
||
3. Не считать `post-install.env` автоматическим механизмом применения изменений.
|
||
4. Не расширять install-only baseline до lifecycle-manager без отдельного проектного решения.
|
||
5. Не смешивать install baseline и access/bot platform в одной документации.
|
||
6. Не включать IPv6 в runtime-политике HY2XS (проект IPv4-only).
|