Files
2026-09-06 13:51:02 +00:00

5.1 KiB
Raw Permalink Blame History

name, description, tags, category
name description tags category
mtproto-proxy Deploy MTProto proxy (Telegram proxy) via Docker on a VPS. Uses seriyps/mtproto-proxy image with Fake TLS support, configurable ports, secret rotation, and Docker-based deployment.
mtproto
telegram
proxy
docker
fake-tls
devops

MTProto Proxy — Telegram Proxy via Docker

When to Use This Skill

Use this skill when you need to:

  • Deploy a Telegram MTProto proxy on a VPS for bypassing blocking
  • Configure Fake TLS (секрет с префиксом ee) для маскировки под HTTPS
  • Заменить или добавить MTProto рядом с существующими XRay/AmneziaWG прокси
  • Регенерировать секрет прокси (ротация ключей)
  • Проксировать Telegram, когда прямые MTProto подключения заблокированы

Deploy

1. Выбор порта

MTProto proxy должен работать на порту, не занятом другими сервисами:

# Проверить занятые порты
ssh root@VPS_IP "ss -tlnp"

Рекомендуемые незанятые порты, если 443/8443 заняты XRay:

  • 2053 — Cloudflare alt HTTPS, проходит у большинства операторов
  • 2096 — Cloudflare alt HTTPS
  • 10000 — редко блокируется
  • 30000-65535 — высокие порты, почти никогда не блокируются

2. Запуск контейнера

Важно: Образ seriyps/mtproto-proxy использует переменные окружения MTP_PORT, MTP_SECRET, MTP_TAG (не SECRET, не TAG). Скрипт start.sh внутри контейнера читает именно эти переменные.

# Сгенерировать секрет и tag
MTP_SECRET=$(head -c 16 /dev/urandom | xxd -ps)
MTP_TAG=$(head -c 16 /dev/urandom | xxd -ps)

# Запустить (без Fake TLS)
docker run -d --name mtproto-proxy \
  --restart unless-stopped \
  -p <PORT>:<PORT> \
  -e MTP_PORT=<PORT> \
  -e MTP_SECRET=$MTP_SECRET \
  -e MTP_TAG=$MTP_TAG \
  seriyps/mtproto-proxy

3. Fake TLS (рекомендуется)

Чтобы трафик маскировался под обычный HTTPS, добавь префикс ee к секрету:

MTP_SECRET=$(echo -n 'ee' && head -c 15 /dev/urandom | xxd -ps)

Итоговый секрет будет 32 hex-символа, начинается с ee.

4. Проверка

# Статус контейнера
docker ps --filter name=mtproto-proxy --format '{{.Names}} {{.Status}} {{.Ports}}'

# Логи
docker logs mtproto-proxy 2>&1

# Порт слушается
ss -tlnp | grep <PORT>

# Ссылка для подключения (отображается в логах)
# https://t.me/proxy?server=<IP>&port=<PORT>&secret=<SECRET>

5. Генерация ссылки для подключения

Ссылка для Telegram вида:

https://t.me/proxy?server=<SERVER_IP>&port=<PORT>&secret=<SECRET>

Если секрет с ee (Fake TLS), Telegram сам определит тип и подключится с маскировкой.

Ротация секрета

docker rm -f mtproto-proxy
MTP_SECRET=$(echo -n 'ee' && head -c 15 /dev/urandom | xxd -ps)
MTP_TAG=$(head -c 16 /dev/urandom | xxd -ps)

docker run -d --name mtproto-proxy \
  --restart unless-stopped \
  -p <PORT>:<PORT> \
  -e MTP_PORT=<PORT> \
  -e MTP_SECRET=$MTP_SECRET \
  -e MTP_TAG=$MTP_TAG \
  seriyps/mtproto-proxy

Pitfalls

  1. Переменные окружения — MTP_*, а не SECRET/TAG. Скрипт start.sh читает MTP_PORT, MTP_SECRET, MTP_TAG. Если передать SECRET=d3ff9c..., контейнер запустится с дефолтным секретом из sys.config (d0d6e111bada5511fcce9584deadbeef), а не с твоим.

  2. Порт внутри контейнера — 1443 по умолчанию. Если не задать MTP_PORT, контейнер слушает на 1443 внутри. При маппинге -p 2053:1443 надо указывать порт 1443 справа, а не 2053.

  3. Порт в маппинге должен совпадать с MTP_PORT. Если MTP_PORT=2053, то маппинг должен быть -p 2053:2053. Иначе порты не совпадут.

  4. Fake TLS секрет: должен начинаться на ee (32 hex символа). Telegram на клиенте сам определяет тип секрета по префиксу.

  5. Не занимать порты XRay: если на сервере уже стоит XRay Reality на 443/8443, выбирай другой порт.

  6. Firewall: если включён ufw/iptables, не забудь открыть порт.

  • networking-proxy — umbrella для всех прокси/туннелей (XRay, AmneziaWG, Shadowsocks)
  • hermes-agent — для управления конфигом агента