143 lines
9.0 KiB
Markdown
143 lines
9.0 KiB
Markdown
# 🛡 3X-UI: все протоколы одной командой
|
||
|
||
[← Все инструкции](../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;
|
||
- создаёт подключения на всех протоколах из таблицы ниже, генерирует ключи
|
||
и обфускацию 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 и 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. **Адрес панели** — откройте его в браузере.
|
||
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 ГБ суммарно, через что бы друг ни подключался.
|
||
|
||
## Параметры
|
||
|
||
| Параметр | Что делает |
|
||
|---|---|
|
||
| `--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` | не трогать файрвол |
|
||
| `--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 не получить. Тогда скрипт сделает свой
|
||
> сертификат и впишет его отпечаток в ссылки, а панель будет доступна через SSH-туннель.
|
||
> Подписка в этом режиме работает только изнутри сервера — используйте отдельные ссылки.
|
||
|
||
## Обслуживание
|
||
|
||
Управление панелью — официальная команда `x-ui`: перезапуск, логи, обновление, удаление.
|
||
|
||
```bash
|
||
x-ui
|
||
```
|
||
|
||
---
|
||
|
||
[← Все инструкции](../README.md#инструкции) · [Дальше: 🚀 Hysteria2 →](hysteria2.md)
|