Полное руководство по настройке с нуля: архитектура, конфигурация, управление пользователями и разбор типичных ошибок.
MTProto — собственный протокол шифрования Telegram. MTProto прокси — это специальный сервер-посредник, который принимает подключения клиентов Telegram, маскирует трафик под обычный HTTPS (имитирует cloudflare.com и другие легитимные домены) и пересылает данные на серверы Telegram через зашифрованный туннель.
На практике прокси используют для работы в сетях, где Telegram заблокирован: Иран, Китай, корпоративные файрволы. Также его применяют для единой точки выхода всей компании и контроля доступа — каждому сотруднику выдаётся персональный ключ (secret).
При включённом USE_MIDDLE_PROXY = True трафик идёт через официальные Telegram relay-серверы. Это рекомендуемый режим: большинство хостингов блокируют прямые соединения к Telegram CDN, а через relay надёжно работают в том числе фото и видео.
TLS-маскировка работает через секрет формата ee<hex>636c6f7564666c6172652e636f6d: префикс ee означает fake-TLS, а последняя часть — «cloudflare.com» в HEX. DPI-системы видят легитимный HTTPS, а не Telegram.
| VPS сервер | Debian 12 или Ubuntu 22.04. От 512 МБ RAM, 1 CPU. ~5–10 ГБ трафика в месяц на 20 активных пользователей. Порт 443 должен быть открыт. |
| Рекомендуемые хостинги | Hetzner (Германия / Финляндия), DigitalOcean, Vultr. Регион: Frankfurt, Helsinki, Amsterdam — хороший пинг из России. |
| Python 3.7+ | Обычно уже есть в Debian/Ubuntu. |
| SSH-доступ | Root или sudo. Windows: PuTTY или Windows Terminal. |
| Время | 15–30 минут. |
Подключитесь по SSH и обновите систему:
# Подключиться ssh root@<IP_СЕРВЕРА> # Обновить пакеты apt update && apt upgrade -y # Установить необходимые утилиты apt install -y git curl wget nano ufw fail2ban # Защита SSH от брутфорса systemctl enable fail2ban && systemctl start fail2ban
# Проверить Python python3 --version # Если нет — установить apt install -y python3 python3-pip # Ускорение криптографии (опционально) pip3 install cryptography
Используем оригинальный alexbers/mtprotoproxy — самый популярный open-source MTProto прокси на Python (asyncio, держит 300+ подключений на 1 ядре).
cd /opt git clone https://github.com/alexbers/mtprotoproxy.git cd /opt/mtprotoproxy
Откройте файл конфигурации:
nano /opt/mtprotoproxy/config.py
Пример рабочего конфига:
PORT = 443 USERS = { "admin": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6", "employee1": "b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7", "employee2": "c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8", } TLS_DOMAIN = "cloudflare.com" USE_MIDDLE_PROXY = True # ОБЯЗАТЕЛЬНО PREFER_IPV6 = False TG_READ_TIMEOUT = 3600 TO_CLT_BUFSIZE = 33554432 # 32 МБ — не уменьшать! TO_TG_BUFSIZE = 33554432 IGNORE_TIME_SKEW = True CLIENT_KEEPALIVE = 600
Сгенерировать новый ключ для пользователя:
python3 -c "import secrets; print(secrets.token_hex(16))"| PORT = 443 | Стандартный HTTPS-порт. Открыт в 99% корпоративных и мобильных сетей. |
| USERS | Словарь пользователей: имя + 32-символьный hex-ключ. Каждый ключ = отдельная ссылка для подключения. |
| TLS_DOMAIN | Домен-маскировка. Cloudflare — идеально: трафик неотличим от обычного HTTPS. |
| USE_MIDDLE_PROXY | Подключение через официальные Telegram relay. Обязательно на большинстве хостингов — без него медиа не грузятся. |
| TO_CLT_BUFSIZE | Буфер 32 МБ. Критически важен для скорости видео. Не уменьшать. |
Создайте файл сервиса:
[Unit] Description=MTProto Proxy After=network.target [Service] Type=simple ExecStart=/usr/bin/python3 /opt/mtprotoproxy/mtprotoproxy.py WorkingDirectory=/opt/mtprotoproxy Restart=always RestartSec=5 LimitNOFILE=65536 LimitNPROC=65536 Nice=-10 CPUWeight=700 MemoryHigh=2G MemoryMax=3G StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mtproxy
systemctl start mtproxy
systemctl status mtproxy # должно быть active (running)
Настройка файрвола — сначала SSH, потом всё остальное:
ufw allow 22/tcp # SSH — обязательно первым! ufw allow 443/tcp # MTProxy ufw enable ufw status verbose
После запуска прокси выведет в лог ссылки вида:
admin: tg://proxy?server=82.25.161.30&port=443&secret=ee...636c6f7564666c6172652e636f6d
Три формата: без префикса (обычный MTProto), с dd (обфускация), с ee (TLS-маскировка). Выдавайте пользователям ссылку с ee — она работает в максимальном числе сетей.
| Android | Настройки → Конфиденциальность → Прокси → «+» → MTProto |
| iOS | Настройки → VPN и прокси → Прокси → Добавить прокси (MTProto) |
| По ссылке | Просто перейдите по tg://proxy?... — Telegram сам предложит подключиться |
Иконка 🛡 рядом с именем прокси означает, что TLS-режим активен. Зелёная галочка — прокси подключён.
Добавить пользователя: отредактируйте /opt/mtprotoproxy/config.py, вставьте новую строку в USERS, перезапустите сервис.
Удалить: уберите его строку из USERS и перезапустите. Ссылка сразу перестанет работать.
Прокси выводит статистику в лог каждую минуту:
Stats for 22.03.2026 09:00:00 tg: 11 connects (4 current), 1.57 MB, 879 msgs test: 3 connects (1 current), 0.45 MB, 120 msgs
«Can't connect to proxy» в Telegram
systemctl is-active mtproxy (должно быть active), ss -tlnp | grep 443 (должен слушать), ufw status | grep 443 (правило ALLOW). Исправление: systemctl restart mtproxyСообщения идут, но фото и видео не грузятся
USE_MIDDLE_PROXY = False — хостинг блокирует Telegram CDN. Поставьте True, перезапустите.TO_CLT_BUFSIZE = TO_TG_BUFSIZE = 33554432.
«[Errno 104] Connection reset by peer» в логах
systemctl stop mtproxy, подождите 30–60 минут, уберите все скрипты с TCP-коннектами к relay. Затем: systemctl start mtproxyПосле перезагрузки сервера прокси не запускается
systemctl enable mtproxy && systemctl start mtproxyФото и видео не грузились. Прокси выбирал один случайный relay, и если тот был недоступен — соединение падало через 10 секунд.
Добавили логику перебора relay с таймаутом 1.5с. Частично помогло, но одновременно поставили PROXY_INFO_UPDATE_PERIOD = 300 — что привело к следующей проблеме.
Добавили скрипт проверки relay через TCP connect к 24 серверам. Telegram расценил это как флуд и заблокировал IP. Симптом: «[Errno 104] Connection reset» — полный отказ.
Восстановили оригинальный mtprotoproxy.py с рабочего сервера, убрали PROXY_INFO_UPDATE_PERIOD, вернули дефолтные настройки. После снятия бана всё заработало стабильно.