Обновлена документация под новые аддоны (gitlab, redis, mongodb, kafka, kafka-ui, rabbitmq) и новую модель явного выбора зависимостей. Добавлены и унифицированы описания переключателей *_database_mode и *_redis_mode, обновлена таблица зависимостей аддонов, примеры конфигурации и список vault-секретов.
272 lines
7.0 KiB
Markdown
272 lines
7.0 KiB
Markdown
# Hysteria2 Server
|
||
|
||
Устанавливает [Hysteria2](https://v2.hysteria.network/) VPN-сервер на удалённый VPS. На выходе даёт готовый URL для вставки в Shadowrocket, NekoBox, Hiddify или `vault_hysteria2_url` (Prowlarr sidecar).
|
||
|
||
## Что устанавливается
|
||
|
||
- Бинарник `hysteria` последней версии с GitHub
|
||
- Системный пользователь `hysteria`
|
||
- Конфиг в `/etc/hysteria/config.yaml`
|
||
- systemd-сервис `hysteria2` (autostart)
|
||
- Правило firewall (ufw / firewalld)
|
||
- TLS: self-signed cert **или** Let's Encrypt (ACME) **или** свой сертификат
|
||
|
||
## Быстрый старт
|
||
|
||
### 1. Добавить VPS в inventory
|
||
|
||
```ini
|
||
# inventory/hosts.ini
|
||
[hysteria2_server]
|
||
myvps ansible_host=1.2.3.4 ansible_user=root
|
||
```
|
||
|
||
### 2. Vault секреты
|
||
|
||
```bash
|
||
make vault-edit
|
||
```
|
||
|
||
```yaml
|
||
# group_vars/all/vault.yml
|
||
vault_hysteria2_server_password: "my-secure-password-32chars+"
|
||
vault_hysteria2_obfs_password: "obfs-secret" # если obfs включён
|
||
```
|
||
|
||
### 3. Деплой
|
||
|
||
**С SSH-ключом** (рекомендуется):
|
||
```bash
|
||
make addon-hysteria2-server
|
||
```
|
||
|
||
**С SSH-паролем** (ввод в терминале):
|
||
```bash
|
||
make addon-hysteria2-server ARGS="-k"
|
||
```
|
||
|
||
**С SSH-паролем + sudo-паролем**:
|
||
```bash
|
||
make addon-hysteria2-server ARGS="-k -K"
|
||
```
|
||
|
||
**На конкретный хост** (без inventory):
|
||
```bash
|
||
make addon-hysteria2-server ARGS="-i '1.2.3.4,' -u root -k"
|
||
```
|
||
|
||
После деплоя Ansible выведет готовый URL:
|
||
```
|
||
vault_hysteria2_url: "hysteria2://password@1.2.3.4:443?insecure=1#MyVPS"
|
||
```
|
||
|
||
---
|
||
|
||
## Конфигурация
|
||
|
||
### Режимы TLS
|
||
|
||
#### Self-signed (по умолчанию) — без домена, IP-only
|
||
|
||
```yaml
|
||
# group_vars/all/main.yml
|
||
hysteria2_server_tls_mode: "selfsigned"
|
||
```
|
||
|
||
Клиент подключается с `insecure=1`. URL автоматически получает `?insecure=1`.
|
||
|
||
#### ACME — Let's Encrypt (нужен домен)
|
||
|
||
```yaml
|
||
hysteria2_server_tls_mode: "acme"
|
||
hysteria2_server_domain: "vpn.example.com"
|
||
hysteria2_server_acme_email: "admin@example.com"
|
||
```
|
||
|
||
Требования: порт 80 открыт, DNS A-запись указывает на VPS. Hysteria2 сам получает и обновляет сертификат.
|
||
|
||
#### Custom — свои cert/key файлы
|
||
|
||
```yaml
|
||
hysteria2_server_tls_mode: "custom"
|
||
hysteria2_server_tls_cert_path: "/etc/hysteria/server.crt"
|
||
hysteria2_server_tls_key_path: "/etc/hysteria/server.key"
|
||
```
|
||
|
||
Сертификаты должны уже лежать на сервере до запуска роли.
|
||
|
||
---
|
||
|
||
### Obfuscation (salamander)
|
||
|
||
Скрывает протокол от DPI — важно если Hysteria2 блокируется провайдером:
|
||
|
||
```yaml
|
||
hysteria2_server_obfs_enabled: true
|
||
```
|
||
|
||
```yaml
|
||
# vault.yml
|
||
vault_hysteria2_obfs_password: "random-obfs-phrase"
|
||
```
|
||
|
||
---
|
||
|
||
### Лимиты полосы на клиента
|
||
|
||
```yaml
|
||
hysteria2_server_up_mbps: 100 # исходящий с сервера (= входящий у клиента)
|
||
hysteria2_server_down_mbps: 100 # входящий на сервер (= исходящий у клиента)
|
||
```
|
||
|
||
`0` — без ограничений.
|
||
|
||
---
|
||
|
||
### Все переменные
|
||
|
||
```yaml
|
||
hysteria2_server_version: "" # "" = автоопределение последней версии
|
||
hysteria2_server_port: 443
|
||
hysteria2_server_password: "{{ vault_hysteria2_server_password }}"
|
||
|
||
hysteria2_server_tls_mode: "selfsigned" # selfsigned | acme | custom
|
||
hysteria2_server_domain: ""
|
||
hysteria2_server_acme_email: ""
|
||
hysteria2_server_tls_cert_path: "/etc/hysteria/server.crt"
|
||
hysteria2_server_tls_key_path: "/etc/hysteria/server.key"
|
||
|
||
hysteria2_server_obfs_enabled: false
|
||
hysteria2_server_obfs_password: "{{ vault_hysteria2_obfs_password | default('') }}"
|
||
|
||
hysteria2_server_masquerade_enabled: true
|
||
hysteria2_server_masquerade_url: "https://bing.com/"
|
||
|
||
hysteria2_server_up_mbps: 0
|
||
hysteria2_server_down_mbps: 0
|
||
|
||
hysteria2_server_name: "MyVPS" # метка в URL (для клиентов)
|
||
```
|
||
|
||
---
|
||
|
||
## Подключение SSH
|
||
|
||
### Ключ (рекомендуется)
|
||
|
||
```bash
|
||
# Скопировать ключ на VPS
|
||
ssh-copy-id root@1.2.3.4
|
||
|
||
# Деплой
|
||
make addon-hysteria2-server
|
||
```
|
||
|
||
### Пароль
|
||
|
||
```bash
|
||
# Ввод пароля в терминале:
|
||
make addon-hysteria2-server ARGS="-k"
|
||
```
|
||
|
||
Или хранить в vault (не рекомендуется для SSH):
|
||
|
||
```yaml
|
||
# inventory/hosts.ini
|
||
[hysteria2_server]
|
||
myvps ansible_host=1.2.3.4 ansible_user=root ansible_ssh_pass="{{ vault_hysteria2_vps_ssh_password }}"
|
||
```
|
||
|
||
### Нестандартный SSH порт
|
||
|
||
```ini
|
||
# inventory/hosts.ini
|
||
[hysteria2_server]
|
||
myvps ansible_host=1.2.3.4 ansible_user=root ansible_port=2222
|
||
```
|
||
|
||
---
|
||
|
||
## Примеры inventory
|
||
|
||
### Один VPS, root + ключ
|
||
|
||
```ini
|
||
[hysteria2_server]
|
||
myvps ansible_host=1.2.3.4 ansible_user=root
|
||
```
|
||
|
||
### Один VPS, обычный пользователь + sudo
|
||
|
||
```ini
|
||
[hysteria2_server]
|
||
myvps ansible_host=1.2.3.4 ansible_user=ubuntu
|
||
```
|
||
|
||
```bash
|
||
make addon-hysteria2-server ARGS="-K" # -K = prompt sudo password
|
||
```
|
||
|
||
### Несколько серверов (мульти-регион)
|
||
|
||
```ini
|
||
[hysteria2_server]
|
||
vps-nl ansible_host=1.2.3.4 ansible_user=root
|
||
vps-de ansible_host=5.6.7.8 ansible_user=root
|
||
```
|
||
|
||
---
|
||
|
||
## Что делать с URL после деплоя
|
||
|
||
Ansible выведет в конце:
|
||
|
||
```
|
||
vault_hysteria2_url: "hysteria2://mypassword@1.2.3.4:443?insecure=1&obfs=salamander&obfs-password=secret#MyVPS"
|
||
```
|
||
|
||
**Вариант 1 — вставить в vault для Prowlarr:**
|
||
```yaml
|
||
# group_vars/all/vault.yml
|
||
vault_hysteria2_url: "hysteria2://mypassword@1.2.3.4:443?insecure=1#MyVPS"
|
||
```
|
||
Затем: `make addon-mediaserver`
|
||
|
||
**Вариант 2 — вставить в Shadowrocket / NekoBox / Hiddify:**
|
||
Скопируй строку `hysteria2://...` и добавь как новый профиль в клиент.
|
||
|
||
---
|
||
|
||
## Управление сервисом
|
||
|
||
```bash
|
||
# Статус
|
||
ssh root@1.2.3.4 systemctl status hysteria2
|
||
|
||
# Логи в реальном времени
|
||
ssh root@1.2.3.4 journalctl -u hysteria2 -f
|
||
|
||
# Перезапуск после изменения конфига
|
||
ssh root@1.2.3.4 systemctl restart hysteria2
|
||
|
||
# Обновить до последней версии
|
||
make addon-hysteria2-server
|
||
```
|
||
|
||
## Обновление
|
||
|
||
```bash
|
||
# Скачает последнюю версию и перезапустит сервис
|
||
make addon-hysteria2-server
|
||
```
|
||
|
||
Для фиксации версии:
|
||
```yaml
|
||
hysteria2_server_version: "app/v2.5.1"
|
||
```
|
||
## Официальные ресурсы
|
||
|
||
- Официальный сайт: [https://hysteria.network/](https://hysteria.network/)
|
||
- Официальная документация: [https://v2.hysteria.network/docs/getting-started/Installation/](https://v2.hysteria.network/docs/getting-started/Installation/)
|
||
- Версии Helm chart / ПО: [https://github.com/apernet/hysteria/releases](https://github.com/apernet/hysteria/releases)
|