# 🛡 3X-UI KIT: все протоколы одной командой [← На главную](../README.md) Одна команда ставит панель [3X-UI](https://github.com/MHSanaei/3x-ui), создаёт подключения на 11 протоколах и выдаёт **одну ссылку-подписку**: приложение само получит подходящий ему формат и нужные протоколы. Домены не нужны. **Что делает [скрипт](../scripts/3x-ui.sh):** - ставит официальную 3X-UI проверенной версии её собственным установщиком и ядро Xray, с которым работают все клиенты (Hiddify, Mihomo, v2rayN, Happ); - выпускает сертификат Let's Encrypt на IP сервера и сам его продлевает; - прячет панель на случайном порту и пути, со случайными логином и паролем; - подбирает сайт для маскировки REALITY (с TLS 1.3 и HTTP/2) или, если хотите, использует ваш домен (`--domain`); - создаёт подключения на всех протоколах из таблицы ниже, генерирует ключи и обфускацию AmneziaWG; - включает единую подписку с учётом приложения: Clash Verge и FlClash получают готовый конфиг Mihomo с AmneziaWG, остальные приложения – ссылки только на то, что они умеют; - открывает в ufw только нужные порты. ## Протоколы | Протокол | Порт | Работает в | |---|---|---| | VLESS REALITY | 443/tcp | всех приложениях | | Hysteria2 | 443/udp | всех приложениях | | VLESS XHTTP + REALITY | 443/tcp | v2rayN, Happ, Clash Verge, FlClash | | VLESS WebSocket + TLS | 443/tcp | всех приложениях | | Trojan gRPC + TLS | 443/tcp | всех приложениях | | VMess WebSocket + TLS | 443/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 | 443/tcp | прокси прямо в Telegram (если сервер сам достаёт до Telegram) | **Все TCP-протоколы, панель и подписка работают через один порт 443.** Его слушает nginx: по имени сайта в запросе (SNI) он узнаёт REALITY, XHTTP и MTProto, остальное расшифровывает и разводит по секретным путям, а на всё прочее показывает сайт-заглушку. Снаружи у сервера открыты только 443, 80 (для продления сертификата), SSH, порт Shadowsocks 8388 и UDP-порты. Настоящие IP клиентов доходят до панели, поэтому лимит устройств работает. Каждый протокол проверен настоящим подключением на ядрах Xray, Mihomo и sing-box, в том числе через интернет к серверу в России – стенд лежит в [tests/matrix](../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 bash <(curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/main/scripts/3x-ui.sh) ``` Если запускаете в терминале, скрипт спросит, под какой сайт маскировать сервер. **1** (или Enter) – стандартный чужой сайт, работает сразу. **2** – свой домен: нужны его A-запись на IP сервера и свободный порт 80, а сертификат Let's Encrypt для домена скрипт получит сам. Через пару минут скрипт покажет всё нужное: ![Результат установки 3X-UI](assets/script-3x-ui.svg) 1. **Адрес панели** – откройте его в браузере. 2. **Логин и пароль** от панели. 3. **Подписка** – вставьте её в приложение или отсканируйте 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-кодом: ```bash 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 ГБ суммарно, через что бы пользователь ни подключался. ## Обновление Обновления kit и подписки kit-sub приходят сами: раз в сутки ночью сервер проверяет, не вышла ли новая версия 3X-UI KIT, и ставит её. Пользователи, ссылки и подписки не меняются, раздавать ничего заново не нужно. Сервер ставит только **подписанные** релизы. Автор подписывает каждый релиз своим ключом, а открытая часть ключа записана в `kit` на вашем сервере. Если файлы на GitHub подменят, подпись не сойдётся и сервер откажется обновляться: одного взлома GitHub для этого мало. После обновления сервер проверяет, что подписка отвечает, и при сбое возвращает прежнюю версию. Панель 3X-UI и ядро Xray автообновление не трогает. ```bash kit update # обновить сейчас, не дожидаясь ночи kit update --manual # выключить автообновление kit update --auto # включить обратно kit version # версии kit, панели и ядра, включено ли автообновление ``` Журнал ночных обновлений: `/var/log/kit-update.log`. Сервер ставили версией 1.0? В ней команды `kit update` ещё нет, поэтому один раз: ```bash curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.1/scripts/kit.sh -o /usr/local/bin/kit && chmod 755 /usr/local/bin/kit && kit update ``` Дальше обновления будут приходить сами. Панель 3X-UI обновляется отдельно, через `x-ui`. Ядро Xray в панели не обновляйте до последней версии: с Xray 26.7 и новее Hiddify, FlClash и Clash Verge не подключаются к REALITY. ## Резервная копия ```bash kit backup ``` Сохранит в `/root/kit-backup-ДАТА.tar.gz` всё, что нужно, чтобы поднять тот же сервер в другом месте: подключения, ключи, пользователей с их лимитами, настройки подписки и nginx. Файл виден только root, и в нём ключи от сервера, поэтому храните его как пароль. Скачать к себе: ```bash scp root@IP:/root/kit-backup-ДАТА.tar.gz . ``` Восстановление из копии на новом VPS появится в версии 1.2. Пока копия нужна как страховка: храните её отдельно от сервера. ## Параметры | Параметр | Что делает | |---|---| | `--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 | | `--domain vpn.example.com` | свой домен для маскировки (A-запись на IP сервера, свободный порт 80) | | `--no-ufw` | не трогать файрвол | | `--multi-port` | прежняя схема: у каждого протокола свой порт, без nginx | ## Как устроена подписка Наружу смотрит небольшой сервис [kit-sub](../scripts/kit-sub.py) (Python, служба `kit-sub`), а подписка 3X-UI работает только внутри сервера. kit-sub узнаёт приложение по User-Agent, добавляет AmneziaWG в конфиг для Clash-приложений, убирает из заголовка «срок 0», из-за которого приложения показывали 01.01.1970, и сам подхватывает продлённый сертификат. > [!NOTE] > Если порт 80 занят или Let's Encrypt не выдал сертификат на IP (порт закрыт у хостера, исчерпан > лимит выпусков, сбой), скрипт скажет об этом и сделает свой сертификат, а панель будет > доступна через SSH-туннель (команду для туннеля он покажет). Подписка в этом режиме > работает только изнутри сервера – используйте отдельные ссылки. > Свой домен (`--domain`) без сертификата на IP не работает: скрипт остановится с пояснением. ## Обслуживание Управление панелью – официальная команда `x-ui`: перезапуск, логи, обновление, удаление. ```bash x-ui ``` --- [← На главную](../README.md) · [Дальше: 🚀 Hysteria2 →](hysteria2.md)