Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 MTProto Proxy на Telemt с Telegram-ботом

Этот проект позволяет развернуть персональный MTProto-прокси для Telegram на базе Telemt с автоматической выдачей конфигураций через Telegram-бота. Прокси работает в двух режимах: обычный secure (простой) или с маскировкой Fake TLS (для обхода DPI). Бот управляет пользователями, добавляя их в конфиг Telemt и перезагружая сервис, а также присылает администратору уведомления о новых подключениях.

✨ Возможности

  • 🚀 Быстрое развёртывание через Docker Compose
  • 🤖 Telegram-бот для самообслуживания (любой пользователь может получить ссылку с ограничением по времени)
  • 🔔 Уведомления администратору о каждом новом пользователе
  • 🛡️ Два режима работы Telemt:
    • Обычный secure-режим (tls=false, secure=true) — надёжно и просто, не требует домена
    • Fake TLS (tls=true, secure=false) — маскировка трафика под обычный HTTPS-сайт (для обхода блокировок)
  • 📦 Лёгкая настройка через переменные окружения

📋 Требования

  • Сервер с Ubuntu/Debian (или любая ОС с Docker)
  • Установленные Docker и Docker Compose
  • Домен (если нужен реальный SSL через Traefik) или просто IP-адрес сервера
  • Telegram-бот (токен от @BotFather)

🚀 Быстрый старт

1. Клонируйте репозиторий

git clone https://github.com/yourusername/telemt-proxy-bot.git
cd telemt-proxy-bot

2. Настройте переменные окружения

Скопируйте пример файла .env и отредактируйте его:

cp .env.example .env
nano .env

Минимальное содержимое .env:

BOT_TOKEN=1234567890:ABCdefGHIjklMNOpqrsTUVwxyz
ADMIN_IDS=52405316                     # ваши Telegram ID (через запятую)
PROXY_DOMAIN=mtp.ach-play.ru           # домен или IP вашего сервера
RATE_LIMIT_MINUTES=60                   # интервал между запросами (в минутах)

Если вы планируете использовать режим Fake TLS, добавьте также:

MASK_DOMAIN=www.google.com               # домен для маскировки

3. Настройте Telemt

В папке telemt находится файл telemt.toml. Выберите один из двух режимов, отредактировав его.

📌 Обычный режим (без маскировки) — рекомендован для начала

listen = "0.0.0.0:443"
tls = false

telegram = [
    "149.154.175.50:443",
    "149.154.167.51:443",
    "149.154.175.100:443",
    "149.154.167.91:443",
    "149.154.171.5:443"
]

[access]
users = {}   # бот будет добавлять сюда новых пользователей

В этом режиме ссылки будут иметь префикс dd (например, tg://proxy?server=...&secret=dd...).

🛡️ Режим Fake TLS (маскировка) — для обхода блокировок

listen = "0.0.0.0:443"
tls = true

telegram = [
    "149.154.175.50:443",
    "149.154.167.51:443",
    "149.154.175.100:443",
    "149.154.167.91:443",
    "149.154.171.5:443"
]

[censorship]
tls_domain = "www.google.com"   # обязательно укажите тот же домен, что в MASK_DOMAIN
mask = true
mask_port = 443
fake_cert_len = 2048

[access]
users = {}

В этом режиме ссылки будут иметь префикс ee и содержать закодированный домен маскировки (например, ee<секрет><домен в hex>).

4. Запустите Docker Compose

docker-compose up -d

Проверьте логи:

docker-compose logs -f

5. Протестируйте бота

Напишите вашему боту команду /start, затем /new. Вы получите ссылку вида:

tg://proxy?server=mtp.ach-play.ru&port=443&secret=dd55f5ae8ff423e5e77951760066a2d816

или, если включён Fake TLS:

tg://proxy?server=mtp.ach-play.ru&port=443&secret=ee55f5ae8ff423e5e77951760066a2d8167777772e676f6f676c652e636f6d

Скопируйте ссылку и вставьте в настройках прокси Telegram (Настройки → Данные и память → Прокси-сервер → Включить прокси → Вставить ссылку). Если всё настроено верно, прокси включится.

📁 Структура проекта

.
├── .env                     # переменные окружения
├── docker-compose.yml       # композ-файл с сервисами telemt и бота
├── telemt/
│   └── telemt.toml          # конфигурация Telemt
└── bot/
    ├── Dockerfile
    ├── requirements.txt
    └── bot.py               # основной код бота

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

  • Команда /new — генерирует новый 16-байтовый секрет, добавляет его в [access.users] конфига, посылает сигнал SIGHUP Telemt для перезагрузки, формирует ссылку и отправляет пользователю.
  • Rate limit: не чаще одного раза в RATE_LIMIT_MINUTES (по умолчанию 60).
  • Уведомления администратору (указан в ADMIN_IDS) при каждой выдаче ссылки.
  • Команда /stats (доступна только администраторам) показывает количество пользователей в конфиге.

🔄 Переключение между режимами

Если вы хотите перейти из обычного режима в Fake TLS или наоборот:

  1. Измените telemt/telemt.toml (включите/выключите tls и настройте секцию [censorship]).
  2. В файле .env добавьте или удалите переменную MASK_DOMAIN.
  3. Перезапустите стек:
docker-compose down
docker-compose up -d

Бот автоматически определит наличие MASK_DOMAIN и будет генерировать ссылки с соответствующим префиксом (ee или dd).

🧯 Устранение неполадок

❌ Ссылка не работает, Telegram пишет «Переподключение...»

  1. Убедитесь, что порт 443 открыт в фаерволе и доступен извне:
    telnet ваш-сервер 443
  2. Проверьте логи Telemt:
    docker-compose logs telemt
    Ищите ошибки вроде Telegram handshake timeout или invalid secret.
  3. Убедитесь, что секрет в ссылке совпадает с тем, что добавил бот в telemt.toml:
    cat telemt/telemt.toml
  4. Если используется Fake TLS, проверьте, что MASK_DOMAIN совпадает с tls_domain в конфиге.

❌ Бот не отвечает или выдаёт ошибки

  • Проверьте логи бота: docker-compose logs bot.
  • Убедитесь, что токен бота правильный.
  • Проверьте, что файл telemt.toml доступен для записи боту (права 666 или владелец совпадает с пользователем контейнера).

❌ Не удаётся перезагрузить Telemt

  • В конфиге бота используется сигнал SIGHUP. Если он не работает, можно заменить container.kill(signal.SIGHUP) на container.restart() в функции reload_telemt. Но это приведёт к разрыву текущих соединений.

🔒 Безопасность

  • Ограничьте доступ к серверу по SSH (ключи, не пароль).
  • Используйте файрвол (ufw), открыв только порты 22 и 443.
  • Не публикуйте токен бота и приватные ключи.
  • Регулярно обновляйте образы Docker.

📄 Лицензия

MIT

🙏 Благодарности

  • Telemt — быстрый и гибкий MTProxy
  • pyTelegramBotAPI — удобная библиотека для ботов

Если у вас возникли вопросы или предложения, создавайте Issue или пишите в Telegram. Приятного использования!

About

MTPROTO Proxy server with telegram bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages