В интернете в принципе достаточно мануалов о том как установить и настроить MTProxy для Telegram, в основном конечно стартовой точкой является официальная документация, но в данных статьях не до конца рассказаны некоторые нюансы, например что запускать MTProxy желательно под отдельным непривилегированным пользователем.
В статье ниже я по шагам дам последовательность команд для установки и запуска MTProxy на Debian 10 без использования Docker’а.
Обратите внимание, что использование MTProxy может нарушать локальное законодательство Вашей страны. Рекомендую уточнить данный момент до начала выполнения установки. Операции, описанные в данной статье, выполнялись на тестовом стенде, который был удален по окончании написания статьи.
Исходные данные: Debian 10
Задача: Установить и настроить MTProxy для Telegram
1. Установить необходимые пакеты для сборки MTProxy из исходников:
apt-get install -y git curl build-essential libssl-dev zlib1g-dev |
2. Клонируем официальный репозитарий MTProxy с Github, собираем MTProxy и копируем бинарник:
git clone https://github.com/TelegramMessenger/MTProxy.git |
cp objs/bin/mtproto-proxy /usr/sbin |
3. Создаем отдельного пользователя и вспомогательные каталоги для хранения файлов конфигурации MTProxy:
mkdir /var/lib/mtproxy /etc/mtproxy |
addgroup --system --quiet mtproxy |
adduser --quiet --system --disabled-login --ingroup mtproxy --home /var/lib/mtproxy --no-create-home mtproxy |
4. Запросим секрет, используемый для подключения к серверам Telegram (иногда может потребоваться запросить его вновь):
Сохраним секрет в файл /etc/mtproxy/proxy-secret
curl -s https://core.telegram.org/getProxySecret -o /etc/mtproxy/proxy-secret |
5. Запросим текущую конфигурацию для MTProxy:
Данную конфигурацию рекомендуется обновлять раз в сутки, т.к. список серверов в ней может меняться.
Сохраним ее в файл /etc/mtproxy/proxy-multi.conf
curl -s https://core.telegram.org/getProxyConfig -o /etc/mtproxy/proxy-multi.conf |
6. Теперь выставим владельцев файлов конфигурации и права на эти файлы, чтобы другие пользователи не смогли их читать:
chown -R mtproxy:mtproxy /var/lib/mtproxy |
chmod 750 /var/lib/mtproxy |
chown -R mtproxy:mtproxy /etc/mtproxy |
chmod 640 /etc/mtproxy/{proxy-secret,proxy-multi.conf} |
7. Создадим файл конфигурации для systemd для управления работой MTProxy
Сразу хочу заметить, что файл сделан более гибким, все настройки запуска MTProxy вынесены в переменную OPTIONS которая будет записана в файл /etc/default/mtproxy
Таким образом мы сможем легко менять настройки MTProxy не вмешиваясь в файл конфигурации для systemd.
EnvironmentFile=-/etc/default/mtproxy |
WorkingDirectory=/var/lib/mtproxy |
ExecStart=/usr/sbin/mtproto-proxy $OPTIONS |
WantedBy=multi-user.target |
)>/etc/systemd/system/MTProxy.service |
Далее скажем systemd перечитать свою конфигурацию:
8. Создадим файл /etc/default/mtproxy в котором будут прописаны настройки запуска MTProxy:
OPTIONS= '--user mtproxy --port 8888 --http-stats --http-ports 4443 --mtproto-secret XXXXX --aes-pwd /etc/mtproxy/proxy-secret --proxy-tag YYYYY /etc/mtproxy/proxy-multi.conf' |
На какие настройки стоит обратить внимание:
--user mtproxy - задает имя пользователя в ОС под которым будет работать MTProxy; |
--port 8888 --http-stats - задает порт для получения статистики по работе MTProxy и включает эту статистику, ниже посмотрим как смотреть; |
--http-ports 4443 - задает порт для приема подключений к MTProxy от клиентов, данный порт и внешний адрес Вашего сервера нужно будет указать в пункте 10 при регистрации MTProxy через официального бота @MTProxybot; |
--mtproto-secret XXXXX - задает секретный код в шестнадцатеричном формате, мы его сгенерируем на 9-м шаге. Не изменяйте буквы XXXXX; |
--aes- pwd /etc/mtproxy/proxy-secret - задает файл с секретом который мы создали на 4-м шаге; |
--proxy-tag YYYYY - задает прокси-тег в шестнадцатеричном формате, который будет передаваться вместе со всеми переадресованными запросами, данную информацию мы получим в пункте 10 при регистрации MTProxy через официального бота @MTProxybot. Не изменяйте буквы YYYYY; |
Т.к. в файле /etc/default/mtproxy храниться чувствительная информация, то необходимо поменять права на этот файл чтобы никто кроме пользователя root не мог его прочитать:
chmod 640 /etc/default/mtproxy |
9. Теперь создадим секретный код в шестнадцатеричном формате, который будут использовать клиенты для подключения к нашему MTProxy, далее запишем этот код в файл /etc/default/mtproxy вместо подстроки XXXXX:
TG_SECRET=$( head -c 16 /dev/urandom | xxd - ps ) |
sed -i "s@XXXXX@${TG_SECRET}@g" /etc/default/mtproxy |
Так же выведем секретный код на экран, он нам понадобиться далее в процессе регистрации нашего MTProxy через официального бота @MTProxybot
10. Регистрация нашего MTProxy через официального бота @MTProxybot
Тут все просто (на скрине ниже пример регистрации):
а) Запускаем бота @MTProxybot
б) Выбираем команду /newproxy
в) Далее бот попросит указать адрес и порт нашего MTProxy в формате host:port, например 88.123.34.89:4443
г) Далее бот попросит указать секретный код в шестнадцатеричном формате, который мы создали на шаге 9
д) Если все успешно, то бот зарегистрирует Ваш MTProxy выдав прокси-тег и 2 ссылки которые можно будет использовать для быстрого подключения к Вашему MTProxy.

Регистрация MTProxy
Прокси-тег Вы должны указать в файле /etc/default/mtproxy вместо YYYYY, например выполнив такую команду (строка 123456789 должна быть заменена на Ваш прокси-тег):
sed -i "s/YYYYY/123456789/g" /etc/default/mtproxy |
В принципе прокси-тег не нужен для нормальной работы MTProxy, он понадобиться лишь тогда, когда Вы захотите автоматически подписывать пользователей, которые используют Ваш MTProxy, на какой-то канал. Но мы все сделали сразу по уму с прокси-тегом.
11. Запуск MTProxy:
systemctl enable MTProxy.service --now |
12. Проверим работу MTProxy:
systemctl status MTProxy.service |
Служба должна работать:

Работа MTProxy
Проверим открытые порты и наличие процесса:
tcp 0 0 127.0.0.1:8888 0.0.0.0:* LISTEN 3068/mtproto-proxy |
tcp 0 0 0.0.0.0:4443 0.0.0.0:* LISTEN 3068/mtproto-proxy |
mtproxy 3068 1 4 17:28 ? 00:00:35 /usr/sbin/mtproto-proxy --user mtproxy --port 8888 --http-stats --http-ports 4443 --mtproto-secret XXXXX --aes- pwd /etc/mtproxy/proxy-secret --proxy-tag YYYYY /etc/mtproxy/proxy-multi.conf |
Проверим статистику работы MTProxy:
curl http://127.0.0.1:8888/stats |
В ответ будет выдано много разной информации, я приведу лишь начало вывода:
average_idle_percent 99.675 |
recent_idle_percent 99.393 |
time_after_epoll 0.000200 |
13. Теперь настало время подключиться к MTProxy в Вашем Телеграм-клиенте:
Когда Вы зарегистрировали Ваш MTProxy у бота @MTProxybot он выдал Вам 2 ссылки: одну ссылку в формате https://, а вторую в формате tg://
Там где установлен клиент Телеграм можно пользоваться ссылкой в формате tg:// и кликнув на нее клиент предложит подключиться через этот MTProxy, жмем Включить и все должно заработать.

Подключение Телеграм через MTProxy
На этом все, MTProxy установлен и настроен.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, PostgreSQL) на протяжении последних 24 лет.
Отличная статья
Бот выдает ошибку , которая не лечится