7.9 KiB
Initializator
Набор скриптов для быстрой настройки нового VPS-сервера с нуля: файрвол, веб-сервер, SSL и VPN.
Требования
- Ubuntu / Debian
- root-доступ
Быстрый старт
git clone <repo> && cd initializator
1. Базовая настройка
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:
DOMAIN=example.com
VLESS_WS_PATH=stream
PORT=10001
Что делает:
- Скачивает Xray-core с GitHub в
~/services/vless - Генерирует UUID, создаёт
config.json - Создаёт systemd-сервис
xray-vless - Получает SSL-сертификат через Certbot (webroot)
- Настраивает Nginx: HTTP -> HTTPS редирект, WebSocket-прокси
- Выводит строку подключения
Архитектура:
Клиент -> :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
Запуск:
sudo bash vless.sh
vless_ip.sh — VLESS + Reality (по IP)
Поднимает Xray-core напрямую на порту 443 с протоколом Reality. Nginx не нужен — Xray сам обрабатывает TLS, маскируясь под реальный сайт.
Переменные .env:
SERVER_IP=45.146.202.107
Что делает:
- Скачивает Xray-core с GitHub в
~/services/vless_ip - Генерирует UUID + x25519 keypair + short ID
- Создаёт
config.jsonс Reality - Создаёт systemd-сервис
xray-vless-ip - Открывает порт 443 в UFW
- Выводит строку подключения
Архитектура:
Клиент -> :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
Запуск:
sudo bash vless_ip.sh
mtp.sh — MTProto Proxy для Telegram (по домену)
Поднимает официальный MTProto Proxy (TelegramMessenger/MTProxy) с fake-TLS и nginx stream SNI routing. Все сервисы (VLESS, MTProxy, сайты) работают на одном порту 443.
Переменные .env:
MTP_DOMAIN=mtp.example.com
MTP_PORT=10002
Что делает:
- Собирает MTProxy из исходников (C, GitHub)
- Генерирует секрет, скачивает конфиг от Telegram
- Создаёт systemd-сервис
mtproxy - Устанавливает
libnginx-mod-stream - Добавляет stream-блок в nginx для SNI-роутинга на порту 443
- Патчит существующие HTTPS-сайты:
listen 443->listen 8443 - Выводит ссылку для клиента и данные для 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<SECRET><DOMAIN_HEX>
Для MTProxy Admin Bot: MTP_DOMAIN:443
Запуск:
sudo bash mtp.sh
Важно:
mtp.shперестраивает nginx — все HTTPS-сайты переезжают на внутренний порт 8443, а порт 443 занимает stream-модуль для SNI-маршрутизации. Еслиvless.shзапускается послеmtp.sh, он автоматически использует 8443.
Файл .env
Создай initializator/.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
Управление сервисами
# Статус
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?... - Настройки -> Данные и хранилище -> Прокси -> Добавить прокси