Skip to content

Установка Telegram MTProto прокси в Docker

В этом руководстве мы рассмотрим развёртывание официального MTProto прокси-сервера Telegram с помощью Docker. MTProto прокси использует нативный протокол Telegram, что делает его быстрым и надёжным способом доступа к Telegram в условиях ограниченных сетей или активных блокировок.

Что такое MTProto Proxy

MTProto Proxy - это собственный прокси протокол Telegram, специально разработанный для этой платформы. В отличие от стандартных SOCKS5 или HTTP прокси, MTProto создан исключительно для трафика Telegram и обладает рядом преимуществ:

  • Нулевая конфигурация - официальный Docker-образ настраивает всё автоматически
  • Поддержка нативного протокола - не требуется дополнительное ПО на стороне клиента, достаточно вставить ссылку в Telegram
  • Обфускация - трафик зашифрован, и его сложнее обнаружить по сравнению с обычными SOCKS или HTTP прокси
  • Многопользовательский режим - один прокси-сервер может обслуживать десятки тысяч одновременных подключений
  • Спонсорские каналы - вы можете продвигать свой канал среди всех пользователей вашего прокси

Подсказка

Клиентам хостинга Senko Digital доступна полностью автоматическая установка MTProto прокси при первоначальном заказе услуги или через опцию «Запустить скрипт» в панели управления виртуальным сервером.

Требования

  • VPS-сервер с Linux (в примере используется Ubuntu 24)
  • root или sudo доступ в системе
  • Установленный и запущенный Docker
  • Открытый порт 443 (или другой выбранный вами порт) в брандмауэре

TIP

Если вы ещё не установили Docker, следуйте инструкции из нашего руководства по WireGuard Easy - процесс установки одинаковый.

Установка

Автоматическая установка для клиентов хостинга

Поддерживаемые операционные системы: Debian 11, Debian 12, Debian 13, Ubuntu 20.04, Ubuntu 22.04, Ubuntu 24.04.

При заказе услуги

В меню заказа через выпадающее меню выберите опцию «MTProto», завершите заказ и дождитесь окончания обработки услуги.

Выбор скрипта MTProto при заказе сервера в личном кабинете

Сразу после активации сервера вы получите письмо со ссылками для подключения к MTProto прокси и инструкциями.

Через панель управления ВМ

Перейдите в панель управления ВМ, перейдите в управление нужным сервером, в правом верхнем углу раскройте «Меню» и выберите опцию «Запустить скрипт».

Открытие опции «Запустить скрипт» в меню панели управления ВМ

В диалоге выберите «MTProto» и включите опцию «Отправить письмо, которое привязано к скрипту».

Мастер запуска скрипта с выбранным MTProto и включённым уведомлением по email

По окончанию установки вы получите письмо со ссылкой для подключения к MTProto прокси.

Что устанавливается

Скрипт разворачивает официальный MTProto прокси Telegram в Docker. Контейнер автоматически генерирует секретную фразу и ссылки для подключения без какой-либо дополнительной настройки.

После установки вы получаете:

  • connection-info.txt — содержит ссылку tg://, веб-ссылку t.me, секретную фразу, IP сервера и порт

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

  1. Откройте ссылку t.me из connection-info.txt в любом браузере — Telegram автоматически предложит включить прокси
  2. Или: в Telegram перейдите в Настройки → Продвинутые настройки → Тип соединения → Использовать прокси → MTProto и введите IP сервера, порт и секретную фразу вручную

Брандмауэр

Скрипт настраивает достаточно ограниченный брандмауэр — открыты только лишь порты SSH и MTProto (443/tcp). Весь остальной входящий трафик по умолчанию блокируется.

Ежедневный перезапуск в 04:00 UTC автоматически обновляет IP-адреса ядра Telegram.

Управление сервером

bash
cd /opt/mtproto-docker && docker compose up -d    # запуск
cd /opt/mtproto-docker && docker compose down      # остановка
cd /opt/mtproto-docker && docker compose logs -f   # логи
docker logs mtproto_proxy                          # просмотр ссылок для подключения

Ручная установка

Установка Docker

Если Docker ещё не установлен, проще всего воспользоваться официальным скриптом установки:

bash
curl -sSL https://get.docker.com/ | CHANNEL=stable bash

Скрипт автоматически определит ваш дистрибутив Linux и установит последнюю стабильную версию Docker.

Развёртывание MTProto Proxy

Базовое развёртывание

Простейший способ запустить прокси одной командой:

bash
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

Эта команда:

  • Запускает контейнер в фоновом режиме (-d)
  • Пробрасывает порты между сетью контейнера и вашим сервером
  • Присваивает контейнеру название mtproto-proxy для более удобной навигации
  • Автоматически перезапускает контейнер при остановке или перезагрузке сервера
  • Сохраняет конфигурацию (включая секрет) в volume контейнера

Получение ссылок для подключения

После запуска контейнера проверьте логи, чтобы получить актуальные ссылки для подключения:

bash
docker logs mtproto-proxy

Вы увидите вывод, похожий на этот:

[+] No secret passed. Will generate 1 random ones.
[+] Saving generated secret to /data/secret.
[*] Final configuration:
[*]   Secret 1: 00baadf00d15abad1deaa515baadcafe
[*]   tg:// link for secret 1 auto configuration: tg://proxy?server=YOUR_IP&port=443&secret=00baadf00d15abad1deaa515baadcafe
[*]   t.me link for secret 1: https://t.me/proxy?server=YOUR_IP&port=443&secret=00baadf00d15abad1deaa515baadcafe
[*]   Tag: no tag
[*]   External IP: YOUR_IP

Скопируйте ссылку tg:// или t.me и вставьте её в Telegram на любом устройстве - прокси настроится автоматически.

WARNING

Убедитесь, что IP-адрес в ссылке совпадает с публичным IP вашего сервера. Если прокси работает за NAT, ссылки может потребоваться исправить вручную.

Пользовательская конфигурация

Установка своей секретной фразы

Если вы хотите использовать собственную секретную фразу (достаточно полезно при развёртывании нескольких прокси для балансировки нагрузки), вы можете передать её в виде переменной при запуске контейнера. Секретная фраза должна быть ровно 16 байт в шестнадцатеричном формате и быть в нижнем регистре (32 символа).

Сгенерировать случайную секретную фразу можно командой:

bash
openssl rand -hex 16

Затем передайте её в виде переменной контейнеру:

bash
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  -e SECRET=00baadf00d15abad1deaa515baadcafe \
  telegrammessenger/proxy:latest

Несколько секретных фраз

Прокси поддерживает до 16 различных секретных фраз. Вы можете указать их явно через запятую или позволить контейнеру сгенерировать указанное количество секретных фраз:

bash
# Явное указание нескольких секретных фраз
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  -e SECRET=935ddceb2f6bbbb78363b224099f75c8,2084c7e58d8213296a3206da70356c81 \
  telegrammessenger/proxy:latest
bash
# Автоматическая генерация 4 секретных фраз
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  -e SECRET_COUNT=4 \
  telegrammessenger/proxy:latest

Использование другого порта

Вы можете пробросить любой другой порт с вашего сервера на внутренний порт контейнера 443. Например, чтобы использовать порт 8443 для прокси:

bash
docker run -d \
  -p 8443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

WARNING

При изменении внешнего порта также необходимо вручную обновить номер порта в ссылках tg:// и t.me из логов контейнера.

Добавление тега спонсорского канала

Вы можете зарегистрировать свой прокси в Telegram-боте @MTProxybot и получить тег для продвижения своего канала. Этот тег позволяет показывать спонсорский канал всем пользователям, подключённым через ваш прокси:

bash
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  -e TAG=3f40462915a3e6026a4d790127b95ded \
  telegrammessenger/proxy:latest

TIP

Тег не сохраняется между перезапусками - его нужно передавать как переменную при каждом пересоздании контейнера. Секрет, напротив, сохраняется в volume контейнера и никогда не теряется.

Настройка количества воркеров

Один рабочий процесс (воркер) способен обслуживать десятки тысяч подключений. По умолчанию прокси запускает 2 воркера с лимитом 60 000 соединений на один поток. Если вы ожидаете высокую нагрузку на ваше прокси, рекомендуем увеличить количество воркеров:

bash
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  -e WORKERS=16 \
  telegrammessenger/proxy:latest

Открытие порта в брандмауэре

Если вы используете UFW (Uncomplicated Firewall), разрешите трафик на порту прокси:

bash
# Для порта 443 по умолчанию
sudo ufw allow 443/tcp

# Для кастомного порта (например, 8443)
sudo ufw allow 8443/tcp

Регистрация прокси в Telegram

Для получения доступа к статистике использования и опциональной рекламы:

  1. Откройте Telegram и найдите бота @MTProxybot
  2. Отправьте команду /newproxy
  3. Укажите IP-адрес и порт вашего сервера
  4. Укажите секрет вашего прокси
  5. Бот выдаст вам тег - используйте его с переменной окружения TAG, как показано выше

Подключение клиентов

На мобильных устройствах (Android / iOS)

  1. Откройте ссылку tg:// или t.me из логов контейнера в браузере
  2. Telegram откроется и предложит включить прокси
  3. Нажмите Подключить

На компьютере (Telegram Desktop)

  1. Откройте ссылку tg:// или t.me
  2. Telegram Desktop предложит добавить прокси
  3. Нажмите Включить

Ручная настройка

Если вы предпочитаете настроить прокси вручную:

  1. Перейдите в Настройки > Продвинутые настройки > Тип соединения > Использовать собственный прокси
  2. Выберите MTProto
  3. Введите IP-адрес сервера, порт и секретную фразу
  4. Нажмите Сохранить и затем Подключиться

Управление контейнером

Основные команды

bash
# Просмотр статуса контейнера
docker ps -a | grep mtproto-proxy

# Просмотр логов
docker logs mtproto-proxy

# Просмотр логов в реальном времени
docker logs -f mtproto-proxy

# Остановка прокси
docker stop mtproto-proxy

# Запуск прокси
docker start mtproto-proxy

# Перезапуск прокси
docker restart mtproto-proxy

# Удаление контейнера (данные сохраняются в volume контейнера)
docker rm -f mtproto-proxy

Обновление прокси

Для обновления до последней версии:

bash
# Скачать последнюю доступную версию Docker образа
docker pull telegrammessenger/proxy:latest

# Удалить старый контейнер
docker rm -f mtproto-proxy

# Запустить новый контейнер (секрет сохраняется в volume контейнера)
docker run -d \
  -p 443:443 \
  --name=mtproto-proxy \
  --restart=always \
  -v proxy-config:/data \
  telegrammessenger/proxy:latest

Мониторинг

Прокси предоставляет внутреннюю статистику по адресу http://localhost:2398/stats внутри контейнера.

Для просмотра статистики выполните:

bash
docker exec mtproto-proxy curl http://localhost:2398/stats

Ключевые метрики:

МетрикаОписание
ready_targetsКоличество серверов Telegram, к которым прокси попытается подключиться
active_targetsКоличество серверов Telegram, к которым прокси подключён (должно совпадать с ready_targets)
total_special_connectionsКоличество текущих подключённых клиентов
total_max_special_connectionsМаксимально допустимое количество подключений (60 000 x количество воркеров)

Автоматический ежедневный перезапуск

Прокси получает IP-адреса серверов Telegram при запуске. Эти адреса всегда могут меняться, поэтому рекомендуется перезапускать контейнер раз в сутки для актуализации списка IP:

bash
# Открыть редактор crontab
crontab -e

Добавьте следующую строку для перезапуска прокси каждый день в 4:00 утра (по локальному времени настроенном в сервере):

0 4 * * * docker restart mtproto-proxy

Решение проблем

Клиенты зависают на подключении

Это означает, что клиенты не могут достучаться до вашего прокси-сервера. Проверьте следующее:

  • Брандмауэр: убедитесь, что порт прокси (443 или ваш пользовательский порт) открыт
    bash
    sudo ufw status
  • Проброс портов Docker: убедитесь, что контейнер запущен и порт проброшен корректно
    bash
    docker ps
  • Сетевые ограничения: некоторые сети могут блокировать порт 443 для не-HTTPS трафика. Попробуйте использовать другой порт

Клиенты зависают на обновлении

Это означает, что прокси не может подключиться к серверам ядра Telegram. Проверьте:

  • Исходящий брандмауэр: убедитесь, что ваш сервер может устанавливать исходящие соединения
    bash
    curl -I https://telegram.org
  • Системное время: прокси требует, чтобы системные часы были в пределах 5 секунд от UTC. Установите и включите синхронизацию времени:
    bash
    sudo apt install systemd-timesyncd
    sudo timedatectl set-ntp true
    timedatectl status
  • Перезапустите контейнер: IP-адреса серверов Telegram могли измениться с момента запуска контейнера
    bash
    docker restart mtproto-proxy

Контейнер сразу завершается

Проверьте логи контейнера на наличие ошибок:

bash
docker logs mtproto-proxy

Частые причины:

  • Порт 443 уже занят другим сервисом (например, Nginx, Apache)
  • Docker-том повреждён - попробуйте удалить его и начать заново:
    bash
    docker rm -f mtproto-proxy
    docker volume rm proxy-config
    # Затем снова выполните команду docker run

Заключение

Развёртывание MTProto прокси с Docker - это очень даже простой процесс. Одна команда - и у вас уже есть полноценный, рабочий прокси сервер. Не забывайте перезапускать контейнер раз в сутки и поддерживать систему в актуальном состоянии для надёжной работы.

Если у вас возникнут вопросы, вы всегда можете обратиться в нашу службу поддержки.

Авторы статьи

Загрузка авторов...