Интерактивный установщик Hysteria 2 для VPS. Разворачивает сервер в Docker, настраивает автоматическое получение TLS-сертификата, встроенную HTTP/HTTPS-маскировку и создает готовые YAML и URI для подключения клиента.
- установка Docker Engine и Compose plugin при необходимости;
- получение TLS-сертификата через ACME HTTP-01;
- криптографически стойкий пароль, клиентский YAML и штатный
hysteria2://URI; - встроенная HTTP/HTTPS-маскировка Hysteria 2;
- опциональная настройка SSH и nftables с автоматическим откатом;
- рекомендуемые Hysteria 2 размеры UDP-буферов;
- резервные копии при повторной установке;
- диагностика конфигурации, контейнеров, DNS, портов и firewall;
- автоматические проверки Bash, YAML и nftables в GitHub Actions.
-
VPS с Debian или Ubuntu,
aptиsystemd; -
права
rootили возможность использоватьsudo; -
публичный IPv4 и/или IPv6;
-
домен с A и/или AAAA-записью, направленной на VPS;
-
доступные входящие порты:
Порт Назначение 80/tcpACME HTTP-01 443/tcpHTTPS-маскировка 443/udpHysteria 2 SSH-порт Администрирование сервера
Если провайдер использует отдельный firewall или security group, откройте эти порты до запуска установщика.
git clone https://github.com/XXcipherX/hysteria-vps-setup.git
cd hysteria-vps-setup
sudo bash vps-setup.shУстановщик запросит:
- домен сервера;
- email для ACME-аккаунта Let's Encrypt;
- параметры усиления безопасности;
- применение UDP-профиля производительности.
После завершения импортируйте выведенный URI в клиент Hysteria 2 либо используйте сохраненный клиентский YAML.
Установщик проверяет домен, DNS-записи и необходимые зависимости, затем
создает конфигурацию в /opt/hysteria-vps-setup и запускает контейнер в режиме
host network:
| Контейнер | Образ | Назначение |
|---|---|---|
hysteria |
tobyxdd/hysteria:v2 |
Hysteria 2, ACME и HTTPS-маскировка |
Hysteria слушает 443/udp и 443/tcp. Запросы, не прошедшие
Hysteria-аутентификацию, обрабатываются встроенной маскировкой и получают
обычный HTTP-ответ 404.
При включении этого режима установщик:
- создает отдельного пользователя с указанным SSH-ключом;
- блокирует пароль нового пользователя;
- предоставляет доступ к
sudoи группеdocker; - отключает вход по SSH для
rootи аутентификацию по паролю; - переносит SSH на выбранный порт;
- создает отдельную таблицу nftables
inet hysteria_vps_filter; - сохраняет действующую SSH-конфигурацию перед изменениями.
Изменения SSH и firewall защищены таймерами отката. После применения настроек нужно открыть новую SSH-сессию и подтвердить успешный вход. Если подтверждение не получено, предыдущая конфигурация восстанавливается автоматически.
Warning
Перед изменением SSH убедитесь, что у вас есть доступ к веб-консоли или rescue-режиму провайдера.
Firewall разрешает loopback, established/related соединения, выбранный
SSH-порт, 80/tcp, 443/tcp, 443/udp и необходимый ICMP/ICMPv6. Для SSH и
новых TCP-соединений применяются per-IP rate limits.
Опциональный профиль устанавливает рекомендуемые Hysteria 2 значения:
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
Исходные значения сохраняются и могут быть восстановлены командой
scripts/optimize.sh delete.
Установщик создает клиентский YAML и передает его штатной команде
hysteria share, которая формирует URI. Оба файла сохраняются с правами 0600,
а URI также выводится в терминал:
hysteria2://PASSWORD@example.com:443/?sni=example.com
/var/lib/hysteria-vps-setup/client.yaml
/var/lib/hysteria-vps-setup/client.uri
Основные файлы конфигурации:
/opt/hysteria-vps-setup/docker-compose.yml
/opt/hysteria-vps-setup/hysteria/config.yaml
/opt/hysteria-vps-setup/hysteria/acme/
Служебные файлы:
/var/lib/hysteria-vps-setup/install.env
/var/lib/hysteria-vps-setup/client.yaml
/var/lib/hysteria-vps-setup/client.uri
/var/lib/hysteria-vps-setup/firewall.state
/var/lib/hysteria-vps-setup/optimize.state
/etc/hysteria-vps-setup/firewall.nft
/etc/sysctl.d/90-hysteria-vps-setup.conf
При повторной установке заменяемые файлы копируются в:
/var/backups/hysteria-vps-setup/<timestamp>/
Запустить полный отчет:
sudo bash scripts/diagnose.shПолучить результат в JSON:
sudo bash scripts/diagnose.sh --jsonСкрипт проверяет конфигурационные файлы и права доступа, Compose, контейнеры, DNS, nftables, UDP-буферы и слушающие порты. При критической ошибке команда завершается с ненулевым кодом.
| Переменная | Значение по умолчанию | Описание |
|---|---|---|
HVS_INSTALL_DIR |
/opt/hysteria-vps-setup |
Директория установки |
HVS_STATE_DIR |
/var/lib/hysteria-vps-setup |
Директория состояния |
HVS_FIREWALL_TABLE |
hysteria_vps_filter |
Имя таблицы nftables |
sudo SSH_PORT=2222 bash scripts/firewall.sh apply
sudo bash scripts/firewall.sh status
sudo bash scripts/firewall.sh deleteПроверить правила без применения:
sudo HVS_DRY_RUN=1 SSH_PORT=2222 \
HVS_WHITELIST="203.0.113.10,2001:db8::10" \
bash scripts/firewall.sh apply| Переменная | Значение по умолчанию | Описание |
|---|---|---|
SSH_PORT |
сохраненный порт или 22 |
Разрешенный SSH-порт |
HVS_TCP_PORTS |
80,443 |
Публичные TCP-порты |
HVS_UDP_PORTS |
443 |
Публичные UDP-порты |
HVS_WHITELIST |
пусто | IPv4, IPv6 или CIDR через запятую |
HVS_SYN_RATE |
200 |
Лимит новых TCP-соединений в секунду для одного IP |
HVS_SYN_BURST |
400 |
Допустимый burst TCP-соединений |
HVS_SSH_RATE |
6 |
Лимит новых SSH-соединений в минуту для одного IP |
HVS_SSH_BURST |
5 |
Допустимый burst SSH-соединений |
HVS_ICMP_RATE |
10 |
Лимит ICMP echo в секунду для одного IP |
HVS_ICMP_BURST |
20 |
Допустимый burst ICMP echo |
HVS_SAFETY_DELAY |
300 |
Задержка автоматического отката в секундах |
HVS_ASSUME_FIREWALL_OK |
0 |
1 для неинтерактивного подтверждения |
HVS_DRY_RUN |
0 |
1 для проверки правил без применения |
HVS_CONF_DIR |
/etc/hysteria-vps-setup |
Директория конфигурации |
HVS_STATE_DIR |
/var/lib/hysteria-vps-setup |
Директория состояния |
sudo bash scripts/optimize.sh apply
sudo bash scripts/optimize.sh status
sudo bash scripts/optimize.sh delete| Переменная | Значение по умолчанию | Описание |
|---|---|---|
HVS_UDP_BUFFER_BYTES |
16777216 |
Значения rmem_max и wmem_max |
HVS_DRY_RUN |
0 |
1 для проверки без изменений |
HVS_STATE_DIR |
/var/lib/hysteria-vps-setup |
Директория состояния |
Допустимый диапазон HVS_UDP_BUFFER_BYTES — от 1 MiB до 1 GiB.
sudo docker compose -f /opt/hysteria-vps-setup/docker-compose.yml pull
sudo docker compose -f /opt/hysteria-vps-setup/docker-compose.yml up -d
sudo bash scripts/diagnose.shЛокальный smoke-тест:
bash tests/smoke.shGitHub Actions также проверяет Bash-синтаксис, запускает ShellCheck, рендерит и
разбирает YAML-шаблоны, выполняет smoke-тесты и валидирует сгенерированные
правила через nft -c. Отдельная еженедельная проверка загружает актуальный
образ tobyxdd/hysteria:v2 и проверяет реальное подключение к тестовому серверу.