Развертывание собственного MTProto Proxy (mtproto.zig)
Для обеспечения безопасного и стабильного обмена сообщениями в корпоративной среде часто требуется развернуть собственный узел связи для мессенджера Telegram. В этом руководстве мы рассмотрим установку современного и высокопроизводительного решения — mtproto.zig.
Почему именно mtproto.zig?
Существует множество реализаций протокола MTProto (на Python, Erlang, Go), но версия sleep3r/mtproto.zig выделяется благодаря языку программирования Zig. Это дает ряд уникальных преимуществ:
- Невероятная легкость: Размер скомпилированного бинарного файла составляет всего около 126 KB, а потребление оперативной памяти (RAM) находится на уровне ~120 KB. Сервис может работать даже на самых бюджетных и слабых VPS.
- Отсутствие зависимостей: Прокси компилируется статически и не требует установки тяжелых библиотек или виртуальных машин.
- Маскировка (Fake TLS 1.3): Прокси маскирует MTProto-трафик под стандартные HTTPS (TLS 1.3) запросы. Для систем DPI провайдера ваш трафик будет выглядеть как обычное защищенное соединение с веб-сайтом, что снижает риск блокировок по сигнатурам.
- Адаптация под iOS: Встроенные механизмы сборки фрагментированных пакетов решают известную проблему бесконечного состояния «Обновление...» (Updating...) в клиентах Telegram на iPhone.
Автоматическая установка (Ubuntu / Debian)
Разработчик подготовил удобный скрипт для автоматического развертывания, который берет на себя компиляцию и первоначальную настройку сервера.
Подключитесь к вашему VPS по SSH и выполните следующую команду:
curl -sSf [https://raw.githubusercontent.com/sleep3r/mtproto.zig/main/deploy/install.sh](https://raw.githubusercontent.com/sleep3r/mtproto.zig/main/deploy/install.sh) | sudo bash
- Автоматически скачивает и устанавливает компилятор Zig (версии 0.15.2 или новее).
- Клонирует исходный код прокси из репозитория и компилирует его с флагом максимальной производительности (
ReleaseFast). - Генерирует надежный случайный 16-байтный секретный ключ (Secret).
- Создает системного пользователя
mtproto(в целях безопасности сервис не должен работать отroot). - Создает и запускает службу
systemdс именемmtproto-proxy. - Открывает порт 443 в стандартном межсетевом экране
ufw.
По завершении работы скрипта в терминале отобразится сгенерированная ссылка для подключения. Обязательно скопируйте и сохраните её!
Настройка конфигурации (config.toml)
Все настройки прокси хранятся в файле /opt/mtproto-proxy/config.toml. Вы можете отредактировать этот файл, чтобы включить дополнительные функции, например, оптимизацию для устройств Apple или тег для спонсорского канала.
Откройте файл в текстовом редакторе nano:
sudo nano /opt/mtproto-proxy/config.toml
Пример базового конфигурационного файла:
[server]
port = 443
# Опционально: 32-символьный hex-тег вашего спонсорского канала (от @MTProxybot)
# tag = "ваш-тег-здесь"
# Рекомендуется включить для клиентов на базе iOS
fast_mode = true
Параметр fast_mode = true включает "Быстрый режим". При его активации прокси не использует дополнительное S2C (Server-to-Client) шифрование, а полагается напрямую на шифрование серверов (DC) самого Telegram. Это настоятельно рекомендуется для исправления циклических обрывов соединения на клиентах iOS.
После внесения любых изменений в конфигурационный файл (например, если вы раскомментировали tag или добавили fast_mode), файл нужно сохранить (Ctrl+O, Enter, Ctrl+X), а затем перезапустить службу:
sudo systemctl restart mtproto-proxy
Управление службой (Systemd)
Так как наш MTProto прокси работает как системная служба, вы можете управлять им стандартными командами Linux:
-
Проверить статус работы и последние логи:
sudo systemctl status mtproto-proxy -
Перезапустить службу (применяет новые настройки config.toml):
sudo systemctl restart mtproto-proxy -
Остановить службу:
sudo systemctl stop mtproto-proxy -
Просмотреть подробный журнал работы в реальном времени:
sudo journalctl -u mtproto-proxy -f
Подключение клиентов
Для подключения пользователей к вашему новому узлу достаточно передать им ссылку, которую выдал скрипт установки.
Ссылка имеет стандартный формат:
tg://proxy?server=<ВАШ_IP>&port=443&secret=<ВАШ_СЕКРЕТНЫЙ_КЛЮЧ>
При клике на такую ссылку со смартфона или ПК, Telegram автоматически предложит добавить и включить новые настройки проксирования. Вся дальнейшая переписка будет надежно маршрутизироваться через ваш сервер.