Наконец-то дождались, после пристального рассматривания и реверс инжениринга протокола MTProto Proxy, Telegram решил выпустить официальный вариант, с поддержкой
Что такое MTProto Proxy
Это специфический прокси-сервер и протокол от создателей Telegram позволяющий обходить блокировки и монетизировать его использование.
Официальный прокси
В прошлой публикации была представлена масса неофициальных реализаций прокси сервера, многие из них написаны пользователями Habr.
Теперь же у нас есть и официальный вариант:
github.com/TelegramMessenger/MTProxy
hub.docker.com/r/telegrammessenger/proxy
Что он может?
- Поддерживает до 16 разных ключей на 1 прокси
- До 60000 подключений на 1 ядро
- Имеет API для сбора статистики (доступно только локально)
- Готовый образ в Docker
- Показ Promoted Каналов
Как настроить?
До безобразия просто:
docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest
После этого делаем:
docker logs mtproto-proxy
В качестве вывода вы получите:
####
#### Telegram Proxy
####
[+] No secret passed. Will generate 1 random ones.
[*] Final configuration:
[*] Secret 1: afajkfhjksajkahkhkjkkk
[*] tg:// link for secret 1 auto configuration: tg://proxy?server=127.0.0.1&port=443&secret= afajkfhjksajkahkhkjkkk
[*] t.me link for secret 1: https://t.me/proxy?server=127.0.0.1&port=443&secret= afajkfhjksajkahkhkjkkk
[*] Tag: no tag
[*] External IP: 127.0.0.1
[*] Make sure to fix the links in case you run the proxy on a different port.
[+] Starting proxy...
Собственно базовая настройка закончена.
Показ Promoted канала
Eсли вы хотите показывать канал при подключении к прокси, прокси нужно зарегистрировать:
С этим поможет официальный бот @MTProxybot
Ему следует отправить IP:Port + ключ, в ответ вы получите рекламный tag.
Этот tag нужно передать как параметр при запуске контейнера:
docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data -e TAG=ВАШ_TAG telegrammessenger/proxy:latest
Далее возвращаемся к боту, выбираем свой прокси и «Set promotion» — теперь осталось только отправить любой канал для отображения.
Вот собственно и все, теперь у вас есть официальный Telegram Proxy с Promotion каналом, который будет показыватся всем пользователям.
Дополнительные настройки
По умолчанию, при запуске будет автоматически сгенерирован ключ и сохранён в томе Docker, если вы хотите вы можете указать друой ключ:
-e SECRET=00baadf00d15abad1deaa51sbaadcafe
Или несколько:
А можете попросить сгенерировать вам несколько ключей:
По умолчанию запускает 2 worker'a, изменить настройку можно следующим образом:
WORKERS=16
Мониторинг доступен по адресу: localhost:2398/stats
Получить статистику можно следующим образом:
ready_targets: Количество Telegram серверов которые готовы обслужить запросы с прокси
active_targets: Количество Telegram серверов обслуживающие запросы с прокси
total_special_connections: Количество входящих соединений
total_max_special_connections: Лимит входящих соединений
-e SECRET=00baadf00d15abad1deaa51sbaadcafe
docker run -d -p443:443 -v proxy-config:/data -e SECRET=00baadf00d15abad1deaa51sbaadcafe telegrammessenger/proxy:latest
Или несколько:
docker run -d -p443:443 -v proxy-config:/data -e SECRET=935ddceb2f6bbbb78363b224099f75c8,2084c7e58d8213296a3206da70356c81 telegrammessenger/proxy:latest
А можете попросить сгенерировать вам несколько ключей:
docker run -d -p443:443 -v proxy-config:/data -e SECRET_COUNT=4 telegrammessenger/proxy:latest
По умолчанию запускает 2 worker'a, изменить настройку можно следующим образом:
WORKERS=16
docker run -d -p443:443 -v proxy-config:/data -e WORKERS=16 telegrammessenger/proxy:latest
Мониторинг доступен по адресу: localhost:2398/stats
Получить статистику можно следующим образом:
docker exec mtproto-proxy curl http://localhost:2398/stats
ready_targets: Количество Telegram серверов которые готовы обслужить запросы с прокси
active_targets: Количество Telegram серверов обслуживающие запросы с прокси
total_special_connections: Количество входящих соединений
total_max_special_connections: Лимит входящих соединений
Бот умеет показывать еще и статистику использования вашего прокси:
docker-compose
Вместо написания длинных команд в одну строку, можно воспользоватся docker-compose.