Установка 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.