freenet/initializator
2026-03-28 08:49:34 +07:00
..
2026-03-24 03:30:16 +07:00
2026-03-24 03:30:16 +07:00
2026-03-28 08:49:34 +07:00
2026-03-24 03:30:16 +07:00
2026-03-28 08:49:34 +07:00
2026-03-24 03:30:16 +07:00
2026-03-24 03:30:16 +07:00
2026-03-28 08:49:34 +07:00

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

Что делает:

  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

Запуск:

sudo bash vless.sh

vless_ip.sh — VLESS + Reality (по IP)

Поднимает Xray-core напрямую на порту 443 с протоколом Reality. Nginx не нужен — Xray сам обрабатывает TLS, маскируясь под реальный сайт.

Переменные .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

Запуск:

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

Что делает:

  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<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?...
  • Настройки -> Данные и хранилище -> Прокси -> Добавить прокси