MTProto — это протокол Telegram, и свой прокси позволяет обходить блокировки или раздавать доступ друзьям. Разберём всё с нуля как поднять свой MTProto Proxy для Telegram.
Что нужно для старта
- VPS-сервер с Linux (Ubuntu 20.04/22.04 — оптимально)
- Минимум 512 МБ RAM, 1 vCPU
- Чистый IP (не из спам-баз)
- Открытые порты (обычно 443 или любой другой)
Вариант 1 — Official Telegram MTProto Proxy (на Go)
Это официальная реализация от команды Telegram, написанная на Go. Самая стабильная.
Установка
# Обновляем систему
apt update && apt upgrade -y
# Устанавливаем зависимости
apt install -y git curl
# Устанавливаем Go (если нет)
curl -OL https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc
# Клонируем репозиторий
git clone https://github.com/TelegramMessenger/MTProxyGo.git
cd MTProxyGo
# Собираем
go build -o mtproxy .
Генерируем секрет и запускаем
# Генерируем случайный секрет (16 байт = 32 hex символа)
SECRET=$(openssl rand -hex 16)
echo "Ваш секрет: $SECRET"
# Запускаем прокси
./mtproxy -secret $SECRET -port 443
Вариант 2 — MTProto Proxy на Python (9seconds/mtprotoproxy)
Популярная альтернатива, простая в настройке.
apt install -y python3 python3-pip git
git clone https://github.com/9seconds/mtprotoproxy.git
cd mtprotoproxy
# Генерируем секрет
python3 -c "import os; print(os.urandom(16).hex())"
# Копируем конфиг
cp config.py.example config.py
nano config.py
В файле config.py меняем:
PORT = 443
USERS = {
"user1": "ВАШ_СЕКРЕТ_СЮДА",
}
# Включаем режим TLS (маскировка под HTTPS трафик)
PREFER_REQU_SECUR = True
Запуск:
python3 mtprotoproxy.py config.py
Вариант 3 — Docker (самый простой способ)
# Устанавливаем Docker
curl -fsSL https://get.docker.com | sh
# Генерируем секрет
SECRET=$(openssl rand -hex 16)
# Запускаем контейнер
docker run -d \
--name mtproto-proxy \
--restart=always \
-p 443:443 \
-e SECRET=$SECRET \
telegrammessenger/proxy:latest
echo "Ваш секрет: $SECRET"
Через 30 секунд прокси готов.

Настройка фаервола
# Разрешаем порт
ufw allow 443/tcp
ufw allow 443/udp
ufw enable
# Проверяем
ufw status
Создание ссылки для подключения
Ссылка для Telegram имеет формат:
tg://proxy?server=ВАШ_IP&port=443&secret=ВАШ_СЕКРЕТ
Режим FakeTLS (рекомендуется)
Этот режим маскирует трафик под обычный HTTPS, что сильно усложняет блокировку. Секрет в этом случае начинается с ee + домен в hex:
# Пример: маскируем под google.com
python3 -c "
import binascii
domain = 'google.com'
hex_domain = binascii.hexlify(domain.encode()).decode()
import os
secret = os.urandom(16).hex()
print('Секрет: ee' + secret + hex_domain)
"
Ссылка с FakeTLS:
tg://proxy?server=ВАШ_IP&port=443&secret=eeВАШ_СЕКРЕТ_С_ДОМЕНОМ
Автозапуск через systemd
nano /etc/systemd/system/mtproxy.service
[Unit]
Description=MTProto Proxy
After=network.target
[Service]
Type=simple
WorkingDirectory=/root/MTProxyGo
ExecStart=/root/MTProxyGo/mtproxy -secret ВАШ_СЕКРЕТ -port 443
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable mtproxy
systemctl start mtproxy
systemctl status mtproxy
Проверка работы
# Смотрим, слушает ли порт
ss -tlnp | grep 443
# Проверяем логи (docker)
docker logs mtproxy -f
# Тест подключения
curl -v telnet://ВАШ_IP:443
Советы по безопасности
| Рекомендация | Зачем |
|---|---|
| Используйте нестандартный порт (например, 8443) | Меньше внимания от DPI |
| Включайте FakeTLS | Трафик выглядит как HTTPS |
| Не публикуйте IP публично | Снизите риск блокировки |
| Меняйте секрет раз в месяц | На случай утечки |
| Ставьте fail2ban | Защита от брутфорса |
Самый быстрый путь — Docker вариант: одна команда, и всё работает. Для продакшна или если хотите полный контроль — используйте Go-версию с systemd. FakeTLS включайте всегда — это ваша главная защита от блокировки по DPI.