# Initializator Набор скриптов для быстрой настройки нового VPS-сервера с нуля: файрвол, веб-сервер, SSL и VPN. ## Требования - Ubuntu / Debian - root-доступ ## Быстрый старт ```bash git clone && cd initializator ``` ### 1. Базовая настройка ```bash sudo bash common.sh # UFW-файрвол (deny incoming, allow SSH) sudo bash nginx.sh # Nginx + правила UFW sudo bash certbot.sh # Certbot для SSL-сертификатов ``` ### 2. Сервисы | | `vless.sh` | `vless_ip.sh` | `mtp.sh` | |---|---|---|---| | Назначение | VLESS VPN | VLESS VPN | MTProto Proxy (Telegram) | | Подключение | По домену | По IP-адресу | По домену | | Транспорт | WebSocket | TCP | TCP (fake-TLS) | | Шифрование | TLS (Let's Encrypt) | Reality (XTLS) | Fake-TLS | | Nginx | Нужен (проксирует WS) | Не нужен | Stream SNI routing | | Маскировка | Обычный HTTPS-сайт | TLS-хендшейк с реальным сайтом | TLS-хендшейк с заданным доменом | ## Скрипты ### `common.sh` Устанавливает и настраивает UFW: - deny incoming / allow outgoing - Открывает порт 22 (SSH) ### `nginx.sh` - Устанавливает Nginx (если не установлен) - Включает автозапуск - Открывает порты 80/443 в UFW ### `certbot.sh` - Устанавливает Certbot + плагин для Nginx ### `vless.sh` — VLESS + WebSocket + TLS (по домену) Поднимает Xray-core за Nginx с WebSocket-транспортом и настоящим TLS-сертификатом. **Переменные `.env`:** ```env DOMAIN=example.com VLESS_WS_PATH=stream PORT=10001 ``` **Что делает:** 1. Скачивает Xray-core с GitHub в `~/services/vless` 2. Генерирует UUID, создаёт `config.json` 3. Создаёт systemd-сервис `xray-vless` 4. Получает SSL-сертификат через Certbot (webroot) 5. Настраивает Nginx: HTTP -> HTTPS редирект, WebSocket-прокси 6. Выводит строку подключения **Архитектура:** ``` Клиент -> :443 (Nginx, TLS) -> WS /$VLESS_WS_PATH -> :$PORT (Xray) -> интернет ``` **Строка подключения:** ``` vless://UUID@DOMAIN:443?encryption=none&security=tls&sni=DOMAIN&type=ws&path=%2FPATH#Fish-VLESS ``` **Запуск:** ```bash sudo bash vless.sh ``` --- ### `vless_ip.sh` — VLESS + Reality (по IP) Поднимает Xray-core напрямую на порту 443 с протоколом Reality. Nginx не нужен — Xray сам обрабатывает TLS, маскируясь под реальный сайт. **Переменные `.env`:** ```env SERVER_IP=45.146.202.107 ``` **Что делает:** 1. Скачивает Xray-core с GitHub в `~/services/vless_ip` 2. Генерирует UUID + x25519 keypair + short ID 3. Создаёт `config.json` с Reality 4. Создаёт systemd-сервис `xray-vless-ip` 5. Открывает порт 443 в UFW 6. Выводит строку подключения **Архитектура:** ``` Клиент -> :443 (Xray, Reality/XTLS) -> интернет | └─ TLS fingerprint = www.kuper.ru (маскировка) ``` **Строка подключения:** ``` vless://UUID@IP:443?encryption=none&security=reality&sni=www.kuper.ru&fp=chrome&pbk=PUBLIC_KEY&sid=SHORT_ID&type=tcp&flow=xtls-rprx-vision#VLESS-Reality ``` **Запуск:** ```bash sudo bash vless_ip.sh ``` --- ### `mtp.sh` — MTProto Proxy для Telegram (по домену) Поднимает официальный MTProto Proxy (TelegramMessenger/MTProxy) с fake-TLS и nginx stream SNI routing. Все сервисы (VLESS, MTProxy, сайты) работают на одном порту 443. **Переменные `.env`:** ```env MTP_DOMAIN=mtp.example.com MTP_PORT=10002 ``` **Что делает:** 1. Собирает MTProxy из исходников (C, GitHub) 2. Генерирует секрет, скачивает конфиг от Telegram 3. Создаёт systemd-сервис `mtproxy` 4. Устанавливает `libnginx-mod-stream` 5. Добавляет stream-блок в nginx для SNI-роутинга на порту 443 6. Патчит существующие HTTPS-сайты: `listen 443` -> `listen 8443` 7. Выводит ссылку для клиента и данные для MTProxy Admin Bot **Архитектура (после установки):** ``` :443 (nginx stream, ssl_preread) | +-- SNI = mtp.example.com --> :10002 (MTProxy, fake-TLS) +-- SNI = * (default) --> :8443 (nginx http, TLS termination) | +-- WS /path --> :10001 (Xray VLESS) +-- / --> /var/www (static) ``` **Ссылка для клиента:** ``` tg://proxy?server=MTP_DOMAIN&port=443&secret=ee ``` **Для MTProxy Admin Bot:** `MTP_DOMAIN:443` **Запуск:** ```bash sudo bash mtp.sh ``` > **Важно:** `mtp.sh` перестраивает nginx — все HTTPS-сайты переезжают на внутренний порт 8443, а порт 443 занимает stream-модуль для SNI-маршрутизации. Если `vless.sh` запускается после `mtp.sh`, он автоматически использует 8443. --- ## Файл `.env` Создай `initializator/.env` перед запуском скриптов: ```env # Для vless.sh (доменный вариант) DOMAIN=example.com VLESS_WS_PATH=stream PORT=10001 # Для vless_ip.sh (IP вариант) SERVER_IP=45.146.202.107 # Для mtp.sh (MTProto Proxy) MTP_DOMAIN=mtp.example.com MTP_PORT=10002 ``` ## Управление сервисами ```bash # Статус systemctl status xray-vless # VLESS (домен) systemctl status xray-vless-ip # VLESS (IP) systemctl status mtproxy # MTProto Proxy # Перезапуск systemctl restart xray-vless systemctl restart xray-vless-ip systemctl restart mtproxy # Логи journalctl -u xray-vless -f journalctl -u xray-vless-ip -f journalctl -u mtproxy -f ``` ## Структура файлов на сервере ``` ~/services/ ├── vless/ # VLESS по домену │ ├── xray │ ├── config.json │ └── connection.txt ├── vless_ip/ # VLESS по IP │ ├── xray │ ├── config.json │ └── connection.txt └── mtp/ # MTProto Proxy ├── mtproto-proxy # бинарник (собран из C) ├── proxy-secret # секрет от Telegram ├── proxy-multi.conf # конфиг от Telegram (обновляется при старте) ├── secret.txt # клиентский секрет └── connection.txt # ссылки для подключения /etc/systemd/system/ ├── xray-vless.service ├── xray-vless-ip.service └── mtproxy.service /etc/nginx/ ├── nginx.conf # содержит stream {} блок (после mtp.sh) └── sites-available/ └── vless-$DOMAIN # listen 8443 (после mtp.sh) ``` ## Клиенты **VLESS** (v2rayNG, Nekoray, Streisand, V2Box и др.): - Импорт по ссылке `vless://...` **MTProto Proxy** (встроен в Telegram): - Импорт по ссылке `tg://proxy?...` или `https://t.me/proxy?...` - Настройки -> Данные и хранилище -> Прокси -> Добавить прокси