diff --git a/FORK-CHANGELOG.md b/FORK-CHANGELOG.md
index d71d3f9..7eff78f 100644
--- a/FORK-CHANGELOG.md
+++ b/FORK-CHANGELOG.md
@@ -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,
diff --git a/FORK.md b/FORK.md
index 26d3c6f..c0f4eac 100644
--- a/FORK.md
+++ b/FORK.md
@@ -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`),
+ авторские правки в нём нас не интересуют.
## Что проверено на сегодня
diff --git a/README.md b/README.md
index aa16a11..91fdc56 100644
--- a/README.md
+++ b/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).
-> Ниже — **авторское** описание: его команды и значки ведут в репозиторий автора и включают его
-> канал обновлений, то есть ночное автообновление вернёт авторскую сборку вместо нашей.
-
-
+
-**Установка 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.
----
+## Что ставится
-> [!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), настраивает все популярные
-протоколы, сертификат и файрвол и выдаёт одну ссылку-подписку. Её можно вставить в любое
-приложение – оно само получит подходящие ему протоколы. Домен не нужен.
-
-
-
-
-
-## Возможности
-
-- 🧩 **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
+
-После установки на сервере появляется команда `kit`. Запустите её **без аргументов** – откроется меню, как у `x-ui`: выберите цифру, остальное спросит само. Те же действия одной строкой – в группах ниже (нажмите, чтобы раскрыть). Подробности – в [инструкции](manuals/3x-ui.md).
-
-
-Пользователи – kit user
+Если вопросы не нужны — те же ответы задаются флагами:
```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 имя # удалить
-```
-
+# минимум: свой домен и два протокола, без вопросов
+bash <(curl -fsSL …/scripts/3x-ui-local.sh) --protocols reality,awg3 --domain vpn.example.com
-
-Сеть и маскировка – kit net
+# всё, кроме 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
-```
-
-
-
-Раздельная маршрутизация – kit net split
-
-Через 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 # выключить
-```
-
-
-
-Обслуживание сервера – проверка, обновление, копия
-
-```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.
-
+### Флаги установки
-
-Если не подключается – диагностика
-
-```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 «Авто» выбирает сама, в остальных приложениях – вручную.
-
-
-## VPN на роутере
-
-Через прокси идут только нужные сервисы и выбранные устройства, остальное работает напрямую.
-Порядок: **1.** установить программу на роутер → **2.** собрать конфиг в [генераторе](#генератор-конфигов-для-роутера) →
-**3.** вставить команду из генератора.
-
-> [!NOTE]
-> На роутере работает [XKeen](https://github.com/jameszeroX/XKeen) автора jameszeroX, спасибо ему.
-
-
-📶 Keenetic: XKeen (jameszeroX) · 8 шагов, 20–30 минут
-
-Нужны роутер **Keenetic** или **Netcraze** с USB-портом, USB-флешка в формате **ext4** и свой сервер с VLESS
-(например, из [этой инструкции](manuals/3x-ui.md)).
-
-
-1. Компоненты KeeneticOS
-
-В веб-интерфейсе: **Управление → Общие настройки → Изменить набор компонентов**. Отметьте компоненты
-с галочками на картинке и установите. Роутер обновится и перезагрузится.
-
-
-
-
-
-
-2. Entware на флешку
-
-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**: выберите флешку и сохраните. Установка займёт несколько минут.
-
-
-
-
-
-
-3. Подключение по SSH
-
-```bash
-ssh root@192.168.x.x -p 222
-```
-
-Пароль по умолчанию `keenetic`. **Сразу смените его** командой `passwd`.
-
-
-
-
-4. Шифрованный DNS
-
-Пропишите шифрованные DNS-серверы (DoT или DoH) по
-[инструкции Keenetic](https://support.keenetic.ru/ultra/kn-1811/ru/31543-dot-and-doh-proxy-servers-for-dns-requests-encryption.html):
-без этого XKeen работает неправильно.
-
-
-
-
-5. Токен для KeeneticOS 5.2 и новее
-
-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/Порядок-установки).
-
-
-
-
-6. Установка XKeen
-
-Подключитесь по 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 перезапустится.
-
-
-
-
-
-
-7. Какие устройства через прокси
-
-В веб-интерфейсе откройте **Приоритеты подключений → Политики доступа в Интернет**, создайте политику
-с именем **`xkeen`** и перенесите в неё нужные устройства.
-
-> [!WARNING]
-> Без политики `xkeen` через прокси пойдёт трафик **всех** устройств в сети.
-
-
-
-
-8. Проверка
-
-- На роутере: `xkeen -status` – XKeen должен быть запущен.
-- На устройстве из политики `xkeen` откройте сайт, показывающий IP-адрес: он должен совпасть с адресом вашего сервера,
- а на остальных устройствах остаться прежним.
-- Удобнее управлять настройками из браузера через [XKeen UI](https://github.com/zxc-rv/XKeen-UI).
-
-
-
-Подробная версия с теми же шагами: [инструкция для Keenetic](manuals/xkeen-keenetic.md).
-
-
-
-## Генератор конфигов для роутера
-
-Вставьте ссылку на сервер или подписку, выберите роутер и ядро, отметьте нужные сервисы –
-и получите готовый конфиг и одну команду, которая сама положит его на роутер.
-Всё считается в браузере, ссылки никуда не отправляются.
-Как поставить 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` | команды форка прямо на сервере |
diff --git a/manuals/assets/fork-banner.svg b/manuals/assets/fork-banner.svg
new file mode 100644
index 0000000..7f54966
--- /dev/null
+++ b/manuals/assets/fork-banner.svg
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/manuals/assets/script-3x-ui-local.svg b/manuals/assets/script-3x-ui-local.svg
new file mode 100644
index 0000000..c69bce6
--- /dev/null
+++ b/manuals/assets/script-3x-ui-local.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tools/fork_apply.py b/tools/fork_apply.py
index e1789fb..e63dc1e 100644
--- a/tools/fork_apply.py
+++ b/tools/fork_apply.py
@@ -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 = '
\n\n'
-
+# 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",