К содержимому

Свой прокси для Telegram (MTProxy) на VPS

MTProxy — прокси-сервер для Telegram: приложение подключается через ваш VPS по ссылке tg://proxy, а режим FakeTLS выдаёт подключение за TLS-соединение с обычным сайтом. Три способа поднять свой: одной командой, пошагово в Docker или официальный MTProxy.

Обновлено

Что такое MTProxy

MTProxy (MTProto Proxy) — прокси, который работает с собственным протоколом Telegram MTProto. Через него идёт только Telegram: ссылку tg://proxy или t.me/proxy открывают в приложении, и оно подключается к серверам Telegram через ваш VPS. Остальной трафик устройства идёт как обычно.

Секрет из ссылки — пароль для клиентов. В режиме FakeTLS он начинается с «ee», а в его конце зашит домен сайта-прикрытия: подключение выглядит как TLS-соединение с этим сайтом. Если на сервер приходит не клиент Telegram, mtg передаёт запрос настоящему сайту, и посторонний видит его ответ. mtg v2 работает только в режиме FakeTLS.

SOCKS5, VPN и MTProxy
ЧтоSOCKS5VPNMTProxy
Что идёт через серверПриложения с поддержкой SOCKS5, в том числе TelegramВесь трафик устройстваТолько Telegram
Как подключитьсяСсылка tg://socks или настройки приложенияОтдельное приложение и конфигСсылка tg://proxy или t.me/proxy прямо в Telegram
МаскировкаНет: рукопожатие идёт открытым текстомЗависит от протоколаFakeTLS: похоже на TLS-соединение с сайтом
ДоступБез пароля или логин и парольКлюч или конфиг на каждое устройствоОдин секрет на всех (mtg)

Для всего трафика устройства нужен VPN — например, AmneziaWG или панель 3x-ui. Для одного Telegram MTProxy проще: на телефон ничего ставить не нужно.

Какой VPS нужен

mtg почти не требует ресурсов: автор рассчитывает его на 10–20 тысяч одновременных подключений. Требования — из карточки MTProto Proxy в нашей библиотеке.

Система
Ubuntu 22.04 / 24.04 или Debian 12 — все три есть в нашем каталоге ОС
Ресурсы
1 vCPU, 1 ГБ RAM и 10 ГБ диска
Сеть
Свой публичный IPv4 у каждого VPS, IPv6 /64 — бесплатно, трафик без ограничений по объёму
Порт
Свободный TCP-порт для клиентов, обычно 443
Платформа
Виртуализация KVM — все наши VPS на KVM

Подходящие тарифы

Самые дешёвые тарифы под минимум MTProto Proxy из нашей библиотеки (1 vCPU, 1 ГБ RAM, 10 ГБ) в локациях, где сейчас есть серверы.

  • 1 vCPU, 2 ГБ RAM, 10 ГБ

    NL-R9-1

    Нидерланды, Амстердам

    $3.32/мес

    $0.12 за 24 часа · $0.83 за 7 дней

    Процессор
    1 × vCPU Ryzen 9950x
    Память
    2 ГБ DDR5
    Диск
    10 ГБ NVMe
    Порт
    10 Гбит⁠/⁠с
    Заказать этот тариф

    MTProto Proxy ставится вручную: команда установки — ниже на странице.

  • 1 vCPU, 2 ГБ RAM, 10 ГБ

    DE-R9-1

    Германия, Франкфурт

    $3.14/мес

    $0.11 за 24 часа · $0.79 за 7 дней

    Процессор
    1 × vCPU Ryzen 9950x
    Память
    2 ГБ DDR5
    Диск
    10 ГБ NVMe
    Порт
    25 Гбит⁠/⁠с
    Заказать этот тариф

    MTProto Proxy ставится вручную: команда установки — ниже на странице.

  • 1 vCPU, 2 ГБ RAM, 10 ГБ

    PL-R9-1

    Польша, Варшава

    Дешевле всего

    $2.79/мес

    $0.10 за 24 часа · $0.70 за 7 дней

    Процессор
    1 × vCPU Ryzen 9950x
    Память
    2 ГБ DDR5
    Диск
    10 ГБ NVMe
    Порт
    5 Гбит⁠/⁠с
    Заказать этот тариф

    MTProto Proxy ставится вручную: команда установки — ниже на странице.

  • 1 vCPU, 2 ГБ RAM, 10 ГБ

    EE-R9-1

    Эстония, Таллин

    $4.34/мес

    $0.16 за 24 часа · $1.09 за 7 дней

    Процессор
    1 × vCPU Ryzen 9950x3d
    Память
    2 ГБ DDR5
    Диск
    10 ГБ NVMe
    Порт
    10 Гбит⁠/⁠с
    Заказать этот тариф

    MTProto Proxy ставится вручную: команда установки — ниже на странице.

Порт в Германии — 25 Гбит⁠/⁠с, в Польше — 5 Гбит⁠/⁠с; минимальный тариф там дороже на $0.35 в месяц. Трафик везде без ограничений по объёму.

MTProxy одной командой

Отдельного скрипта MTProxy в нашем боте нет: сервер заказывается в боте, а прокси ставится одной командой по SSH. Это команда из карточки MTProto Proxy в библиотеке: она поставит Docker, если его нет, создаст секрет FakeTLS для google.com, запишет конфиг /etc/mtg.toml и запустит контейнер nineseconds/mtg:2 на порту 443 с автоперезапуском.

  1. 01

    Закажите VPS

    Кнопка на этой странице откроет бота с самым дешёвым подходящим тарифом. Выберите Ubuntu 22.04, 24.04 или Debian 12 и оплатите сервер — IP-адрес и пароль root придут в чат.

  2. 02

    Подключитесь по SSH

    Код
    ssh root@SERVER_IP
  3. 03

    Запустите команду

    Порт 443 должен быть свободен. Если на сервере уже есть сайт, сначала прочитайте раздел о порте 443 ниже.

    Код
    command -v docker >/dev/null || curl -fsSL https://get.docker.com | sh; S=$(docker run --rm nineseconds/mtg:2 generate-secret --hex google.com) && printf 'secret = "%s"\nbind-to = "0.0.0.0:3128"\n' "$S" > /etc/mtg.toml && docker run -d -v /etc/mtg.toml:/config.toml -p 443:3128 --name mtg-proxy --restart=unless-stopped nineseconds/mtg:2
  4. 04

    Получите ссылку

    Команда выведет JSON со ссылками tg_url и tme_url и QR-кодами к ним. Флаг -p 443 обязателен: внутри контейнера mtg слушает порт 3128 и без флага подставит в ссылку его.

    Код
    docker exec mtg-proxy /mtg access -p 443 /config.toml
  5. 05

    Смените домен FakeTLS

    google.com — пример из документации mtg. Автор советует домен, связанный с IP вашего сервера: как выбрать и сменить его — в разделе о домене ниже.

Пошагово: Docker и mtg v2

mtg — лёгкий прокси на Go без учёта пользователей: один секрет на всех. Обязательных настроек две — secret и bind-to, у остальных разумные значения по умолчанию; полный список — example.config.toml в репозитории. Команды выполняются под root.

  1. 01

    Поставьте Docker

    Скрипт get.docker.com ставит Docker Engine одной командой. Сама Docker называет его вариантом для быстрой установки, а для продакшена советует репозиторий apt.

    Код
    curl -fsSL https://get.docker.com | sh
  2. 02

    Создайте секрет

    Секрет — пароль клиентов, держите его в тайне. В hex-виде он начинается с ee, дальше идут ключ и домен FakeTLS. Вместо DOMAIN подставьте домен — о выборе ниже.

    Код
    docker run --rm nineseconds/mtg:2 generate-secret --hex DOMAIN
  3. 03

    Запишите конфиг

    Сохраните в /etc/mtg.toml. Внутри контейнера mtg слушает порт 3128, наружу его опубликует Docker. В bind-to — только IP-адрес: имена хостов и * mtg не принимает.

    Код
    secret = "SECRET"
    bind-to = "0.0.0.0:3128"
  4. 04

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

    443 — порт, к которому подключаются клиенты, 3128 — порт из bind-to. Тег 2 — текущая мажорная версия: автор советует не брать latest и stable.

    Код
    docker run -d -v /etc/mtg.toml:/config.toml -p 443:3128 --name mtg-proxy --restart=unless-stopped nineseconds/mtg:2
  5. 05

    Проверьте настройку

    mtg doctor проверяет расхождение часов, связь с дата-центрами Telegram, доступность сайта-прикрытия и совпадение DNS домена с IP сервера (SNI-DNS). С чужим доменом последняя проверка не пройдёт — это ожидаемо.

    Код
    docker exec mtg-proxy /mtg doctor /config.toml
  6. 06

    Получите ссылки

    -p — порт, опубликованный наружу: без флага mtg подставит в ссылку 3128 из bind-to. Публичный IP mtg узнаёт у ifconfig.co; если адрес неверный, впишите его в конфиг строкой public-ipv4.

    Код
    docker exec mtg-proxy /mtg access -p 443 /config.toml

Официальный MTProxy и рекламный тег

У mtg v2 нет рекламного тега: автор убрал его намеренно. Тег продвигаемого канала выдаёт бот @MTProxybot, а поддерживает его официальный MTProxy от Telegram. Он собирается из исходников: официальный Docker-образ, по словам README, устарел.

  1. 01

    Соберите прокси

    Бинарник появится в objs/bin/mtproto-proxy. Если сборка упала, перед повторной выполните make clean.

    Код
    apt install git curl build-essential libssl-dev zlib1g-dev
    git clone https://github.com/TelegramMessenger/MTProxy
    cd MTProxy
    make && cd objs/bin
  2. 02

    Скачайте ключ и конфиг Telegram

    Конфиг серверов Telegram иногда меняется — README советует обновлять его раз в сутки. Третья команда создаёт секрет для клиентов.

    Код
    curl -s https://core.telegram.org/getProxySecret -o proxy-secret
    curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf
    head -c 16 /dev/urandom | xxd -ps
  3. 03

    Запустите прокси

    -H 443 — порт для клиентов, -p 8888 — локальный порт статистики (wget localhost:8888/stats, только с самого сервера), -M 1 — число воркеров. Для постоянной работы README приводит пример юнита systemd.

    Код
    ./mtproto-proxy -u nobody -p 8888 -H 443 -S USER_SECRET --aes-pwd proxy-secret proxy-multi.conf -M 1
  4. 04

    Зарегистрируйте прокси в @MTProxybot

    Бот выдаст тег — добавьте его к команде запуска аргументом -P PROXY_TAG. Ссылка для клиентов: tg://proxy?server=SERVER_IP&port=443&secret=USER_SECRET, её может сгенерировать и бот. С префиксом dd у секрета клиент включает случайную добивку пакетов.

Как подключиться и раздать прокси

Ссылка из mtg access открывается в любом приложении Telegram. Она одна на всех: в mtg нет учёта пользователей, поэтому отозвать доступ можно только сменой секрета.

  1. 01

    Откройте ссылку

    tg://proxy?… открывается сразу в приложении, https://t.me/proxy?… — через браузер, её удобно пересылать в чатах. Telegram предложит подключить прокси.

  2. 02

    Или отсканируйте QR-код

    В выводе есть tg_qrcode и tme_qrcode — ссылки на картинку с QR-кодом. Её рисует сторонний сервис api.qrserver.com, и секрет уходит ему в адресе. Если это важно, сделайте QR-код из ссылки сами.

  3. 03

    Или добавьте вручную

    В настройках прокси Telegram выберите MTProto и введите сервер (IP или домен), порт и секрет — те же три параметра, что в ссылке.

  4. 04

    Раздавайте узкому кругу

    Автор mtg советует делиться прокси с семьёй и друзьями и не публиковать его открыто: публичные прокси первыми блокируют по IP. Если ссылка ушла не туда, смените секрет — старая перестанет работать.

  5. 05

    Нужны разные ссылки

    Официальный MTProxy принимает несколько секретов (-S несколько раз). Для mtg с несколькими секретами автор указывает форк mtg-multi.

Домен FakeTLS: какой выбрать и как сменить

Домен зашит в секрет: под него клиент маскирует TLS-рукопожатие, а посторонние запросы mtg передаёт этому сайту. google.com в документации — только пример: по словам автора mtg, провайдеры легко видят, что IP сервера не принадлежит Google.

  1. 01

    Выберите домен

    README mtg советует домен, связанный с IP сервера. Надёжнее всего, по рекомендациям автора, свой домен: его A-запись указывает на VPS, там работает сайт с сертификатом Let’s Encrypt, а mtg стоит перед веб-сервером. Тогда DNS и SNI совпадают — это и проверяет mtg doctor. Адрес сайта за mtg задаёт секция [domain-fronting] (host и port).

  2. 02

    Создайте новый секрет

    Код
    docker run --rm nineseconds/mtg:2 generate-secret --hex DOMAIN
  3. 03

    Замените секрет и перезапустите

    Впишите новый секрет в /etc/mtg.toml. Старые ссылки перестанут работать — разошлите новые из mtg access.

    Код
    docker restart mtg-proxy
    docker exec mtg-proxy /mtg access -p 443 /config.toml

Порт 443 и сайт на том же сервере

Один порт слушает одна программа. Если на 443 уже работает nginx или другой веб-сервер, Docker не сможет опубликовать на нём прокси — займите под прокси другой порт или поставьте mtg перед сайтом.

  1. 01

    Проверьте, кто занял порт

    Команда покажет процесс, который слушает TCP-порт 443.

    Код
    ss -tlnp | grep ':443 '
  2. 02

    Опубликуйте прокси на другом порту

    Например, на 8443: -p 8443:3128 при запуске контейнера и -p 8443 в mtg access — тогда этот порт попадёт в ссылку.

    Код
    docker rm -f mtg-proxy
    docker run -d -v /etc/mtg.toml:/config.toml -p 8443:3128 --name mtg-proxy --restart=unless-stopped nineseconds/mtg:2
    docker exec mtg-proxy /mtg access -p 8443 /config.toml
  3. 03

    Или поставьте mtg перед сайтом

    mtg занимает 443, а сайт переезжает на другой порт; в [domain-fronting] укажите его адрес и порт, и посторонние запросы mtg отдаст сайту. Так устроена схема со своим доменом из раздела выше.

Обновление mtg

Конфиг лежит на сервере в /etc/mtg.toml, поэтому контейнер можно пересоздать без потери секрета — ссылки останутся прежними.

  1. 01

    Скачайте образ и пересоздайте контейнер

    Код
    docker pull nineseconds/mtg:2
    docker rm -f mtg-proxy
    docker run -d -v /etc/mtg.toml:/config.toml -p 443:3128 --name mtg-proxy --restart=unless-stopped nineseconds/mtg:2
  2. 02

    Перед переходом на 2.3.0

    С версии 2.3.0 (3 ноября 2026) опции domain-fronting-ip и [domain-fronting].ip игнорируются — замените их на [domain-fronting].host. Секрет менять не нужно. При старте mtg теперь сам проверяет DNS/SNI и публичный IP: предупреждения запуск не останавливают.

Частые ошибки MTProxy

  • Docker пишет, что порт 443 занят

    На 443 уже работает веб-сервер или другой прокси. Найдите его командой ss -tlnp | grep ':443 ' и опубликуйте mtg на другом порту или поставьте mtg перед сайтом.

  • Ссылка из mtg access не подключается

    Проверьте порт в ссылке: без флага -p mtg подставляет 3128 из bind-to, а Docker публикует наружу другой. Запустите mtg access с опубликованным портом, например -p 443.

  • В ссылке не тот IP

    mtg узнаёт публичный IP у ifconfig.co. Если сервис недоступен или ответил не тем адресом, впишите public-ipv4 в /etc/mtg.toml или передайте адрес флагом -i команде mtg access.

  • Прокси не отвечает, хотя контейнер запущен

    Запустите mtg doctor: он покажет расхождение часов сверх tolerate-time-skewness, недоступные дата-центры Telegram и сайт-прикрытие. Проверьте и внешний файрвол — TCP-порт прокси должен быть открыт.

  • Старые ссылки перестали работать

    Сменился секрет — так бывает после смены домена FakeTLS. Разошлите новую ссылку из mtg access.

  • Предупреждение SNI-DNS при запуске

    Домен из секрета не указывает на IP сервера. С чужим доменом это ожидаемо и работе не мешает; чтобы DNS и SNI совпадали, нужен свой домен с A-записью на VPS.

  • После обновления: domain-fronting-ip игнорируется

    С версии 2.3.0 опция не действует. Замените domain-fronting-ip или [domain-fronting].ip на [domain-fronting].host — он принимает имя или IP.

  • Нужен рекламный тег, а в mtg его нет

    В mtg v2 тега нет. Поставьте официальный MTProxy и зарегистрируйте его в @MTProxybot; для прокси с тегом автор mtg советует ещё проект telemt.

Вопросы о прокси

Не нашли ответ? Пишите @ExpressHost_SupportBot.

Что такое MTProxy и чем он отличается от VPN?

MTProxy — прокси только для Telegram: приложение подключается к своим серверам через ваш VPS по ссылке tg://proxy. VPN пропускает через сервер весь трафик устройства и требует отдельного приложения. Для одного Telegram MTProxy проще: на телефон ничего ставить не нужно.

Как подключить прокси в Telegram?

Откройте ссылку tg://proxy или t.me/proxy на устройстве с Telegram или отсканируйте QR-код — приложение предложит подключить прокси. Вручную: в настройках прокси выберите MTProto и введите сервер, порт и секрет.

MTProto или SOCKS5 — что выбрать для Telegram?

Telegram поддерживает оба. Рукопожатие SOCKS5 идёт открытым текстом, а MTProxy в режиме FakeTLS выглядит как TLS-соединение с обычным сайтом и подключается по одной ссылке без логина и пароля. SOCKS5 пригодится, если тот же прокси нужен и другим приложениям.

Можно ли раздать прокси друзьям?

Да, ссылка одна на всех: в mtg нет учёта пользователей. Автор mtg советует делиться прокси с узким кругом и не публиковать его открыто — публичные прокси первыми блокируют по IP. Отозвать доступ можно только сменой секрета.

Можно ли добавить к прокси рекламный канал?

В mtg v2 — нет, автор убрал эту возможность. Рекламный тег выдаёт бот @MTProxybot для официального MTProxy от Telegram; для прокси с тегом автор mtg советует ещё проект telemt.

Какой VPS нужен для прокси Telegram?

Минимум из нашей библиотеки — 1 vCPU, 1 ГБ RAM и 10 ГБ диска: автор mtg рассчитывает его на 10–20 тысяч одновременных подключений. Все наши VPS на KVM; самый дешёвый подходящий тариф — 1 vCPU, 2 ГБ RAM и 10 ГБ NVMe за $2.79 в месяц в Польше.

Будет ли прокси работать, если на сервере есть сайт?

Да, если не делить с ним порт: опубликуйте прокси, например, на 8443 или поставьте mtg на 443 перед сайтом — посторонние запросы он передаст веб-серверу через секцию [domain-fronting].

Есть ли ограничения по трафику?

Трафик без ограничений по объёму, защита от DDoS есть. Скорость ограничена портом локации: в Нидерландах 10 Гбит/с, в Германии 25 Гбит/с, в Польше 5 Гбит/с, в Эстонии 10 Гбит/с.

Источники

Команды и шаги сверены с README и исходным кодом mtg, официальным MTProxy и документацией Telegram 3 ноября 2026. Установка одной командой — из карточки MTProto Proxy в нашей библиотеке.

Свой MTProxy — одной командой на VPS.