docs(mediaserver): подробная документация по настройке Hysteria2
- URL-формат (Shadowrocket/NekoBox/Hiddify) с разбором всех параметров - JSON-формат конфига и маппинг полей → Ansible переменные - Таблица: адрес, порт, пароль, TLS insecure, obfuscation salamander - UDP port hopping (transport.udp.hopInterval) - Готовые примеры для всех сценариев (без prxy, self-signed, salamander)
This commit is contained in:
@@ -63,6 +63,173 @@ Init-контейнер автоматически прописывает в `co
|
|||||||
<ProxyBypassLocalAddresses>True</ProxyBypassLocalAddresses>
|
<ProxyBypassLocalAddresses>True</ProxyBypassLocalAddresses>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Настройка Hysteria2 сервера
|
||||||
|
|
||||||
|
#### Способ 1 — URL (Shadowrocket / Clash / NekoBox / hyst2 import)
|
||||||
|
|
||||||
|
Hysteria2 поддерживает стандартный URL-формат — его можно скопировать прямо из Shadowrocket, NekoBox, Hiddify и любого другого клиента:
|
||||||
|
|
||||||
|
```
|
||||||
|
hysteria2://PASSWORD@HOST:PORT?insecure=0&obfs=salamander&obfs-password=OBFS_PASS#MyProxy
|
||||||
|
```
|
||||||
|
|
||||||
|
Части URL:
|
||||||
|
|
||||||
|
| Часть | Значение |
|
||||||
|
|---|---|
|
||||||
|
| `PASSWORD` | Пароль аутентификации (`auth`) |
|
||||||
|
| `HOST:PORT` | Адрес и порт сервера |
|
||||||
|
| `insecure=1` | Отключить проверку TLS-сертификата (self-signed) |
|
||||||
|
| `insecure=0` | Проверять сертификат (Let's Encrypt / доверенный CA) |
|
||||||
|
| `obfs=salamander` | Включить obfuscation типа salamander |
|
||||||
|
| `obfs-password=...` | Пароль для obfuscation |
|
||||||
|
| `#MyProxy` | Имя (метка — игнорируется, только для отображения) |
|
||||||
|
|
||||||
|
Примеры URL:
|
||||||
|
|
||||||
|
```
|
||||||
|
# Без obfuscation, с проверкой TLS
|
||||||
|
hysteria2://mypassword@vps.example.com:443
|
||||||
|
|
||||||
|
# Без obfuscation, самоподписанный сертификат
|
||||||
|
hysteria2://mypassword@1.2.3.4:443?insecure=1
|
||||||
|
|
||||||
|
# С salamander obfuscation
|
||||||
|
hysteria2://mypassword@vps.example.com:443?obfs=salamander&obfs-password=obfsecret
|
||||||
|
|
||||||
|
# Полный вариант с именем
|
||||||
|
hysteria2://mypassword@vps.example.com:443?insecure=0&obfs=salamander&obfs-password=obfsecret#MyVPS
|
||||||
|
```
|
||||||
|
|
||||||
|
Чтобы использовать URL в vault — просто разбери его на части:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Из URL: hysteria2://mypassword@vps.example.com:443?obfs=salamander&obfs-password=obfsecret
|
||||||
|
vault_hysteria2_server: "vps.example.com:443"
|
||||||
|
vault_hysteria2_auth: "mypassword"
|
||||||
|
```
|
||||||
|
|
||||||
|
Obfuscation и TLS задаются отдельными переменными — см. ниже.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Способ 2 — JSON / inline конфиг
|
||||||
|
|
||||||
|
Если у тебя есть конфиг в JSON-формате (экспорт из Hiddify, XRay-клиентов и т.д.):
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"server": "vps.example.com:443",
|
||||||
|
"auth": "mypassword",
|
||||||
|
"tls": {
|
||||||
|
"insecure": false,
|
||||||
|
"sni": "vps.example.com"
|
||||||
|
},
|
||||||
|
"obfs": {
|
||||||
|
"type": "salamander",
|
||||||
|
"salamander": {
|
||||||
|
"password": "obfsecret"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"socks5": {
|
||||||
|
"listen": "127.0.0.1:1080"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Маппинг JSON → переменные Ansible:
|
||||||
|
|
||||||
|
| JSON поле | Ansible переменная |
|
||||||
|
|---|---|
|
||||||
|
| `server` | `vault_hysteria2_server` |
|
||||||
|
| `auth` | `vault_hysteria2_auth` |
|
||||||
|
| `tls.insecure: true` | `mediaserver_hysteria2_insecure: true` |
|
||||||
|
| `obfs.type` | `mediaserver_hysteria2_obfs_type` |
|
||||||
|
| `obfs.salamander.password` | `mediaserver_hysteria2_obfs_password` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Параметры в `group_vars/all/main.yml`
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# Адрес и порт сервера (из vault)
|
||||||
|
vault_hysteria2_server: "vps.example.com:443"
|
||||||
|
vault_hysteria2_auth: "mypassword"
|
||||||
|
|
||||||
|
# TLS — пропустить проверку сертификата (self-signed)
|
||||||
|
mediaserver_hysteria2_insecure: false # true если сервер с самоподписанным сертом
|
||||||
|
|
||||||
|
# Obfuscation (salamander) — скрыть протокол от DPI
|
||||||
|
mediaserver_hysteria2_obfs_type: "salamander" # "" — без obfuscation
|
||||||
|
mediaserver_hysteria2_obfs_password: "obfsecret"
|
||||||
|
|
||||||
|
# UDP переадресация включена по умолчанию в Hysteria2
|
||||||
|
# Интервал смены UDP портов (hop) — защита от блокировки по порту
|
||||||
|
# Задаётся в конфиге: transport.udp.hopInterval: 30s
|
||||||
|
```
|
||||||
|
|
||||||
|
Итоговый конфиг, который попадёт в Secret (`hysteria2-secret.yaml.j2`):
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
server: vps.example.com:443
|
||||||
|
auth: mypassword
|
||||||
|
tls:
|
||||||
|
insecure: false # true = игнорировать самоподписанный сертификат
|
||||||
|
obfs:
|
||||||
|
type: salamander
|
||||||
|
salamander:
|
||||||
|
password: obfsecret
|
||||||
|
socks5:
|
||||||
|
listen: 127.0.0.1:1080 # Prowlarr подключается сюда
|
||||||
|
transport:
|
||||||
|
udp:
|
||||||
|
hopInterval: 30s # UDP port hopping каждые 30 сек
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Быстрый старт без obfuscation (минимальный пример)
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# vault.yml
|
||||||
|
vault_hysteria2_server: "1.2.3.4:443"
|
||||||
|
vault_hysteria2_auth: "supersecretpassword"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make addon-mediaserver
|
||||||
|
```
|
||||||
|
|
||||||
|
#### С obfuscation salamander
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# vault.yml
|
||||||
|
vault_hysteria2_server: "vps.example.com:443"
|
||||||
|
vault_hysteria2_auth: "supersecretpassword"
|
||||||
|
```
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
# group_vars/all/main.yml или через ARGS
|
||||||
|
mediaserver_hysteria2_obfs_type: "salamander"
|
||||||
|
mediaserver_hysteria2_obfs_password: "obfs-secret-phrase"
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make addon-mediaserver ARGS="-e mediaserver_hysteria2_obfs_type=salamander -e mediaserver_hysteria2_obfs_password=obfs-secret-phrase"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Self-signed сертификат на сервере
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make addon-mediaserver ARGS="-e mediaserver_hysteria2_insecure=true"
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Без прокси (если не нужен)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make addon-mediaserver ARGS="-e mediaserver_hysteria2_enabled=false"
|
||||||
|
```
|
||||||
|
|
||||||
## Установка
|
## Установка
|
||||||
|
|
||||||
### 1. Vault секреты
|
### 1. Vault секреты
|
||||||
|
|||||||
Reference in New Issue
Block a user