Перейти к основному содержимому

Развертывание собственного MTProto Proxy (mtproto.zig)

Для обеспечения безопасного и стабильного обмена сообщениями в корпоративной среде часто требуется развернуть собственный узел связи для мессенджера Telegram. В этом руководстве мы рассмотрим установку современного и высокопроизводительного решения — mtproto.zig.

Почему именно mtproto.zig?

Существует множество реализаций протокола MTProto (на Python, Erlang, Go), но версия sleep3r/mtproto.zig выделяется благодаря языку программирования Zig. Это дает ряд уникальных преимуществ:

  1. Невероятная легкость: Размер скомпилированного бинарного файла составляет всего около 126 KB, а потребление оперативной памяти (RAM) находится на уровне ~120 KB. Сервис может работать даже на самых бюджетных и слабых VPS.
  2. Отсутствие зависимостей: Прокси компилируется статически и не требует установки тяжелых библиотек или виртуальных машин.
  3. Маскировка (Fake TLS 1.3): Прокси маскирует MTProto-трафик под стандартные HTTPS (TLS 1.3) запросы. Для систем DPI провайдера ваш трафик будет выглядеть как обычное защищенное соединение с веб-сайтом, что снижает риск блокировок по сигнатурам.
  4. Адаптация под 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?

Параметр 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 автоматически предложит добавить и включить новые настройки проксирования. Вся дальнейшая переписка будет надежно маршрутизироваться через ваш сервер.