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 - это очень даже простой процесс. Одна команда - и у вас уже есть полноценный, рабочий прокси сервер. Не забывайте перезапускать контейнер раз в сутки и поддерживать систему в актуальном состоянии для надёжной работы.

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

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

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