3X-UI autoVPS **Сервер одной командой: панель 3X-UI, VPN-протоколы за одним портом 443, одна подписка на все устройства** Сборка со **своим каналом обновлений**: сервер ставится и обновляется из этого репозитория, релизы подписаны, ночное автообновление не вернёт чужую версию. В основе — открытый проект 3X-UI_autoVPS.
## Что ставится | Что | Зачем | |---|---| | Панель **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 | ## Установка От root, на чистом сервере (Debian 11+ / Ubuntu 22.04+, 64-бит): ```bash bash <(curl -fsSL https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main/scripts/3x-ui-local.sh) ``` Без флагов скрипт **спрашивает всё заранее, до установки**: какие протоколы ставить (Enter — REALITY + AmneziaWG-3.1), менять ли порт SSH (Enter — оставить 22), менять ли пароль root, закрывать ли ответ на ping, включать ли автообновления безопасности. Затем сканирует подсеть и **предлагает выбрать сайт маскировки** — отдельно для REALITY и, если выбраны XHTTP/MTProto, отдельно для них: номер из найденных соседей, `0` — ввести адрес вручную, для XHTTP/MTProto ещё и известный сайт (Google, Microsoft, AMD…). После установщика скрипт **ничего не спрашивает** — только выполняет выбранное, проверяет сервер и в самом конце показывает то, что нужно унести: **доступ к панели 3X-UI** (адрес, логин, пароль) и **подписку с QR-кодом** и ссылками по протоколам. Установка одной командой Если вопросы не нужны — те же ответы задаются флагами: ```bash # минимум: свой домен и два протокола, без вопросов bash <(curl -fsSL …/scripts/3x-ui-local.sh) --protocols reality,awg3 --domain vpn.example.com # всё, кроме 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 bash <(curl -fsSL …/scripts/3x-ui-local.sh) --verify-only # подпись релиза и сумма установщика bash <(curl -fsSL …/scripts/3x-ui-local.sh) --dry-run # что именно будет сделано ``` ### Флаги установки | Флаг | Что делает | |---|---| | `--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` | | `--clean` | убрать прошлую (оборвавшуюся) установку и поставить заново — SSH не трогает | | `--auto-sni` | не показывать меню выбора сайта маскировки, подобрать самим (автоподбор автора) | | `--no-sub` | не показывать в конце доступ к панели, подписку и QR-код | | `--no-time`, `--no-check`, `--verify-only`, `--dry-run`, `-h` | служебные | ## Что происходит по шагам 1. **Проверка сервера**: root, Debian/Ubuntu, память, место на диске, занятые порты 80/443. 2. **Проверка релиза**: файлы берутся из этого репозитория по тегу, проверяется **подпись `SHA256SUMS`** нашим ключом и SHA256 самого установщика. Не сошлось — ничего не запускается. 3. **Наши вопросы** (до установки): протоколы, порт SSH, пароль root, ping, автообновления. 4. **Установщик**: панель 3X-UI, только выбранные подключения, nginx на 443, сертификат, сайт-заглушка, служба подписки, правила ufw. Маскировку спрашивает он: свой домен, сосед по подсети или свой сайт. Если выбран сосед — сначала идёт **скан подсети**, затем меню выбора сайта (см. выше). 5. **Наши действия** (без вопросов): правдоподобный ИТ-сайт-заглушка вместо авторской страницы, `kit fix` (время и безопасные починки), закрыть ответ на ping, включить обновления безопасности, перевести SSH на новый порт, сменить пароль root. 6. **Проверка**: `kit check` (порты, службы, подписка, сертификат, маскировка) и сводка `kit local hardening`. 7. **В самом конце** — **доступ к панели 3X-UI** (адрес, логин, пароль из `/root/3x-ui.txt`) и **подписка с QR-кодом** и ссылками по протоколам. После них скрипт уже ничего не делает и не спрашивает. ## Протоколы Один порт 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`. **Сайт маскировки выбираете вы.** После скана подсети установщик спрашивает отдельно для REALITY (найденный сосед или свой адрес) и отдельно для XHTTP/MTProto (найденный, свой или известный сайт — список известных расширен Google, Amazon, Samsung, Yahoo, Microsoft, AMD, Intel, NVIDIA). Выбранный адрес проверяется на TLS 1.3 + HTTP/2. Если XHTTP и MTProto не выбраны, второго вопроса нет. Для протоколов, которые **не** выбраны, не делается ничего: ни подключений, ни записей в nginx, ни ссылок в подписке, ни лишних обращений к сети (например, обход соседей запускается только когда он действительно нужен). ## Сайт-заглушка На 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 uninstall` | **снести установку целиком**: панель, службы и файлы kit, nginx и сайт, сертификаты, наши правки системы и правила ufw для 80/443. Спрашивает слово «удалить», есть `--dry-run`. **SSH не трогает** | | `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` | команды форка прямо на сервере |