- scripts/kit-sub.py — посредник на публичном порту подписки (HTTPS), 3X-UI только на 127.0.0.1 - Clash/Mihomo (Clash Verge, FlClash…) получают конфиг 3X-UI плюс AmneziaWG - Happ, v2rayN, Karing, Hiddify — ссылки без AmneziaWG, которого они не умеют - expire=0 убирается из Subscription-Userinfo — больше нет «01.01.1970» - Сертификат перечитывается после продления Let's Encrypt, TLS в потоках, тайм-ауты - Установщик ставит kit-sub сам (systemd, ограничения безопасности); адрес подписки не меняется Проверено: Mihomo по итоговому Clash-конфигу — все 10 прокси, включая оба AmneziaWG; обновление поверх существующей установки на сервере в России.
7.4 KiB
🛡 3X-UI: все протоколы одной командой
Одна команда ставит панель 3X-UI, создаёт подключения на 11 протоколах и выдаёт одну ссылку-подписку: приложение само получит подходящий ему формат и нужные протоколы. Домены не нужны.
Что делает скрипт:
- ставит официальную 3X-UI проверенной версии её собственным установщиком и ядро Xray, с которым работают все клиенты (Hiddify, Mihomo, v2rayN, Happ);
- выпускает сертификат Let's Encrypt на IP сервера и сам его продлевает;
- прячет панель на случайном порту и пути, со случайными логином и паролем;
- подбирает сайт для маскировки REALITY — с TLS 1.3 и HTTP/2;
- создаёт подключения на всех протоколах из таблицы ниже, генерирует ключи и обфускацию AmneziaWG;
- включает единую подписку с учётом приложения: Clash Verge и FlClash получают готовый конфиг Mihomo с AmneziaWG, остальные приложения — ссылки только на то, что они умеют;
- открывает в ufw только нужные порты.
Протоколы
| Протокол | Порт | Работает в |
|---|---|---|
| VLESS REALITY | 443/tcp | всех приложениях |
| Hysteria2 | 443/udp | всех приложениях |
| VLESS XHTTP + REALITY | 8443/tcp | v2rayN, Happ, Clash Verge, FlClash |
| VLESS WebSocket + TLS | 2053/tcp | всех приложениях |
| Trojan gRPC + TLS | 2083/tcp | всех приложениях |
| VMess WebSocket + TLS | 2087/tcp | всех приложениях |
| Shadowsocks 2022 | 8388/tcp+udp | всех приложениях (мобильный МТС его блокирует, по Wi-Fi работает) |
| TUIC v5 | 8444/udp | Hiddify, Clash Verge, FlClash, NekoBox |
| AmneziaWG | 51821/udp | AmneziaVPN, AmneziaWG, Clash Verge, FlClash |
| AmneziaWG 3.1 | 51822/udp | AmneziaVPN, AmneziaWG, Clash Verge, FlClash |
| MTProto | 8445/tcp | прокси прямо в Telegram (если сервер сам достаёт до Telegram) |
Каждый протокол проверен настоящим подключением на ядрах Xray, Mihomo и sing-box, в том числе через интернет к серверу в России — стенд лежит в tests/matrix.
Note
Обычный WireGuard по умолчанию не ставится: в России его рукопожатие режет DPI, а попытки подключения могут привести к блокировке IP сервера. AmneziaWG — тот же WireGuard с маскировкой — проходит. Если сервер и пользователи за границей, добавьте
wgв--protocols.
Что понадобится
- VPS с Ubuntu 22.04/24.04 или Debian 12/13, доступ root по SSH
- Свободные порты 443 и 80 — на свежем сервере они свободны
Установка
Подключитесь к серверу по SSH и выполните:
bash <(curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/Reality_Hysteria2/main/scripts/3x-ui.sh)
Через пару минут скрипт покажет всё нужное:
- Адрес панели — откройте его в браузере.
- Логин и пароль от панели.
- Подписка — вставьте её в приложение или отсканируйте QR-код.
Всё это, вместе с отдельными ссылками на каждый протокол, сохраняется в /root/3x-ui.txt:
посмотреть снова — cat /root/3x-ui.txt.
Подключение
В приложении нажмите + → Импорт из буфера (или «Добавить подписку») и вставьте ссылку:
| Устройство | Приложение |
|---|---|
| iPhone, iPad | Happ, Streisand, Hiddify |
| Android | Hiddify, Happ, v2rayNG, FlClash |
| Windows, macOS, Linux | Hiddify, v2rayN, Clash Verge |
Подписка смотрит, какое приложение её запрашивает: Clash Verge и FlClash получают AmneziaWG,
а Happ, v2rayN, Karing и Hiddify — нет, потому что не умеют его. Для AmneziaVPN импортируйте
ссылки vpn:// из /root/3x-ui.txt, для Telegram — ссылку tg:// оттуда же.
Добавить друга
В панели откройте Клиенты → Добавить клиента, отметьте все подключения и задайте одинаковый Subscription ID — у друга появится своя подписка со всеми протоколами.
Параметры
| Параметр | Что делает |
|---|---|
--protocols reality,hy2,ws |
только выбранные протоколы; minimal — только REALITY |
--port 8443 |
порт REALITY (TCP) и Hysteria2 (UDP) вместо 443 |
--cert fullchain.pem --key privkey.pem --host домен |
свой сертификат, например для домена |
--sni www.samsung.com |
свой сайт для маскировки REALITY |
--no-ufw |
не трогать файрвол |
Как устроена подписка
Наружу смотрит небольшой сервис kit-sub (Python, служба kit-sub),
а подписка 3X-UI работает только внутри сервера. kit-sub узнаёт приложение по User-Agent,
добавляет AmneziaWG в конфиг для Clash-приложений, убирает из заголовка «срок 0», из-за которого
приложения показывали 01.01.1970, и сам подхватывает продлённый сертификат.
Note
Если порт 80 занят, сертификат Let's Encrypt не получить. Тогда скрипт сделает свой сертификат и впишет его отпечаток в ссылки, а панель будет доступна через SSH-туннель. Подписка в этом режиме работает только изнутри сервера — используйте отдельные ссылки.
Обслуживание
Управление панелью — официальная команда x-ui: перезапуск, логи, обновление, удаление.
x-ui