MTProto — это протокол, разработанный Telegram для обхода блокировок. Ниже расскажу как установить и настроить MTProto прокси на своем сервере.
Что потребуется
- VPS с Linux (Ubuntu 20.04/22.04 или Debian 11/12)
- Root-доступ
- Минимум 512 MB RAM, 1 CPU
- Открытый порт (например, 443 или любой другой)
Вариант 1: официальный Python-сервер от Telegram (простой)
Шаг 1 — Обновляем систему
apt update && apt upgrade -y
apt install git curl python3 python3-pip -y
Шаг 2 — Клонируем репозиторий
git clone https://github.com/TelegramMessenger/MTProxy.git
cd MTProxy
Это C-реализация от самого Telegram. Компилируем:
apt install build-essential libssl-dev zlib1g-dev -y
make
После сборки бинарник будет в objs/bin/mtproto-proxy.
Шаг 3 — Получаем секрет и конфиг
# Скачиваем актуальный конфиг серверов Telegram
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
Генерируем свой секрет (16 байт в hex):
head -c 16 /dev/urandom | xxd -ps
Запоминаем этот HEX — это и есть твой SECRET.
Шаг 4 — Запускаем прокси
./objs/bin/mtproto-proxy \
-u nobody \
-p 8888 \
-H 443 \
-S <ВАШ_СЕКРЕТ> \
--aes-pwd proxy-secret \
proxy-multi.conf \
-M 1
Параметры:
-p 8888— внутренний порт (stats)-H 443— внешний порт, на который подключаются клиенты-S— ваш секрет-M 1— количество воркеров (обычно = кол-ву CPU)

Вариант 2: через Docker (рекомендую для быстрого старта)
Самый удобный способ — использовать готовый образ.
apt install docker.io -y
systemctl enable --now docker
Генерируем секрет:
SECRET=$(head -c 16 /dev/urandom | xxd -ps)
echo "Ваш секрет: $SECRET"
Запускаем контейнер:
docker run -d \
--name mtproto \
--restart=always \
-p 443:443 \
-v /tmp/mtproxy:/data \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
Проверяем логи:
docker logs mtproto
В логах увидишь ссылку вида:
tg://proxy?server=...&port=443&secret=...
Вариант 3: MTG (Go-реализация, самая современная)
mtg — быстрая реализация на Go с поддержкой FakeTLS (маскировка под HTTPS).
# Устанавливаем бинарник
curl -L https://github.com/9seconds/mtg/releases/latest/download/mtg-linux-amd64 \
-o /usr/local/bin/mtg
chmod +x /usr/local/bin/mtg
Генерируем секрет с FakeTLS (выглядит как обычный TLS-трафик):
mtg generate-secret --hex google.com
Это создаст секрет, который маскирует MTProto под соединение с google.com.
Запускаем:
mtg run <СЕКРЕТ> 0.0.0.0:443
Настройка автозапуска (systemd)
Создаём юнит-файл для любого варианта:
nano /etc/systemd/system/mtproto.service
[Unit]
Description=MTProto Proxy
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/mtg run <СЕКРЕТ> 0.0.0.0:443
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
Активируем:
systemctl daemon-reload
systemctl enable --now mtproto
systemctl status mtproto
Открываем порт в firewall
# UFW
ufw allow 443/tcp
ufw reload
# iptables
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Как подключиться к прокси
Ссылка для подключения формируется так:
tg://proxy?server=ВАШ_IP&port=443&secret=ВАШ_СЕКРЕТ
Если используете FakeTLS (mtg), секрет уже содержит нужный префикс — просто копируйте что выдала команда generate-secret.
В Telegram: Настройки → Данные и хранилище → Тип подключения → Использовать прокси
Вставляете ссылку или вводите параметры вручную.
Полезные советы
| Ситуация | Решение |
|---|---|
| Хочу скрыть трафик | Используй mtg с FakeTLS |
| Много пользователей | Увеличь -M (воркеры) или RAM |
| Порт 443 занят nginx | Используй порт 8443 или настрой port forwarding |
| Нужна статистика | C-версия отдаёт stats на -p порту |
Мониторинг
Для C-версии статистика доступна так:
curl http://localhost:8888/stats
Для Docker:
docker stats mtproto
Если что-то не работает — первым делом проверь, открыт ли порт снаружи (
nmap -p 443 ВАШ_IPс другой машины), и убедись что в логах нет ошибок с загрузкойproxy-secret.