Установка MTProxy из RPM

В предыдущей статье мы разобрали, что такое MTProxy и какие режимы работы он поддерживает. Теперь — практика: установка готового RPM-пакета из репозитория GetPageSpeed. Это самый быстрый способ получить рабочий MTProxy на production-сервере.

Почему RPM

Сборка MTProxy из исходников требует компилятора, заголовочных файлов OpenSSL и ручной настройки сервиса. RPM-пакет решает всё это автоматически:

  • Systemd-юнит для управления сервисом
  • Отдельный системный пользователь mtproxy
  • Автоматическая загрузка конфигурации серверов Telegram при установке
  • Генерация случайного секретного ключа
  • Ежедневное обновление конфигурации через cron
  • Обновление одной командой через yum update

Поддерживаемые дистрибутивы

RPM-пакет доступен для RHEL/CentOS 7 и новее, Rocky Linux, AlmaLinux, Fedora и Amazon Linux — любой дистрибутив с yum или dnf.

Установка

Подключение репозитория GetPageSpeed:

sudo yum -y install https://extras.getpagespeed.com/release-latest.rpm

Установка MTProxy:

sudo yum -y install mtproxy

В процессе установки пакет загрузит актуальную конфигурацию серверов Telegram и сгенерирует секретный ключ. Ключ отображается в выводе установки и сохраняется в /etc/mtproxy/secret.

Что создаёт пакет

КомпонентПуть
Бинарный файл/usr/bin/mtproxy
Systemd-юнитmtproxy.service
Systemd-сокетmtproxy.socket
Параметры/etc/mtproxy/mtproxy.params
Секретный ключ/etc/mtproxy/secret
Конфигурация Telegram/usr/share/mtproxy/proxy-multi.conf
Cron-задача/etc/cron.daily/mtproxy

Пакет также создаёт системного пользователя mtproxy, от имени которого запускается процесс.

Настройка

Основные параметры находятся в /etc/mtproxy/mtproxy.params:

MTPROXY_USER=mtproxy
MTPROXY_CLIENT_PORT=443
MTPROXY_STATS_PORT=8888
MTPROXY_WORKERS=1
DAEMON_OPTS=""
  • MTPROXY_CLIENT_PORT — порт для подключения клиентов. По умолчанию 443, что помогает обходить ограничения на уровне провайдера
  • MTPROXY_STATS_PORT — порт статистики для внутреннего мониторинга
  • MTPROXY_WORKERS — количество рабочих процессов. На серверах с несколькими ядрами можно увеличить
  • DAEMON_OPTS — дополнительные флаги. Например, для продвижения канала: DAEMON_OPTS="-P тег_от_MTProxybot"

Несколько секретов

Форк GetPageSpeed поддерживает несколько секретных ключей одновременно. Дополнительные ключи передаются через DAEMON_OPTS:

DAEMON_OPTS="-S второй_ключ -S третий_ключ"

Каждый ключ формирует отдельную ссылку для подключения — удобно для выдачи разным пользователям.

Запуск и проверка

Запуск и включение автозагрузки:

sudo systemctl start mtproxy
sudo systemctl enable mtproxy

Проверка статуса:

sudo systemctl status mtproxy

Убедиться, что процесс слушает нужный порт:

ss -tlnp | grep 443

Просмотр логов в реальном времени:

journalctl -u mtproxy -f

После изменения параметров в /etc/mtproxy/mtproxy.params достаточно перезапустить сервис:

sudo systemctl restart mtproxy

Настройка файрвола

На системах с firewalld (стандартный файрвол для RHEL-семейства):

sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

При использовании нестандартного порта номер в команде нужно заменить. Если сервер работает за облачным файрволом (AWS, GCP и др.), правила безопасности нужно обновить и там.

Ссылка для подключения

Для подключения клиента формируется ссылка вида:

tg://proxy?server=IP_СЕРВЕРА&port=443&secret=dd...

Значение secret — это секретный ключ с префиксом dd, который был выведен при установке. Посмотреть сохранённый ключ:

cat /etc/mtproxy/secret

К значению из файла нужно добавить префикс dd. Например, если MTPROXY_SECRET=a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6, ссылка будет:

tg://proxy?server=203.0.113.1&port=443&secret=dda1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6

Альтернативный формат для браузера: https://t.me/proxy?server=...&port=...&secret=.... Оба варианта открывают настройки прокси в Telegram одним кликом.

Преимущества форка GetPageSpeed

RPM-пакет собирается из форка GetPageSpeed, который включает исправления и улучшения, не принятые в заброшенный upstream-репозиторий Telegram:

  • Стабильность — исправления таймаутов, утечек памяти и некорректного поведения под нагрузкой
  • Direct-to-DC — прямое соединение с серверами Telegram без relay-серверов
  • Prometheus-метрики — встроенный эндпоинт для мониторинга
  • ARM64 — поддержка серверов на архитектуре ARM
  • IP-фильтрация — блоклист и вайтлист по IP-адресам
  • Безопасность — constant-time HMAC, сокращённое окно replay-атак, fuzz-тестирование

В следующих статьях — развёртывание MTProxy в Docker и настройка режима Fake-TLS для маскировки трафика под HTTPS.