5.1 KiB
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. |
|
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 HTTPS10000— редко блокируется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
-
Переменные окружения —
MTP_*, а неSECRET/TAG. Скриптstart.shчитаетMTP_PORT,MTP_SECRET,MTP_TAG. Если передатьSECRET=d3ff9c..., контейнер запустится с дефолтным секретом из sys.config (d0d6e111bada5511fcce9584deadbeef), а не с твоим. -
Порт внутри контейнера — 1443 по умолчанию. Если не задать
MTP_PORT, контейнер слушает на 1443 внутри. При маппинге-p 2053:1443надо указывать порт 1443 справа, а не 2053. -
Порт в маппинге должен совпадать с MTP_PORT. Если
MTP_PORT=2053, то маппинг должен быть-p 2053:2053. Иначе порты не совпадут. -
Fake TLS секрет: должен начинаться на
ee(32 hex символа). Telegram на клиенте сам определяет тип секрета по префиксу. -
Не занимать порты XRay: если на сервере уже стоит XRay Reality на 443/8443, выбирай другой порт.
-
Firewall: если включён ufw/iptables, не забудь открыть порт.
Related Skills
networking-proxy— umbrella для всех прокси/туннелей (XRay, AmneziaWG, Shadowsocks)hermes-agent— для управления конфигом агента