- scripts/kit.sh (команда kit на сервере): user add/list/link/limit/off/on/del; общие трафик, лимит, срок и число устройств на все протоколы - Установщик создаёт подключения без клиентов и первого пользователя сразу во все, имя подписки случайное (чужую подписку не угадать по имени) - AmneziaWG: у записи 3X-UI одна пара ключей WireGuard, поэтому ко второму AmneziaWG подключается запись-«двойник» с подпиской «-awg»; kit работает с обеими как с одной - kit-sub фильтрует по содержимому: Clash-приложениям без AmneziaWG он вырезается, приложениям со ссылками не отдаются vpn:// и tg:// Проверено: три пользователя — Mihomo по подписке 10/10 у каждого, официальный клиент AmneziaWG — оба варианта у каждого; выключение, лимиты и удаление действуют на все записи.
8.2 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:// оттуда же.
Друзья
Одна команда на сервере добавляет друга сразу во все протоколы и выдаёт его подписку с QR-кодом:
kit user add sasha --gb 50 --days 30
| Команда | Что делает |
|---|---|
kit user add имя [--gb N] [--days N] [--devices N] |
добавить; лимит трафика, срок и число устройств — по желанию |
kit user list |
кто сколько израсходовал, до какого числа и когда был в сети |
kit user link имя [--all] |
подписка и QR-код ещё раз; --all — ещё ссылки vpn:// и tg:// |
kit user limit имя --gb N --days N |
изменить лимиты (0 — без ограничений) |
kit user off имя / kit user on имя |
временно выключить и включить |
kit user del имя |
удалить |
Трафик и лимиты общие на все протоколы: 50 ГБ — это 50 ГБ суммарно, через что бы друг ни подключался.
Параметры
| Параметр | Что делает |
|---|---|
--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