197 lines
15 KiB
Markdown
197 lines
15 KiB
Markdown
<div align="center">
|
||
|
||
<img alt="3X-UI autoVPS" src="manuals/assets/fork-banner.svg" width="860">
|
||
|
||
**Сервер одной командой: панель 3X-UI, VPN-протоколы за одним портом 443, одна подписка на все устройства**
|
||
|
||
Сборка со **своим каналом обновлений**: сервер ставится и обновляется из этого репозитория, релизы
|
||
подписаны, ночное автообновление не вернёт чужую версию. В основе — открытый проект 3X-UI KIT.
|
||
|
||
</div>
|
||
|
||
## Что ставится
|
||
|
||
| Что | Зачем |
|
||
|---|---|
|
||
| Панель **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),
|
||
какую маскировку и домен, закрывать ли ответ на ping, включать ли автообновления безопасности,
|
||
менять ли порт SSH (Enter — оставить 22), менять ли пароль root.
|
||
|
||
<img alt="Установка одной командой" src="manuals/assets/script-3x-ui-local.svg" width="860">
|
||
|
||
Если вопросы не нужны — те же ответы задаются флагами:
|
||
|
||
```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` |
|
||
| `--no-time`, `--no-check`, `--verify-only`, `--dry-run`, `-h` | служебные |
|
||
|
||
## Что происходит по шагам
|
||
|
||
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` | команды форка прямо на сервере |
|