В интернете в принципе достаточно мануалов о том как установить и настроить 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.
Прокси-тег Вы должны указать в файле /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
Служба должна работать:
Проверим открытые порты и наличие процесса:
# 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 установлен и настроен.
Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.
Профессионально занимаюсь системным администрированием Linux -серверов и баз данных (MySQL, POstgreSQL) на протяжении последних 24 лет.
Отличная статья
Бот выдает ошибку , которая не лечится