Files
3X-UI_autoVPS/manuals/3x-ui.md
T
099117c2a7 1.1.1: kit check и kit fix, заголовки Happ, безопасная загрузка ядра, инструкция XKeen
- kit check и kit fix: проверка служб, сертификата, подписки, сайта маскировки, прав на файлы; безопасная починка
- kit-sub: пропускает заголовки Happ (Routing и др.) до клиентов
- ядро Xray: запасная загрузка через зеркало только с проверкой SHA256, tools/release.sh сверяет суммы с официальными
- установка со своим доменом: при отказе Let's Encrypt предлагается самоподписанный сертификат
- README: инструкция XKeen, команды kit, новый баннер; правки инструкций и changelog

Co-authored-by: xlok1e <124461726+xlok1e@users.noreply.github.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-03 16:47:12 +03:00

218 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🛡 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 по умолчанию не ставится: его рукопожатие легко распознаётся сетевым
> оборудованием, из-за чего соединение нестабильно. 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.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 check # проверить сервер, ничего не меняет
kit fix --dry-run # показать, что будет исправлено
kit fix # исправить безопасное
```
`kit check` проверяет службы, версии, срок сертификата, что панель не торчит наружу, права на файлы с
паролями и ключами, ответ подписки для Happ, Hiddify, v2rayN и Clash, а также что сайт маскировки отвечает по
TLS 1.3 и HTTP/2. Вывод можно просто прислать в чат, если нужна помощь.
`kit fix` лечит только безопасное: перезапускает упавшие службы, возвращает права `600`, включает
автообновление, перечитывает сертификат и снимает TLS у встроенной подписки 3X-UI (его включает команда
`x-ui cert`, и подписка перестаёт отвечать). Ничего необратимого он не делает.
> [!NOTE]
> Проверка сайта маскировки идёт с самого сервера: доступность из вашей сети она не покажет.
## Резервная копия
```bash
kit backup
```
Сохранит в `/root/kit-backup-ДАТА.tar.gz` копию сервера: подключения, ключи, пользователей с их
лимитами, настройки подписки и nginx. Файл виден только root, и в нём ключи от сервера, поэтому
храните его как пароль. Скачать к себе:
```bash
scp root@IP:/root/kit-backup-ДАТА.tar.gz .
```
Храните копию отдельно от сервера.
## Параметры
| Параметр | Что делает |
|---|---|
| `--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)