С выходом MTProxy в Телеграмме появилась возможность монетизации прокси, за счет функции promoted channel. Теперь создание MTProto server будет не просто благотворительным жестом в поддержку Digital Resistance, но и реальным способом раскрутить свой канал, и начать зарабатывать на рекламе в Telegram.
Содержание:
Как поднять собственный MTProto server для Telegram?
Как добавить спонсорский канал для MTProto (MTProxy)?
Команда Telegram опубликовала ссылки на репозиторий с кодом для создания прокси сервера, и на образ для авто- развертывания нулевой конфигурации сервера MTProxy server. Docker-контейнер позволяет автоматически развернуть MTProto proxy server, предназначенный для Telegram. Пример сервера, развернутого из Docker-контейнера, доступен в боте @BestMTProxyBot.
До выхода официального Docker-образа от Telegram, пользователи успели создать различные скрипты для настройки собственного MTProxy. Разберем вкратце, какие альтернативы официальному решению Telegram существуют.
Python: поддерживает спонсорские каналы; поддерживает IPv6; прост в установке.
PHP: есть проблемы с клиентами Android (не отправляются сообщения); десктоп-клиенты Telegram работают отлично.
Java: требуется JRE 8 или JDK 8 (на версии 9 и выше не будет работать).
C (Официальная версия MTProxy от Telegram): использует много ресурсов процессора; поддерживает спонсорские каналы; работает стабильно.
Официальный Docker-образ — самый простой, быстрый и эффективный способ поднять свой MTProto proxy server. Автоматизированное развертывание контейнера и легкое управление на уровне ОС позволяет настроить прокси сервер на любой Linux-системе.
Системные требования:
VDS/VPS сервер, находящийся в любой стране, в которой Телеграм не заблокирован;
Linux OS: Ubuntu 14.04+, CentOS 6+, Debian 8+;
корневой доступ через SSH.
Создаем MTProto server
Нам нужен только сервер с установленным Docker’ом и доступом в интернет, и 443-ий порт должен быть свободным. Для запуска прокси все, что вам нужно сделать, это выполнить команду:
docker run -d -p443:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest
Журнал контейнера доступен по команде:
docker logs mtproto-proxy
Он будет содержать сведения, которые потребуются для вставки в приложение Телеграмм при регистрации вашего прокси в боте @MTProxyBot:
[+] Using the explicitly passed secret: '00baadf00d15abad1deaa515baadcafe'. [+] Saving it to /data/secret. [*] Final configuration: [*] Secret 1: 00baadf00d15abad1deaa515baadcafe # ваш текущий секретный ключ [*] tg:// link for secret 1 auto configuration: : tg://proxy?server=3.14.15.92&port=443&secret=00baadf00d15abad1deaa515baadcafe # ссылка для подключения [*] t.me link for secret 1: tg://proxy?server=3.14.15.92&port=443&secret=00baadf00d15abad1deaa515baadcafe [*] Tag: no tag # параметр для привязки promoted-канала [*] External IP: 3.14.15.92 [*] Make sure to fix the links in case you run the proxy on a different port.
Добавить в заметки чтобы посмотреть позже?
Параметры IP и port могут быть определены ошибочно — проследите за этим, и при необходимости исправьте. Также, обязательно исправьте ссылки, если вы решите запустить прокси-сервер на другом порту, отличном от 443.
Secret — это обязательный параметр конфигурации: он будет создан автоматически при запуске контейнера, и будет сохраняться при обновлении.
Регистрируем свой MTProto прокси в Телеграме
После того, как ваш MTProxy сервер запущен, откройте в мессенджере диалог с @MTProxybot и зарегистрируйте свой прокси в Телеграме, чтобы получить доступ к статистике использования и монетизации. @MTProxybot — это официальный бот для владельцев MTProxy. Порядок действий:
Отправить команду /start.
Затем команду /newproxy — для регистрации нового МТПрото.
Отправить адрес в формате «host:port».
Настраиваем конфигурацию MTProxy server
Если необходимо задать секретный ключ вручную (например, при развертывании нескольких прокси-серверов с балансировкой нагрузки DNS), можно задать переменную SECRET в виде 16-байтового числа в шестнадцатеричной системе:
docker run -d -p443:443 -v proxy-config:/data -e SECRET=00baadf00d15abad1deaa51sbaadcafe telegrammessenger/proxy:latest
Для символов необходимо использовать нижний регистр. Для генерации числа воспользуйтесь одной из Linux-команд:
MTProto поддерживает задание сразу нескольких различных ключей для пользовательских групп, максимум до 16 параметров. Можно указать их явно в переменной SECRET в виде шестнадцатеричных строк, разделенных запятыми:
docker run -d -p443:443 -v proxy-config:/data -e SECRET=935ddceb2f6bbbb78363b224099f75c8,2084c7e58d8213296a3206da70356c81 telegrammessenger/proxy:latest
Либо можно разрешить контейнеру автоматически создавать “секреты”, используя переменную SECRET_COUNT (нужно указать количество генерируемых строк).
docker run -d -p443:443 -v proxy-config:/data -e SECRET_COUNT=4 telegrammessenger/proxy:latest
Обновление MTProto server
Команда Telegram пообещала вносить минимальное количество изменений, но тем не менее, рекомендуется делать обновление прокси-сервера один раз в сутки. Перечень команд для обновления:
$ docker pull telegrammessenger/proxy # обновить образ $ docker stop mtproto-proxy # остановить контейнер $ docker rm mtproto-proxy # удалить контейнер $ docker run .... # создать из обновленного образа и запустить контейнер заново $ docker logs -f --tail=30 mtproto-proxy # посмотреть журнал контейнера
Статистика и производительность MTProxy
Один рабочий процесс рассчитан на обработку нескольких десятков тысяч клиентских подключений. Для оптимальной производительности это количество искусственно ограничено до 60 000 соединений на одно ядро ЦПУ. По умолчанию запускается два рабочих процесса. Если ваш прокси рассчитан на большое число подключений, обязательно настройте WORKERS переменную, увеличив количество процессов. Однако не стоит запускать прокси-процессов больше, чем ядер в процессоре.
docker run -d -p443:443 -v proxy-config:/data -e WORKERS=16 telegrammessenger/proxy:latest
Можно просматривать основные метрики работы MTProto прокси сервера на localhost:
http://localhost:2398/stats
Если прокси-сервер запущен с параметром --net=host, для получения статистики выполните команду:
curl http://localhost:2398/stats
Если прокси запущен с пробрасыванием портов, выполните другую команду:
ready_targets — количество основных серверов Telegram, к которым будет пытаться подключиться прокси.
active_targets — количество основных серверов Telegram, к которым фактически подключен прокси. Должна быть равна ready_targets.
total_special_connections — количество входящих клиентских подключений к MTProxy.
total_max_special_connections — верхний предел входящих подключений к MTProxy. Равен 60 000, умноженные на количество процессов WORKERS.
Так выглядит канал-спонсор при включенном MTProxy (МТПрокси) в боте @BestMTProxyBot (нужно подключиться ко второму серверу из предоставляемого списка).
В случае с SOCKS5 server, любой пользователь Telegram может использовать прокси, созданный и поддерживаемый пабликом, который он не читает, и возможно даже не знает о его существовании. В случае же МТПрото server, за пользование сервисом вы должны заплатить подпиской на канал.
Telegram реализовал монетизацию для владельцев proxy server через рекламу Proxy спонсора. Proxy sponsor — это канал, который будет закреплен вверху всех диалогов, и его не получится скрыть из топа, пока вы не отключитесь от текущего прокси-сервера, или не подпишетесь.
Можно показывать собственный канал, и окупать расходы на поддержку сервера с продажи рекламы в нем. Либо, если владелец не хочет заниматься ведением Telegram канала, он может брать плату за размещение в Promoted channel чужого паблика.
Для привязки к серверу прокси-спонсора сначала получите у служебного бота @MTProxybot шестнадцатеричный код. Затем его нужно передать при старте сервера в качестве значения переменной TAG:
docker run -d -p443:443 -v proxy-config:/data -e TAG=3f40462915a3e6026a4d790127b95ded telegrammessenger/proxy:latest
Обратите внимание, что переменная TAG не сохраняется: вам придется заново задавать ее в настройках каждый раз при запуске или пересоздании прокси-контейнера.
Перед настройкой собственного MTProto сервера посмотрите, как это работает, в боте @BestMTProxyBot.