Сервер одной командой: панель 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 <(curl -fsSL https://git.rukavishnikoff.ru/hacker07/3X-UI_autoVPS/raw/branch/main/scripts/3x-ui-local.sh)
Без флагов скрипт спрашивает всё по ходу: какие протоколы ставить (Enter — REALITY + AmneziaWG-3.1), какую маскировку и домен, закрывать ли ответ на ping, включать ли автообновления безопасности, менять ли порт SSH (Enter — оставить 22), менять ли пароль root.
Если вопросы не нужны — те же ответы задаются флагами:
# минимум: свой домен и два протокола, без вопросов
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 <(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 |
--no-time, --no-check, --verify-only, --dry-run, -h |
служебные |
Что происходит по шагам
- Проверка сервера: root, Debian/Ubuntu, память, место на диске, занятые порты 80/443.
- Проверка релиза: файлы берутся из этого репозитория по тегу, проверяется подпись
SHA256SUMSнашим ключом и SHA256 самого установщика. Не сошлось — ничего не запускается. - Выбор протоколов и запуск установщика: панель 3X-UI, выбранные подключения, nginx на 443, сертификат, сайт-заглушка, служба подписки, правила ufw.
- Сайт-заглушка: ставится случайный правдоподобный ИТ-сайт из нашего набора (10 штук) и синхронизируется в ответ Hysteria2.
- Наши вопросы и правки: закрыть ответ на ping, включить обновления безопасности, сменить порт SSH, сменить пароль root.
kit fix— синхронизация времени и безопасные починки.- Проверка:
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 | документация проекта |
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-CHANGELOG.md | что менялось в наших версиях |
kit local help |
команды форка прямо на сервере |