Языки программирования
Как создать свой MTProto-прокси для Telegram на VPS
Эта инструкция помогает создать собственный MTProto proxy только для Telegram. Цель — работающий сервер на VPS и персональная ссылка подключения с IP, портом и секретом
Для запуска нужны VPS с Linux, SSH-доступ, Docker Compose и возможность открыть выбранный TCP-порт. Это не список публичных прокси и не VPN для всего интернет-трафика
Важно: не запускайте прокси на чужом сервере и не публикуйте секрет в открытом доступе. Если секрет станет известен посторонним, они смогут использовать ваш прокси
Что именно создаем и когда этот вариант подходит
MTProto proxy работает только для Telegram. Клиент Telegram подключается к вашему VPS по IP и выбранному порту, где запущен MTProto proxy, который пересылает трафик в Telegram
VPN перенаправляет трафик всей системы, а MTProto proxy работает только для Telegram. Поэтому собственный proxy проще для Telegram, когда не нужен общий маршрут для остальных приложений. Если требуется готовый публичный прокси, эта инструкция тоже не подходит
Подготовка VPS и проверка порта
- Подключитесь к VPS по SSH.
- Убедитесь, что Docker и Docker Compose установлены.
- Выберите порт для proxy, например, 443 или 8443. Порт 443 удобен, но может быть занят веб-сервером.
- Откройте выбранный порт в firewall Linux:
sudo ufw allow 8443/tcp
sudo ufw enable
- Если VPS в облаке, проверьте правила безопасности в панели управления провайдера — часто внешний firewall блокирует порт.
- Проверьте доступность порта с другого компьютера:
nc -vz YOUR_SERVER_IP 8443
В контрольном прогоне в изолированной локальной сети порт контейнера дополнительно проверен с отдельной Windows-машины. Этот тест не подтверждает доступность публичного VPS из интернета:

Значение TcpTestSucceeded: True подтверждает сетевую доступность тестового порта между двумя компьютерами. Для VPS повторите ту же проверку из внешней сети по публичному адресу сервера.
Если порт закрыт, проверьте настройки Docker, firewall Linux и панель провайдера
Проверенный запуск MTProto proxy через Docker Compose
Контрольный запуск выполнен 20 июля 2026 года локально на Docker 29.2.0. Использован официальный образ telegrammessenger/proxy:1.4, digest sha256:73210d43c8f8e4c888ba4e30d6daf7742528e9134252a1cd538caabf5e24a597. Этот прогон подтверждает команды и работу контейнера, но не заменяет проверку на чистом публичном VPS
Официальный репозиторий помечает Docker-образ как устаревший. Тег
1.4здесь фиксирует воспроизведённый прогон, но перед установкой на VPS нужно сверить его состояние в registry и не заменять автоматически наlatest
- Создайте каталог проекта и перейдите в него:
mkdir telegram-proxy
cd telegram-proxy
- Создайте
docker-compose.ymlс проверенным явным тегом:
services:
mtproxy:
image: telegrammessenger/proxy:1.4
restart: unless-stopped
ports:
- "8443:443"
volumes:
- mtproxy-data:/data
volumes:
mtproxy-data:
- Запустите контейнер:
docker compose up -d
- Проверьте состояние контейнера:
docker compose ps
Ожидаемое состояние — Up, а в колонке портов виден проброс 8443->443/tcp. В локальном проверочном прогоне использовался внешний порт 18443:

Контейнер запущен из проверенного тега 1.4; внешний тестовый порт отличается от примера для VPS.
- Получите секрет и ссылку из логов:
docker compose logs mtproxy
Проверенный обезличенный фрагмент выглядит так:
[*] Secret 1: <REDACTED_SECRET>
[*] tg:// link: tg://proxy?server=<REDACTED_IP>&port=<CONTAINER_REPORTED_PORT>&secret=<REDACTED_SECRET>
[+] Starting proxy...
configuration file ... re-read successfully
main loop
Параметр port в ссылке должен совпадать с внешним портом, то есть с левой частью проброса в Compose-файле. Для строки 8443:443 используйте port=8443, даже если образ вывел внутренний port=443
Подключение Telegram и проверка результата
- Используйте маскированный формат ссылки, фактически полученный из логов тестового контейнера, и замените параметры своими данными:
tg://proxy?server=<SERVER_IP>&port=8443&secret=<SECRET>
Проверьте, что ссылка, полученная из логов контейнера, содержит внешний IP VPS, опубликованный порт и сгенерированный секрет
- Откройте ссылку на той платформе Telegram, на которой будете использовать proxy, и подтвердите добавление.
- Включите proxy и проверьте отправку и получение сообщения.
- Перезапустите контейнер командой
docker compose restart mtproxy, затем повторите проверку клиента.
Контрольный чек-лист:
Ожидаемые состояния для приёмки читаются однозначно: контейнер работает, порт открыт, Telegram подключается, секрет сохранён отдельно
- Подтвердите, что контейнер работает и после перезапуска имеет статус
Up. - Подтвердите, что порт открыт и доступен извне, а не только внутри VPS.
- Подтвердите, что Telegram подключается через MTProto proxy и передает сообщения.
- Убедитесь, что секрет сохранён отдельно от общедоступной инструкции.
Секрет храните отдельно от общедоступной инструкции. На скриншотах и при передаче результата скрывайте IP, секрет, токены и данные VPS
Диагностика: если proxy не работает
| Симптом | Что проверить | Ожидаемое состояние | Следующее действие |
|---|---|---|---|
| Контейнер не запущен | docker compose ps |
Контейнер в статусе Up |
Перезапустить контейнер и проверить логи |
| Порт закрыт | Firewall Linux и правила провайдера | Порт доступен извне | Открыть порт в firewall и панели провайдера |
| Порт занят другим процессом | Занятость внешнего порта | Порт свободен | Освободить порт или выбрать другой |
| Ссылка или секрет не получены | Логи контейнера | Секрет и ссылка присутствуют | Проверить конфигурацию и перезапустить контейнер |
| Telegram не подключается | IP, внешний порт и секрет в Telegram | Proxy включён, сообщения передаются | Исправить параметры и повторить подключение |

В проверочном прогоне повторная публикация порта 18443 завершилась сообщением port is already allocated. В этом случае освободите порт или измените левую часть проброса в Compose-файле.
Безопасность, обновление и резервный план
- Не публикуйте секрет в открытых каналах и не передавайте его посторонним.
- Обновляйте контейнер регулярно:
docker compose pull
docker compose up -d
- После обновления проверяйте логи контейнера и подключение клиента, чтобы убедиться, что proxy работает корректно.
- Следите за нагрузкой VPS и ограничьте доступ к SSH по ключам.
- Храните инструкцию восстановления рядом с проектом.
- Резервный план восстановления:
- Установить Docker
- Скопировать
docker-compose.yml - Открыть порт
- Запустить контейнер
- Проверить ссылку подключения
- Обновить DNS, если используется домен
Если секрет утёк, создайте новый proxy с новым секретом и прекратите использовать старый
Чтобы восстановить proxy, верните последний проверенный Compose-файл, откройте тот же внешний порт и повторите контрольный чек-лист