Установка 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 "[email protected]@${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 установлен и настроен.

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


Оставить комментарий

avatar
1000

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

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