Установка MTProxy на Debian 10

В интернете в принципе достаточно мануалов о том как установить и настроить 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
cd MTProxy/
make
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 750 /etc/mtproxy
chmod 640 /etc/mtproxy/{proxy-secret,proxy-multi.conf}

7. Создадим файл конфигурации для systemd для управления работой MTProxy

Сразу хочу заметить, что файл сделан более гибким, все настройки запуска MTProxy вынесены в переменную OPTIONS которая будет записана в файл /etc/default/mtproxy
Таким образом мы сможем легко менять настройки MTProxy не вмешиваясь в файл конфигурации для systemd.

(cat<<-EOF
[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
User=mtproxy
Group=mtproxy
EnvironmentFile=-/etc/default/mtproxy
WorkingDirectory=/var/lib/mtproxy
ExecStart=/usr/sbin/mtproto-proxy $OPTIONS
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF
)>/etc/systemd/system/MTProxy.service

Далее скажем systemd перечитать свою конфигурацию:

systemctl daemon-reload

8. Создадим файл /etc/default/mtproxy в котором будут прописаны настройки запуска MTProxy:

(cat<<-EOF
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'
EOF
)>/etc/default/mtproxy

На какие настройки стоит обратить внимание:

--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

echo ${TG_SECRET}

10. Регистрация нашего MTProxy через официального бота @MTProxybot

Тут все просто (на скрине ниже пример регистрации):
а) Запускаем бота @MTProxybot
б) Выбираем команду /newproxy
в) Далее бот попросит указать адрес и порт нашего MTProxy в формате host:port, например 88.123.34.89:4443
г) Далее бот попросит указать секретный код в шестнадцатеричном формате, который мы создали на шаге 9
д) Если все успешно, то бот зарегистрирует Ваш MTProxy выдав прокси-тег и 2 ссылки которые можно будет использовать для быстрого подключения к Вашему MTProxy.

Регистрация 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

Работа MTProxy

Проверим открытые порты и наличие процесса:

# netstat -ltupn | grep [m]tproto-proxy
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

# ps -ef | grep [m]tproto-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

В ответ будет выдано много разной информации, я приведу лишь начало вывода:

pid     3068
start_time      1648740527
current_time    1648741422
uptime  895
tot_idle_time   892.088
average_idle_percent    99.675
recent_idle_percent     99.393
active_network_events   0
time_after_epoll        0.000200
epoll_calls     739895
epoll_intr      0
...

13. Теперь настало время подключиться к MTProxy в Вашем Телеграм-клиенте:

Когда Вы зарегистрировали Ваш MTProxy у бота @MTProxybot он выдал Вам 2 ссылки: одну ссылку в формате https://, а вторую в формате tg://

Там где установлен клиент Телеграм можно пользоваться ссылкой в формате tg:// и кликнув на нее клиент предложит подключиться через этот MTProxy, жмем Включить и все должно заработать.

Подключение Телеграм через MTProxy

Подключение Телеграм через MTProxy

На этом все, MTProxy установлен и настроен.

Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.


Подписаться
Уведомить о
guest

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Артем
Артем
1 год назад

Отличная статья

1
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x