Skip to content

danielVNru/mtproto-node

Repository files navigation

MTProto Service Node

Сервис-нода для управления MTProto прокси контейнерами. Устанавливается на каждый прокси-сервер и управляется через MTProto Panel.

Совместимость

Скрипт установки протестирован и поддерживается на следующих системах:

ОС Версия Пакетный менеджер
Ubuntu 20.04, 22.04, 24.04 apt
Debian 11, 12 apt
CentOS / RHEL 8, 9 yum / dnf
AlmaLinux / Rocky Linux 8, 9 yum

⚠️ Скрипт предназначен только для Linux x86_64 и aarch64. Windows и macOS не поддерживаются.

Скрипт автоматически установит недостающие зависимости: curl, openssl, git, Docker, Docker Compose.

Возможности

  • Автоматическое создание и управление Docker контейнерами с MTProto прокси
  • Единый nginx с configurable портом и fake TLS маскировкой
  • SNI-based роутинг трафика по доменам
  • VPN-туннелирование через VLESS — проксирование трафика через внешний VPN на уровне каждого прокси
  • Мультипортовые прокси — свой порт для каждого прокси
  • Статистика прокси: CPU, RAM, трафик, аптайм
  • Подключённые IP-адреса с определением страны (ip-api.com)
  • Чёрный список IP-адресов (блокировка через nginx)
  • Лимиты одновременных подключений на прокси
  • Пользовательский пул доменов для fake TLS (50 доменов по умолчанию)
  • Обновление из панели управления
  • REST API с авторизацией по токену

Архитектура

Стандартная схема (без VPN)

Клиент → nginx:443 (SNI) → telemt-proxy → Telegram DC

Схема с VPN-туннелем (VLESS)

┌──────────────────────────────────────────────────────────┐
│                    Service Node (РФ)                      │
│                                                          │
│  ┌────────────┐    ┌──────────────┐                      │
│  │  Express   │    │  nginx :443  │                      │
│  │  API :8443 │    │  (fake TLS)  │                      │
│  └────────────┘    └──────┬───────┘                      │
│                     SNI routing                           │
│            ┌──────────┼──────────┐                       │
│            │          │          │                       │
│         ┌──┴──┐   ┌──┴──┐   ┌──┴──┐                    │
│         │proxy│   │proxy│   │proxy│   ← telemt          │
│         │  1  │   │  2  │   │  N  │     (proxychains4)  │
│         └──┬──┘   └──┬──┘   └──┬──┘                    │
│            │         │         │                         │
│         ┌──┴──┐   ┌──┴──┐   ┌──┴──┐                    │
│         │xray │   │xray │   │xray │   ← SOCKS5 :10808  │
│         │  1  │   │  2  │   │  N  │     VLESS/Reality   │
│         └──┬──┘   └──┬──┘   └──┬──┘                    │
│            └─────────┼─────────┘                         │
└───────────────────── │ ──────────────────────────────────┘
                       │ VLESS/Reality (зашифрованный)
                       ▼
              ┌─────────────────┐
              │  VPN-сервер     │
              │  (за рубежом)   │
              └────────┬────────┘
                       │
                       ▼
              ┌─────────────────┐
              │  Telegram DC    │
              └─────────────────┘

Каждый прокси-контейнер получает индивидуальный xray-контейнер с SOCKS5 прокси. telemt подключается к нему через proxychains4, и весь трафик до Telegram идёт через VPN-туннель.

Развёртывание в России

В РФ Telegram заблокирован, и серверы с российскими IP не могут подключаться к Telegram DC напрямую. Решение — цепочка с VPN-туннелем:

Что нужно

  1. Сервер в РФ — для сервис-ноды (дешёвый VPS, близкий к пользователям)
  2. VPN-сервер за рубежом — с установленным xray/VLESS (Нидерланды, Германия, Финляндия и т.д.)
  3. VLESS-подписка — URL с конфигурацией подключения

Поддерживаемые протоколы VPN

  • VLESS + Reality (рекомендуется) — не детектируется DPI
  • VLESS + TLS — стандартное TLS-шифрование
  • VLESS + TCP/WS/gRPC — разные транспорты

Как это работает

  1. Устанавливаете сервис-ноду на российский сервер
  2. При создании прокси указываете URL подписки VLESS
  3. Для каждого прокси автоматически создаётся xray-контейнер
  4. xray поднимает VLESS-туннель до зарубежного сервера
  5. telemt пропускает весь трафик через этот туннель
  6. Для Telegram клиент подключается с российского IP, но трафик выходит с IP VPN-сервера

Пример

# Создание прокси с VPN-туннелем
curl -X POST http://NODE_IP:8443/api/proxies \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "domain": "www.google.com",
    "vpnSubscription": "https://vpn-server.com/sub/your-subscription-id"
  }'

Быстрая установка

Одна команда для загрузки и запуска:

wget -qO /tmp/node-install.sh https://raw.githubusercontent.com/danielVNru/mtproto-node/master/install.sh && sudo bash /tmp/node-install.sh

Скрипт автоматически:

  1. Установит Docker и Docker Compose (если отсутствуют)
  2. Скачает последнюю версию из ветки master
  3. Запросит настройки:
    • Порт API (по умолчанию 8443)
  4. Сгенерирует токен авторизации (32 символа)
  5. Соберёт и запустит контейнер

Сервис-нода установится в /opt/mtproto-node.

⚠️ Сохраните токен! Он понадобится для подключения ноды в панели управления.

Обновление

Из панели

Нажмите кнопку «Обновить» на карточке ноды в панели управления.

Вручную

cd /opt/mtproto-node
git pull origin master
docker compose up -d --build

Скрипт update.sh автоматически остановит ноду, обновит код, пересоберёт контейнер и восстановит все запущенные прокси.

Структура контейнеров

Контейнер Описание Порт
mtproto-service-node Express API + управление ${PORT}:8443
mtproto-nginx nginx stream proxy (fake TLS) ${NGINX_PORT}:443+
mtproto-proxy-* MTProto прокси контейнеры (telemt) внутренняя сеть
mtproto-xray-* xray VLESS-туннели (только с VPN) внутренняя сеть

Конфигурация (.env)

Переменная Описание
PORT Внешний порт API сервис-ноды
AUTH_TOKEN Токен авторизации для подключения из панели
NGINX_PORT Порт nginx для прокси-трафика (по умолчанию 443)

API

Все запросы (кроме /api/health) требуют заголовок Authorization: Bearer <TOKEN>.

Метод Путь Описание
GET /api/health Health check
GET /api/proxies Список прокси
POST /api/proxies Создать прокси
GET /api/proxies/:id Детали прокси
PUT /api/proxies/:id Обновить прокси
DELETE /api/proxies/:id Удалить прокси
GET /api/proxies/:id/stats Статистика прокси
GET /api/proxies/:id/link?server_ip=X Ссылка для подключения
POST /api/proxies/:id/restart Перезапустить прокси
POST /api/proxies/:id/pause Приостановить прокси
POST /api/proxies/:id/unpause Возобновить прокси
GET /api/domains Получить домены fake TLS
PUT /api/domains Задать пользовательские домены
GET /api/blacklist Получить чёрный список IP
PUT /api/blacklist Обновить чёрный список IP

Создание прокси

curl -X POST http://NODE_IP:8443/api/proxies \
  -H "Authorization: Bearer TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"port": 3001, "domain": "www.google.com", "maxConnections": 2}'
Параметр Обязательный Описание
port Нет Внутренний порт (случайный если не указан)
domain Нет Fake TLS домен (случайный из пула)
tag Нет Промо-тег для Telegram
name Нет Название прокси
note Нет Заметка
maxConnections Нет Лимит одновременных подключений (0 = без лимита)
listenPort Нет Собственный TCP-порт прокси (если не 443)
vpnSubscription Нет URL подписки VLESS для VPN-туннеля

Требования

  • Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
  • Docker Engine 20.10+
  • Docker Compose v2
  • Порт 443 свободен (для nginx)
  • 512 MB RAM, 1 GB диск

Связанный проект

Панель управления: mtproto-panel

About

Сервис нода управляющая инстансами Telegram Proxy на сервере

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors