README переписан целиком (команда, флаги, протоколы, заглушки, команды, канал) + свои картинки
This commit is contained in:
@@ -5,6 +5,11 @@
|
||||
|
||||
## v1.2.6: вопросы при установке
|
||||
|
||||
* **README.md переписан целиком:** убрано авторское описание с его командой установки, добавлены
|
||||
актуальная команда, флаги, таблица протоколов, список сайтов-заглушек, команды `kit` и `kit local`,
|
||||
канал обновлений и оговорки. Две картинки — наши (`manuals/assets/fork-banner.svg` и
|
||||
`manuals/assets/script-3x-ui-local.svg`, терминал собран из настоящего вывода скрипта).
|
||||
* Шов в README больше не нужен (`tools/fork_apply.py`): файл наш целиком, как `kit-local.sh`.
|
||||
* Набор по умолчанию — **REALITY + AmneziaWG-3.1** (самый совместимый минимум); ответ «все»
|
||||
ставит полный набор автора. Умолчание задаётся в одном месте (`DEFAULT_PROTOS`).
|
||||
* **Сайт-заглушка переделан на ИТ-тематику:** десять правдоподобных сайтов (дата-аналитика, DevOps,
|
||||
|
||||
@@ -115,7 +115,7 @@ Hysteria2 (UDP 443) работают как работали; исходящий
|
||||
| Описание «швов» в коде автора | `tools/fork_apply.py` | только мы |
|
||||
| Синхронизация с автором и проверки | `tools/fork-sync.sh` | только мы |
|
||||
| Записи о наших версиях | `FORK-CHANGELOG.md` | только мы |
|
||||
| Предупреждение в шапке `README.md` | первые строки `README.md` | только мы (шов) |
|
||||
| `README.md` | целиком, включая картинки в `manuals/assets/` | только мы |
|
||||
| Файлы автора (`scripts/kit.sh`, `scripts/3x-ui.sh`, …) | как есть | только автор |
|
||||
|
||||
Ключевая идея: в файлах автора мы правим только «швы» — несколько констант, одну строку подключения
|
||||
@@ -186,10 +186,11 @@ git push origin dev v$(cat VERSION) upstream
|
||||
Проверять релиз надо логикой самого `kit`, а не одной `sha256sum -c`.
|
||||
6. **Сборка релиза обращается к GitHub** (сверка закреплённых версий панели и ядра). Из домашней сети
|
||||
TLS до GitHub иногда рвётся (`schannel: failed to receive handshake`) — просто повторить запуск.
|
||||
7. **Шапка `README.md` — наш шов.** Человек, открывший репозиторий, читает README автора и видит там
|
||||
команду установки **его** сборки: поставив по ней, он получит авторский канал обновлений, и ночное
|
||||
автообновление вернёт авторскую сборку. Поэтому сверху вставлен наш блок. Если при обновлении
|
||||
автора здесь конфликт — оставляем наш блок вверху, остальное берём авторское.
|
||||
7. **`README.md` — наш файл целиком.** Авторское описание убрано: иначе человек, открывший
|
||||
репозиторий, читает команду установки **авторской** сборки, ставит по ней и оказывается на
|
||||
авторском канале обновлений — ночное автообновление вернёт его сборку. При обновлении из
|
||||
авторского проекта README конфликтует: берём нашу версию (`git checkout --ours README.md`),
|
||||
авторские правки в нём нас не интересуют.
|
||||
|
||||
## Что проверено на сегодня
|
||||
|
||||
|
||||
@@ -1,318 +1,196 @@
|
||||
> **Это форк — сервер ставится и обновляется из этого репозитория, а не с GitHub.**
|
||||
> Установка одной командой (подробности и флаги — в [FORK.md](FORK.md)):
|
||||
> `bash <(curl -fsSL https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main/scripts/3x-ui-local.sh) --domain vpn.example.com`
|
||||
> Свои команды `kit local …` и записи о версиях — [FORK.md](FORK.md), [FORK-CHANGELOG.md](FORK-CHANGELOG.md).
|
||||
> Ниже — **авторское** описание: его команды и значки ведут в репозиторий автора и включают его
|
||||
> канал обновлений, то есть ночное автообновление вернёт авторскую сборку вместо нашей.
|
||||
|
||||
<div align="center">
|
||||
|
||||
<img alt="3X-UI KIT" src="manuals/assets/banner.svg" width="820">
|
||||
<img alt="3X-UI autoVPS" src="manuals/assets/fork-banner.svg" width="860">
|
||||
|
||||
**Установка 3X-UI одной командой: 11 протоколов, один порт 443, одна подписка на всё**
|
||||
**Сервер одной командой: панель 3X-UI, VPN-протоколы за одним портом 443, одна подписка на все устройства**
|
||||
|
||||
[](https://github.com/itsnotkubrick/3X-UI_KIT/releases/latest)
|
||||
[](manuals/3x-ui.md#протоколы)
|
||||
[](https://github.com/MHSanaei/3x-ui)
|
||||
[](https://github.com/itsnotkubrick/3X-UI_KIT/stargazers)
|
||||
[](https://github.com/itsnotkubrick/3X-UI_KIT/commits)
|
||||
Сборка со **своим каналом обновлений**: сервер ставится и обновляется из этого репозитория, релизы
|
||||
подписаны, ночное автообновление не вернёт чужую версию. В основе — открытый проект 3X-UI KIT.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
## Что ставится
|
||||
|
||||
> [!WARNING]
|
||||
> **Проект – набор скриптов с открытым кодом.** Он не оказывает услуг связи и не предоставляет доступ
|
||||
> к серверам. Вы ставите его на собственный сервер и сами отвечаете за соблюдение законодательства
|
||||
> своей страны. Проект создан в образовательных целях.
|
||||
|
||||
> [!TIP]
|
||||
> **Вышла версия 1.2:** панель 3X-UI v3.9.0, меню `kit`, раздельная маршрутизация и `--restore`.
|
||||
> [Что нового](https://github.com/itsnotkubrick/3X-UI_KIT/releases/tag/v1.2) ·
|
||||
> сервер на 1.1.x обновится сам этой ночью, а на 1.0 одной командой:
|
||||
> ```bash
|
||||
> curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/v1.2/scripts/kit.sh -o /usr/local/bin/kit && chmod 755 /usr/local/bin/kit && kit update
|
||||
> ```
|
||||
|
||||
**3X-UI KIT** превращает чистый VPS в готовый VPN-сервер за несколько минут. Скрипт ставит
|
||||
официальную панель [3X-UI](https://github.com/MHSanaei/3x-ui), настраивает все популярные
|
||||
протоколы, сертификат и файрвол и выдаёт одну ссылку-подписку. Её можно вставить в любое
|
||||
приложение – оно само получит подходящие ему протоколы. Домен не нужен.
|
||||
|
||||
<div align="center">
|
||||
<img alt="Конец установки 3X-UI KIT" src="manuals/assets/script-3x-ui.svg" width="760">
|
||||
</div>
|
||||
|
||||
## Возможности
|
||||
|
||||
- 🧩 **11 протоколов на одном порту 443.** Панель, подписка и все TCP-протоколы спрятаны за одним портом,
|
||||
а на случайный заход сервер показывает обычный сайт. Протоколы: VLESS REALITY, VLESS XHTTP + REALITY,
|
||||
VLESS WebSocket + TLS, Trojan gRPC + TLS, VMess WebSocket + TLS, Shadowsocks 2022, Hysteria2, TUIC v5,
|
||||
AmneziaWG, AmneziaWG 3.1, MTProto (прокси для Telegram).
|
||||
- 🔗 **Одна подписка на все приложения.** Hiddify, Happ, v2rayN, Karing, Clash Verge и FlClash
|
||||
получают свой формат и только те протоколы, которые распознают.
|
||||
- 🧭 **Раздельная маршрутизация.** Через VPN идут только зарубежные сервисы, остальное – напрямую.
|
||||
Правила приезжают вместе с подпиской, DNS не течёт.
|
||||
- 🥷 **Маскировка.** Со своим доменом на сервере стоит ваш сайт, без него сайт подбирается среди соседей
|
||||
по подсети. REALITY работает с `xtls-rprx-vision`.
|
||||
- 👥 **Пользователи во все протоколы сразу.** Один пользователь – одна подписка, общий лимит трафика,
|
||||
срок и число устройств. Меню `kit` работает как у x-ui: выбрали цифру – готово.
|
||||
- 💾 **Резервная копия и переезд на новый сервер одной командой.** Копия сохраняет подключения, ключи
|
||||
и пользователей, а на чистом VPS (даже с другим IP) сервер поднимается из неё за несколько минут.
|
||||
- 🔄 **Обновляется само, но только подписанными релизами.**
|
||||
- 🩺 **Проверка и починка сервера** одной командой.
|
||||
|
||||
## Что понадобится
|
||||
|
||||
- VPS с **Ubuntu 22.04/24.04** или **Debian 12/13** и доступом root по SSH
|
||||
- Свободные порты **443** и **80** – на свежем сервере они свободны
|
||||
|
||||
Нужен VPS? Я сам использую **[IS Hosting](https://ishosting.io/affiliate/NTg4MiM4)** и рекомендую его
|
||||
(реферальная ссылка).
|
||||
| Что | Зачем |
|
||||
|---|---|
|
||||
| Панель **3X-UI** + ядро **Xray** | управление подключениями и пользователями |
|
||||
| **nginx** на порту 443 | разводит подключения по именам и путям, отдаёт сайт-заглушку |
|
||||
| VPN-подключения | REALITY, Hysteria2, AmneziaWG, XHTTP, VLESS-WS, Trojan-gRPC, VMess-WS, Shadowsocks, TUIC, MTProto, WireGuard — какие выберете |
|
||||
| **Подписка** (`kit-sub`) | одна ссылка на все устройства: Happ, Hiddify, v2rayN, Clash/Mihomo |
|
||||
| **Сайт-заглушка** | на 443 и в ответе Hysteria2 — правдоподобный ИТ-сайт из нашего набора |
|
||||
| **ufw**, обновления безопасности, синхронизация времени | защита сервера и корректная работа REALITY |
|
||||
|
||||
## Установка
|
||||
|
||||
Подключитесь к серверу по SSH и выполните одну команду на чистом VPS.
|
||||
|
||||
Панель 3X-UI, все протоколы на порту 443 и одна подписка на всё:
|
||||
От root, на чистом сервере (Debian 11+ / Ubuntu 22.04+, 64-бит):
|
||||
|
||||
```bash
|
||||
bash <(curl -fsSL https://raw.githubusercontent.com/itsnotkubrick/3X-UI_KIT/main/scripts/3x-ui.sh)
|
||||
bash <(curl -fsSL https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main/scripts/3x-ui-local.sh)
|
||||
```
|
||||
|
||||
Через пару минут скрипт покажет адрес панели, логин, пароль и подписку с QR-кодом.
|
||||
Подробно – подключение приложений, дополнительные пользователи и параметры – в **[инструкции](manuals/3x-ui.md)**.
|
||||
Без флагов скрипт **спрашивает** всё по ходу: какие протоколы ставить (Enter — REALITY + AmneziaWG-3.1),
|
||||
какую маскировку и домен, закрывать ли ответ на ping, включать ли автообновления безопасности,
|
||||
менять ли порт SSH (Enter — оставить 22), менять ли пароль root.
|
||||
|
||||
## Команды KIT
|
||||
<img alt="Установка одной командой" src="manuals/assets/script-3x-ui-local.svg" width="860">
|
||||
|
||||
После установки на сервере появляется команда `kit`. Запустите её **без аргументов** – откроется меню, как у `x-ui`: выберите цифру, остальное спросит само. Те же действия одной строкой – в группах ниже (нажмите, чтобы раскрыть). Подробности – в [инструкции](manuals/3x-ui.md).
|
||||
|
||||
<details>
|
||||
<summary><b>Пользователи</b> – <code>kit user</code></summary>
|
||||
Если вопросы не нужны — те же ответы задаются флагами:
|
||||
|
||||
```bash
|
||||
kit user add имя [--gb 50] [--days 30] [--devices 3] # добавить во все протоколы, показать подписку
|
||||
kit user list # кто сколько израсходовал, до какого числа
|
||||
kit user link имя [--all | --amnezia | --telegram] # подписка и ссылки «открыть в приложении»
|
||||
kit user limit имя [--gb N] [--days N] [--devices N] # изменить лимиты (0 – без ограничений)
|
||||
kit user off имя / kit user on имя # выключить и включить
|
||||
kit user del имя # удалить
|
||||
```
|
||||
</details>
|
||||
# минимум: свой домен и два протокола, без вопросов
|
||||
bash <(curl -fsSL …/scripts/3x-ui-local.sh) --protocols reality,awg3 --domain vpn.example.com
|
||||
|
||||
<details>
|
||||
<summary><b>Сеть и маскировка</b> – <code>kit net</code></summary>
|
||||
# всё, кроме WireGuard, и второй порт SSH
|
||||
bash <(curl -fsSL …/scripts/3x-ui-local.sh) --protocols все --ssh-port 2222
|
||||
|
||||
# ничего не спрашивать: ping закрыть, автообновления включить, порт и пароль не трогать
|
||||
bash <(curl -fsSL …/scripts/3x-ui-local.sh) --yes
|
||||
```
|
||||
|
||||
Проверить канал, ничего не меняя:
|
||||
|
||||
```bash
|
||||
kit net # протоколы, порты, сайт маскировки, отпечаток – одним экраном
|
||||
kit net site [сайт.com] # сменить сайт маскировки (без аргумента – среди соседей по подсети)
|
||||
kit net port имя порт # сменить порт протокола
|
||||
kit net off имя / kit net on имя # выключить и включить протокол (kit net on reality2 – второй REALITY)
|
||||
kit net fp firefox # сменить отпечаток клиента у всех подключений
|
||||
kit net masq on|off # Hysteria2 отвечает на чужой запрос страницей сайта
|
||||
kit net dns on|off # DNS в подписке по DoH через прокси
|
||||
kit net panel domain | ip # панель и подписка по своему домену или по IP
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Раздельная маршрутизация</b> – <code>kit net split</code></summary>
|
||||
|
||||
Через VPN идёт только список зарубежных сервисов, остальное – напрямую. Подробнее – [в инструкции](manuals/3x-ui.md#раздельная-маршрутизация-kit-net-split).
|
||||
|
||||
```bash
|
||||
kit net split on # создать список и включить
|
||||
kit net split check # проверить список
|
||||
kit net split apply # после правки списка обновить профили Happ и Xray
|
||||
kit net split off # выключить
|
||||
```
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>Обслуживание сервера</b> – проверка, обновление, копия</summary>
|
||||
|
||||
```bash
|
||||
kit check [--deep] [--fix] # проверить сервер; --deep – подключиться клиентом, --fix – исправить безопасное
|
||||
kit update [--panel] # обновить сейчас; --panel – панель 3X-UI до проверенной версии
|
||||
kit update --auto # ночное автообновление включить (--manual – выключить)
|
||||
kit backup # копия сервера: подключения, ключи, пользователи
|
||||
kit version # версии KIT, панели и ядра
|
||||
bash <(curl -fsSL …/scripts/3x-ui-local.sh) --verify-only # подпись релиза и сумма установщика
|
||||
bash <(curl -fsSL …/scripts/3x-ui-local.sh) --dry-run # что именно будет сделано
|
||||
```
|
||||
|
||||
Копию из `kit backup` на новом чистом сервере поднимает `bash 3x-ui.sh --restore файл`. Если подписка выдавалась
|
||||
на домене, а не на IP, клиентам достаточно сменить адрес в DNS.
|
||||
</details>
|
||||
### Флаги установки
|
||||
|
||||
<details>
|
||||
<summary><b>Если не подключается</b> – диагностика</summary>
|
||||
|
||||
```bash
|
||||
kit check --deep # проверить сервер и подключиться к нему клиентом: видно, виноват сервер или сеть
|
||||
kit net fp firefox # другой отпечаток клиента (вернуть: kit net fp chrome)
|
||||
kit net site # другой сайт для маскировки
|
||||
kit net on reality2 # дополнительный REALITY на другом порту
|
||||
kit backup # не помогло – копия, затем перенос на другой адрес: на новом сервере bash 3x-ui.sh --restore файл
|
||||
```
|
||||
|
||||
Один протокол не подключается – попробуйте соседний: у каждого свои сильные стороны (Hysteria2 работает по UDP,
|
||||
остальные по TCP). В подписке Clash «Авто» выбирает сама, в остальных приложениях – вручную.
|
||||
</details>
|
||||
|
||||
## VPN на роутере
|
||||
|
||||
Через прокси идут только нужные сервисы и выбранные устройства, остальное работает напрямую.
|
||||
Порядок: **1.** установить программу на роутер → **2.** собрать конфиг в [генераторе](#генератор-конфигов-для-роутера) →
|
||||
**3.** вставить команду из генератора.
|
||||
|
||||
> [!NOTE]
|
||||
> На роутере работает [XKeen](https://github.com/jameszeroX/XKeen) автора jameszeroX, спасибо ему.
|
||||
|
||||
<details>
|
||||
<summary><b>📶 Keenetic: XKeen (jameszeroX) · 8 шагов, 20–30 минут</b></summary>
|
||||
|
||||
Нужны роутер **Keenetic** или **Netcraze** с USB-портом, USB-флешка в формате **ext4** и свой сервер с VLESS
|
||||
(например, из [этой инструкции](manuals/3x-ui.md)).
|
||||
|
||||
<details>
|
||||
<summary><b>1. Компоненты KeeneticOS</b></summary>
|
||||
|
||||
В веб-интерфейсе: **Управление → Общие настройки → Изменить набор компонентов**. Отметьте компоненты
|
||||
с галочками на картинке и установите. Роутер обновится и перезагрузится.
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>2. Entware на флешку</b></summary>
|
||||
|
||||
1. Отформатируйте флешку в **ext4** и вставьте её в роутер.
|
||||
2. Откройте её по сети (`\\192.168.x.x\`), создайте папку `install` и положите туда установщик под процессор роутера:
|
||||
[mipsel](https://bin.entware.net/mipselsf-k3.4/installer/mipsel-installer.tar.gz),
|
||||
[mips](https://bin.entware.net/mipssf-k3.4/installer/mips-installer.tar.gz) или
|
||||
[aarch64](https://bin.entware.net/aarch64-k3.10/installer/aarch64-installer.tar.gz).
|
||||
Не знаете, какой нужен? Модель роутера – в характеристиках на сайте Keenetic.
|
||||
|
||||

|
||||
|
||||
3. **Управление → OPKG**: выберите флешку и сохраните. Установка займёт несколько минут.
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>3. Подключение по SSH</b></summary>
|
||||
|
||||
```bash
|
||||
ssh root@192.168.x.x -p 222
|
||||
```
|
||||
|
||||
Пароль по умолчанию `keenetic`. **Сразу смените его** командой `passwd`.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>4. Шифрованный DNS</b></summary>
|
||||
|
||||
Пропишите шифрованные DNS-серверы (DoT или DoH) по
|
||||
[инструкции Keenetic](https://support.keenetic.ru/ultra/kn-1811/ru/31543-dot-and-doh-proxy-servers-for-dns-requests-encryption.html):
|
||||
без этого XKeen работает неправильно.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>5. Токен для KeeneticOS 5.2 и новее</b></summary>
|
||||
|
||||
XKeen нужен токен доступа к роутеру. Создайте его в разделе **Пользователи и доступ**, вставьте в
|
||||
[шаблон xkeen.json](https://github.com/jameszeroX/XKeen/releases/download/2.0.1_Beta/xkeen.json) и положите файл на роутер
|
||||
по пути `/opt/etc/xkeen/xkeen.json`. Подробнее – в [вики XKeen](https://github.com/jameszeroX/XKeen/wiki/Порядок-установки).
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>6. Установка XKeen</b></summary>
|
||||
|
||||
Подключитесь по SSH и выполните:
|
||||
|
||||
```bash
|
||||
opkg update && opkg upgrade && opkg install curl tar && cd /tmp
|
||||
sh -c "$(curl -sSL https://raw.githubusercontent.com/jameszeroX/XKeen/main/install.sh)"
|
||||
```
|
||||
|
||||
Если GitHub недоступен, замените адрес на `https://cdn.jsdelivr.net/gh/jameszeroX/XKeen@main/install.sh`.
|
||||
Установщик спросит ядро (Xray или Mihomo), геобазы и автозагрузку.
|
||||
|
||||
Затем соберите конфиг в [генераторе](#генератор-конфигов-для-роутера) (роутер Keenetic, нужное ядро), вставьте команду в SSH-консоль
|
||||
и нажмите Enter: файлы запишутся, XKeen перезапустится.
|
||||
|
||||

|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>7. Какие устройства через прокси</b></summary>
|
||||
|
||||
В веб-интерфейсе откройте **Приоритеты подключений → Политики доступа в Интернет**, создайте политику
|
||||
с именем **`xkeen`** и перенесите в неё нужные устройства.
|
||||
|
||||
> [!WARNING]
|
||||
> Без политики `xkeen` через прокси пойдёт трафик **всех** устройств в сети.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><b>8. Проверка</b></summary>
|
||||
|
||||
- На роутере: `xkeen -status` – XKeen должен быть запущен.
|
||||
- На устройстве из политики `xkeen` откройте сайт, показывающий IP-адрес: он должен совпасть с адресом вашего сервера,
|
||||
а на остальных устройствах остаться прежним.
|
||||
- Удобнее управлять настройками из браузера через [XKeen UI](https://github.com/zxc-rv/XKeen-UI).
|
||||
|
||||
</details>
|
||||
|
||||
Подробная версия с теми же шагами: [инструкция для Keenetic](manuals/xkeen-keenetic.md).
|
||||
|
||||
</details>
|
||||
|
||||
## Генератор конфигов для роутера
|
||||
|
||||
Вставьте ссылку на сервер или подписку, выберите роутер и ядро, отметьте нужные сервисы –
|
||||
и получите готовый конфиг и одну команду, которая сама положит его на роутер.
|
||||
Всё считается в браузере, ссылки никуда не отправляются.
|
||||
Как поставить XKeen на роутер – в разделе [VPN на роутере](#vpn-на-роутере).
|
||||
|
||||
| Роутер | Ядро | Что получится | Генератор |
|
||||
|---|---|---|---|
|
||||
| Keenetic (XKeen) | Xray | `04_outbounds.json` и `05_routing.json`: серверы, выбор сервисов, реклама, свои сайты | [Открыть →](https://itsnotkubrick.github.io/3X-UI_KIT/tools/?core=xray) |
|
||||
| Keenetic (XKeen) | Mihomo | `config.yaml` с автовыбором сервера, подпиской, Hysteria2, AmneziaWG и веб-панелью | [Открыть →](https://itsnotkubrick.github.io/3X-UI_KIT/tools/?core=mihomo) |
|
||||
| OpenWrt (Nikki), бета | Mihomo | профиль для Nikki и команда, которая его включит | [Открыть →](https://itsnotkubrick.github.io/3X-UI_KIT/tools/?router=openwrt) |
|
||||
|
||||
## Полезное
|
||||
|
||||
- [XKeen](https://github.com/jameszeroX/XKeen) и его [вики](https://github.com/jameszeroX/XKeen/wiki) – документация по маршрутизации на Keenetic
|
||||
- [XKeen UI](https://github.com/zxc-rv/XKeen-UI) – веб-интерфейс для XKeen
|
||||
- [IP-адреса для AmneziaWG](https://github.com/RockBlack-VPN/ip-address) – актуальные списки от RockBlack
|
||||
|
||||
## Поддержать проект
|
||||
|
||||
Скрипты и инструкции бесплатные. Донат добровольный – он помогает оплачивать
|
||||
тестовые серверы и держать скрипты в актуальном состоянии. Спасибо! 💜
|
||||
|
||||
| Способ | |
|
||||
| Флаг | Что делает |
|
||||
|---|---|
|
||||
| Российской картой, СБП, Tinkoff Pay | [Tribute](https://t.me/tribute/app?startapp=dRsY) |
|
||||
| Зарубежной картой, Apple Pay, Google Pay | [Buy Me a Coffee](https://buymeacoffee.com/relo.cate) |
|
||||
| USDT (TRC-20) | `TS83ViXrdezUpp1eFadqj1rBhGLZaba1c1` |
|
||||
| TON | `UQBchO4XFPwF9MMa_tjXpwqTo8IL2FhUDyllhYuFo8WM-Qbf` |
|
||||
| Ethereum (ERC-20) | `0xC06F6B3A029d7Ea00705B7028490744e2BC16799` |
|
||||
| `--protocols all\|minimal\|список` | какие протоколы ставить: `all`, `minimal` (только REALITY) или через запятую. Невыбранные не создаются вообще |
|
||||
| `--domain ваш.домен` | свой домен для маскировки (A-запись на сервер, свободный порт 80 — сертификат Let's Encrypt выпустит установщик) |
|
||||
| `--sni сайт.ком` | маскировка под чужой сайт вместо своего домена |
|
||||
| `--panel-on ip\|domain` | где открывать панель и подписку |
|
||||
| `--site N\|random\|off` | сайт-заглушка: конкретный из нашего набора, случайный (по умолчанию) или не трогать |
|
||||
| `--ssh-port N` | перевести SSH на порт N (прежний закроется только после вашей проверки) |
|
||||
| `--harden` / `--no-harden` | закрыть ping и включить автообновления безопасности / не трогать это |
|
||||
| `--yes` | не задавать вопросы (для автоматизации) |
|
||||
| `--host IP`, `--user имя`, `--port N`, `--restore файл` | адрес в ссылках, имя первого клиента, порт REALITY, восстановление из копии `kit backup` |
|
||||
| `--no-time`, `--no-check`, `--verify-only`, `--dry-run`, `-h` | служебные |
|
||||
|
||||
## Благодарности
|
||||
## Что происходит по шагам
|
||||
|
||||
3X-UI KIT построен на работе авторов этих проектов:
|
||||
[3X-UI](https://github.com/MHSanaei/3x-ui) ·
|
||||
[Xray-core](https://github.com/XTLS/Xray-core) ·
|
||||
[Mihomo](https://github.com/MetaCubeX/mihomo) ·
|
||||
[Hysteria](https://github.com/apernet/hysteria) ·
|
||||
[AmneziaWG](https://github.com/amnezia-vpn) ·
|
||||
[XKeen](https://github.com/jameszeroX/XKeen)
|
||||
1. **Проверка сервера**: root, Debian/Ubuntu, память, место на диске, занятые порты 80/443.
|
||||
2. **Проверка релиза**: файлы берутся из этого репозитория по тегу, проверяется **подпись `SHA256SUMS`**
|
||||
нашим ключом и SHA256 самого установщика. Не сошлось — ничего не запускается.
|
||||
3. **Выбор протоколов** и запуск установщика: панель 3X-UI, выбранные подключения, nginx на 443,
|
||||
сертификат, сайт-заглушка, служба подписки, правила ufw.
|
||||
4. **Сайт-заглушка**: ставится случайный правдоподобный ИТ-сайт из нашего набора (10 штук) и
|
||||
синхронизируется в ответ Hysteria2.
|
||||
5. **Наши вопросы и правки**: закрыть ответ на ping, включить обновления безопасности, сменить порт
|
||||
SSH, сменить пароль root.
|
||||
6. **`kit fix`** — синхронизация времени и безопасные починки.
|
||||
7. **Проверка**: `kit check` (порты, службы, подписка, сертификат, маскировка) и сводка
|
||||
`kit local hardening`. В конце — как забрать ссылки и подписку.
|
||||
|
||||
## Протоколы
|
||||
|
||||
Один порт 443 на всё: nginx разводит подключения по именам и путям, поэтому снаружи видно только
|
||||
443/tcp (и Hysteria2 на 443/udp). Список и умолчание — как у проекта: невыбранные протоколы не
|
||||
создаются вообще, ни подключения в панели, ни записей в nginx, ни ссылок в подписке.
|
||||
|
||||
| № | Протокол | Что это |
|
||||
|---|---|---|
|
||||
| 1 | **REALITY** | VLESS + Reality, основной вход. **По умолчанию** |
|
||||
| 2 | REALITY-2 | второй REALITY на случайном высоком порту |
|
||||
| 3 | Hysteria2 | быстрее на плохой сети (UDP 443) |
|
||||
| 4 | XHTTP | VLESS + Reality под другим именем маскировки |
|
||||
| 5 | VLESS-WS | VLESS через WebSocket |
|
||||
| 6 | Trojan-gRPC | Trojan через gRPC |
|
||||
| 7 | VMess-WS | VMess через WebSocket |
|
||||
| 8 | Shadowsocks | Shadowsocks 2022 |
|
||||
| 9 | TUIC | быстрый UDP-протокол |
|
||||
| 10 | WireGuard | обычный WireGuard: легко распознаётся, поэтому по умолчанию не ставится |
|
||||
| 11 | AmneziaWG | AmneziaWG: Mihomo, роутеры Keenetic |
|
||||
| 12 | **AmneziaWG-3.1** | AmneziaWG с защитой заголовков: приложения AmneziaVPN. **По умолчанию** |
|
||||
| 13 | MTProto | прокси для Telegram |
|
||||
|
||||
Наш набор по умолчанию — **REALITY + AmneziaWG-3.1**: работает почти везде и не требует
|
||||
дополнительных объяснений на клиенте. Маскировку и сайт можно менять потом: `kit net site`,
|
||||
`kit local site`.
|
||||
|
||||
## Сайт-заглушка
|
||||
|
||||
На 443 при неизвестном имени отдаётся страница нашего набора: небольшие правдоподобные ИТ-сайты
|
||||
вместо стандартных «страница в разработке».
|
||||
|
||||
| № | Сайт | Тема |
|
||||
|---|---|---|
|
||||
| 1 | Radian Analytics | дата-аналитика: хранилище, отчёты, дашборды |
|
||||
| 2 | Circuit Nine | DevOps-консалтинг: CI/CD, инфраструктура, наблюдаемость |
|
||||
| 3 | Cortex Monitor | мониторинг серверов: проверки, алерты, сертификаты |
|
||||
| 4 | Bluefin Software | разработка ПО на заказ |
|
||||
| 5 | Vantage Security | аудит и пентест |
|
||||
| 6 | Keystone IT | ИТ-поддержка офисов |
|
||||
| 7 | Meridian Networks | колокейшн и транзит |
|
||||
| 8 | Lumen Notes | заметки про Linux, nginx и сети |
|
||||
| 9 | Evercore Backup | бэкапы и восстановление |
|
||||
| 10 | Halyard Docs | документация проекта |
|
||||
|
||||
```bash
|
||||
kit local site # случайный сайт из набора
|
||||
kit local site --list # список с номерами
|
||||
kit local site 7 # поставить конкретный
|
||||
kit local site --show # какой стоит сейчас
|
||||
```
|
||||
|
||||
Менять страницу нужно **этой командой**: `/var/www/kit/index.html` отдаёт nginx, а Hysteria2 держит
|
||||
свою копию страницы внутри подключения. Команда обновляет обе — иначе 443/tcp и UDP начнут отвечать
|
||||
разными страницами, и это заметно снаружи.
|
||||
|
||||
## Команды
|
||||
|
||||
На сервере после установки доступна команда `kit` (без аргументов — меню).
|
||||
|
||||
| Команда | Что делает |
|
||||
|---|---|
|
||||
| `kit user …` | `add`, `list`, `link`, `limit`, `on`, `off`, `del` — пользователи, ссылки, лимиты трафика и сроков |
|
||||
| `kit net` | состояние подключений; `on`/`off` включить-выключить, `site` — сайт маскировки, `masq` — ответ Hysteria2 страницей, `dns` — DoH в подписках |
|
||||
| `kit port` / `kit port set <имя> <порт>` | какие порты слушают подключения / сменить порт подключения |
|
||||
| `kit reality add [порт]` | добавить второй REALITY |
|
||||
| `kit check [--deep\|--fix]`, `kit fix` | проверка сервера (в том числе с самого сервера, как клиент) и безопасные починки |
|
||||
| `kit update [--panel]`, `--auto`, `--manual` | обновление сборки и панели, режим автообновления |
|
||||
| `kit backup` | копия сервера (панель, сертификаты, настройки) |
|
||||
| `kit version` | версии сборки, панели и ядра |
|
||||
|
||||
Наш слой — `kit local` (справка: `kit local help`):
|
||||
|
||||
| Команда | Что делает |
|
||||
|---|---|
|
||||
| `kit local site` | сайт-заглушка: случайный, `--list`, номер, `--show` |
|
||||
| `kit local ssh 2222` / `--status` / `--close-old 2222` | добавить порт SSH / какие слушают / закрыть прежние после проверки |
|
||||
| `kit local ping off\|on\|status` | ответ на ICMP echo правилом ufw (видно в `ufw status`, отменяется одной командой) |
|
||||
| `kit local passwd [юзер]`, `--generate` | смена пароля (спрашивает дважды, в логи не попадает) |
|
||||
| `kit local upgrades on\|off\|status` | обновления безопасности |
|
||||
| `kit local hardening`, `masking`, `channel`, `seams`, `version` | сводка защиты, состояние маскировки, канал обновлений, какие места форк правит у автора |
|
||||
|
||||
У любой правки есть `--dry-run` — показывает план и ничего не меняет. Копии изменённых файлов
|
||||
складываются в `/root/kit-local-backup-<дата>/`.
|
||||
|
||||
## Обновление и канал
|
||||
|
||||
- Сервер обновляется из **этого репозитория**: `kit update` и ночной таймер берут релиз с подписью
|
||||
нашего ключа. Чужой релиз сервер не примет.
|
||||
- Посмотреть, откуда берутся обновления и чем проверяется подпись: `kit local channel`.
|
||||
- Управление автообновлением: `kit update --auto` (включить) и `kit update --manual` (выключить),
|
||||
`kit update` — обновиться сейчас, `kit update --panel` — обновить саму панель 3X-UI.
|
||||
- Проверить канал, ничего не устанавливая: установщик с `--verify-only` или `kit local channel`.
|
||||
|
||||
## Оговорки
|
||||
|
||||
- **Пароль root** никогда не передаётся флагом: значение в командной строке видно другим процессам.
|
||||
Спрашивается в ходе установки или меняется `kit local passwd`.
|
||||
- **Смена порта SSH** делается в два шага: новый порт добавляется, прежний продолжает работать, пока
|
||||
вы не проверите вход во втором окне. Закрыть прежние: `kit local ssh --close-old 2222`.
|
||||
- **`apt full-upgrade` не выполняется** — только обновления безопасности: панель и ядро Xray
|
||||
закреплены на проверенных версиях.
|
||||
- Версии панели и ядра в сборке сверяются с официальными хешами при выпуске релиза.
|
||||
|
||||
## Документация форка
|
||||
|
||||
| Файл | О чём |
|
||||
|---|---|
|
||||
| [FORK.md](FORK.md) | как устроен форк: где наши правки (швы), регламент обновления из авторского проекта, канал, подпись, грабли |
|
||||
| [FORK-CHANGELOG.md](FORK-CHANGELOG.md) | что менялось в наших версиях |
|
||||
| `kit local help` | команды форка прямо на сервере |
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="860" height="190" viewBox="0 0 860 190" role="img" aria-label="3X-UI autoVPS — сборка форка">
|
||||
<style>.t{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif}
|
||||
.m{font-family:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace}</style>
|
||||
<rect x="0.5" y="0.5" width="859" height="189" rx="16" fill="#15110f" stroke="#43372e"/>
|
||||
<circle cx="748" cy="46" r="58" fill="#93e06f" opacity="0.07"/>
|
||||
<circle cx="808" cy="140" r="34" fill="#93e06f" opacity="0.05"/>
|
||||
<text x="44" y="86" class="t" font-size="46" font-weight="700" fill="#fbf6ec">3X-UI <tspan fill="#93e06f">autoVPS</tspan></text>
|
||||
<text x="44" y="118" class="t" font-size="16" fill="#cbbfa9">сервер одной командой: панель 3X-UI, VPN-протоколы, один порт 443, одна подписка</text>
|
||||
<text x="44" y="152" class="m" font-size="13" fill="#8a8073">свой канал обновлений · подписанные релизы · 13 протоколов · 10 сайтов-заглушек</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 13 KiB |
+3
-21
@@ -25,19 +25,9 @@ import sys
|
||||
GITEA = os.environ.get("FORK_GITEA_BASE", "https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS")
|
||||
SIGNER_FILE = os.environ.get("FORK_SIGNER_PUB", "tools/fork-signer.pub")
|
||||
|
||||
# Шапка авторского README: человек, открывший репозиторий, должен сразу видеть, что это форк
|
||||
# и что ставить надо из него, а не по команде автора ниже (та включает авторский канал обновлений).
|
||||
README_BLOCK = """> **Это форк — сервер ставится и обновляется из этого репозитория, а не с GitHub.**
|
||||
> Установка одной командой (подробности и флаги — в [FORK.md](FORK.md)):
|
||||
> `bash <(curl -fsSL https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main/scripts/3x-ui-local.sh) --domain vpn.example.com`
|
||||
> Свои команды `kit local …` и записи о версиях — [FORK.md](FORK.md), [FORK-CHANGELOG.md](FORK-CHANGELOG.md).
|
||||
> Ниже — **авторское** описание: его команды и значки ведут в репозиторий автора и включают его
|
||||
> канал обновлений, то есть ночное автообновление вернёт авторскую сборку вместо нашей.
|
||||
|
||||
"""
|
||||
|
||||
README_HEAD = '<div align="center">\n\n<img alt="3X-UI KIT" src="manuals/assets/banner.svg" width="820">'
|
||||
|
||||
# README.md форка — НАШ файл целиком: авторское описание из него убрано, чтобы никто не
|
||||
# ставил сервер авторской командой и не оказался на авторском канале обновлений. Шва здесь нет:
|
||||
# при обновлении из авторского проекта README конфликтует и решается в нашу пользу (см. FORK.md).
|
||||
HOOK = """
|
||||
# --- 3X-UI_KIT (форк hacker07): локальные команды и хуки ---
|
||||
# Подключаем scripts/kit-local.sh, если он установлен. Наш файл: правки автора его не касаются.
|
||||
@@ -192,14 +182,6 @@ def main():
|
||||
"{ echo \"# 3X-UI KIT $v\"; sha \"${FILES[@]}\" | awk '{ sub(/^\\*/, \"\", $2); print $1\" \"$2 }'; } >SHA256SUMS",
|
||||
"суммы в POSIX-виде без звёздочки (на Windows sha256sum её ставит, и kit её не понимает)",
|
||||
),
|
||||
# --- шапка авторского README (чтобы ссылку ниже не приняли за нашу) --------------
|
||||
(
|
||||
"README.md",
|
||||
README_HEAD,
|
||||
False,
|
||||
README_BLOCK + README_HEAD,
|
||||
"предупреждение в шапке README: это форк, ставить из него",
|
||||
),
|
||||
# --- свои записи о версии (наш файл, авторский CHANGELOG не трогаем) ----
|
||||
(
|
||||
"tools/release.sh",
|
||||
|
||||
Reference in New Issue
Block a user