35

Установка MTProto Proxy на Ubuntu 16.04

Докер это хорошо. Более того, это прекрасно. Но иногда хочется сделать по старинке, собрать все как сервис, без всяких этих новомодных тенденций. В связи с тем, что на текущий момент официальная документация по MTProto Proxy крайне куцая, хочу поделиться инструкцией развертывания данного сервиса под Ubuntu 16.04 LTS.

Для начала коротко о MTProto Proxy - это реализация прокси-сервиса от разработчиков Телеграма. Если в обычном случае вы в явном виде передаете логин и пароль от учетки прокси, то в данной реализации вы отдаете только ключ подключения. Более подробно можно найти на всем известных ИТ ресурсах рунета.


Переходим к делу. Нам понадобится любой VPS (или выделенный сервер и т.п.), желательно не от российских поставщиков услуг, с установленной Ubuntu 16.04.

Логинимся по ssh, получаем терминал и приступаем.

sudo -i

apt update

apt upgrade -y

apt autoremove

apt install libtool perl-core zlib-devel -y

apt install libz-dev -y

cd /usr/src

git clone https://github.com/TelegramMessenger/MTProxy
;Далее обновим библиотеку openssl иначе MTProxy не соберется

wget https://www.openssl.org/source/openssl-1.1.0h.tar.gz

tar -zxf openssl-1.1.0h.tar.gz

cd openssl-1.1.0h

./config

make

make install

mv /usr/bin/openssl /root/

ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
nano /etc/ld.so.conf

;В открывшемся файле необходимо добавить следующую строчку в конец файла -

include /usr/local/openssl/lib
;После чего нажимаем комбинацию ctrl+x, y, enter

ldconfig
;Проверяем версию Openssl, должна быть вида 1.1.0

openssl version

wget http://mirrors.kernel.org/ubuntu/pool/main/o/openssl/libssl1...

dpkg -i libssl1.1_1.1.0g-2ubuntu4_amd64.deb

;Теперь идем собирать сам MTProxy

cd /usr/src/MTProxy/

make

curl -s https://core.telegram.org/getProxySecret -o proxy-secret

curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

head -c 16 /dev/urandom | xxd -ps

;После генерации ключа в строке выше обязательно сохраните его себе в отдельный файлик

mv /usr/src/MTProxy /opt/

ln -s /opt/MTProxy/objs/bin/mtproto-proxy /usr/bin/mtproto-proxy

cd /etc/systemd/system

;Создаем файл сервиса systemd

cat&nano; /etc/systemd/system/mtproto-proxy.service

;Копируем туда следующие строки

[Unit]
Description=MTProxy
After=network.target
[Service]
WorkingDirectory=/opt/MTProxy
ExecStart=/usr/bin/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
[Install]
WantedBy=multi-user.target

;Где nobody ваш пользователь на сервере
;8888 порт мониторинга за сервисом (можно изменить на любой удобный)

;443 порт на котором будет работать MTProxy (можно изменить на любой удобный)

;<secret> строка, которую мы генерировали ранее

;После чего нажимаем комбинацию ctrl+x, y, сохраняем как mtproto-proxy.service, enter

systemctl daemon-reload

systemctl enable mtproto-proxy

systemctl start mtproto-proxy

;Ссылка на ваш прокси будет вида tg://proxy?server=SERVER_NAME&port=PORT&secret=SECRET

;где SERVER_NAME доменное имя или IP вашего сервера

;PORT заданный вами порт в mtproto-proxy.service

;SECRET сгенерированный ранее ключ


Подготовка материала осуществлена с помощью материалов с официального репозитория MTProto Proxy и всемогущих поисковиков.


PS На Ubuntu 18.04 должно все быть значительно проще, там не требуется доустановка обновленных версий openssl и libssl.

0
DELETED
Автор поста оценил этот комментарий

Мне показалось или хабр надо было тоже упомянуть ?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

На хабре про докер как раз.

0
Автор поста оценил этот комментарий

Установка в один клик OpenSSl 1.1.0:
apt-get install libssl-dev libcrypto++-dev zlib1g-dev

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
На 16.04 даже из дев ставятся версии 1.0.2 ветки.
0
Автор поста оценил этот комментарий

В версии для Mac OS уже есть, а вот с iOS всё сложно, потому что якобы Apple якобы запретила телеграмму загружать обновления для iOS. Та что-то мутное, можете в твиттере Дурова почитать.

В бете Telegram X для iOS поддержка MTProxy реализована. Бету можно  в группе tgiostests взять.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Спасибо за уточнение, сам сижу на Х версии на андроиде, там, к сожалению, еще нет.

0
Автор поста оценил этот комментарий

Такая фигня, что не так делаю((


[3]+ Stopped cat

-bash: /etc/systemd/system/mtproto-proxy.service: Permission denied

root@likeproxy:/etc/systemd/system# systemctl daemon-reload

root@likeproxy:/etc/systemd/system# systemctl enable mtproto-proxy

Failed to execute operation: Invalid argument

root@likeproxy:/etc/systemd/system# systemctl start mtproto-proxy

Failed to start mtproto-proxy.service: Unit mtproto-proxy.service is not loaded properly: Invalid argument.

See system logs and 'systemctl status mtproto-proxy.service' for details.

root@likeproxy:/etc/systemd/system#


стопится кэт(

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

See system logs and 'systemctl status mtproto-proxy.service' for details.
а вот тут что конкретно пишет?

Автор поста оценил этот комментарий

Так в таком случае это "прокси который понимает только телега" и вообще нахер надо.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий
Да, так как давал краткое описание, этот момент не упомянул. Это прокси с шифрованием трафика только для телеграма.
1
Автор поста оценил этот комментарий

Нет, достаточно SSL гонять или что ещё. А на деле и проще в разы можно если доступ к серверу есть. Учитывая ПРОБЛЕМЫ везде с глобальным прокси и в яблоках, и в андроиде - всё это херня и не в ту сторону.

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Так прокси же в самой телеге, сейчас поддержка MTProxy сделана для Андроид версии, IOS  и десктоп должны скоро появиться тоже. Глобально в системе никто и не предлагает включать.

показать ответы
0
Автор поста оценил этот комментарий

Чем логинпароль тупо конкатом итд отличаются от ключа подключения? В чём преимущество?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Как минимум не палятся пароли от учеток на сервере.

показать ответы
0
Автор поста оценил этот комментарий

Добрый день!

спасибо за инструкцию большое! вроде все понятно, однако не заработало :(


mtproto-proxy.service - MTProxy

Loaded: loaded (/etc/systemd/system/mtproto-proxy.service; enabled; vendor pr

Active: failed (Result: exit-code) since Sun 2018-06-03 20:27:47 CEST; 2 days

Process: 29054 ExecStart=/usr/bin/mtproto-proxy -u usermtp87 -p 4848 -H 707 -S

Main PID: 29054 (code=exited, status=1/FAILURE)


в чем может быть проблема?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Проверьте, что от рута запускаете.

показать ответы
1
Автор поста оценил этот комментарий

Довольно важная заметка. Хоть статистика в боте будет работать.
Советую @Krelar дополнить статью.
Добавить про proxy-tag и фичу с несколькими secret. И ещё рассказать как обновлять сервер из git.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Доработаю, как из командировки вернусь, спасибо за замечания.
показать ответы
0
Автор поста оценил этот комментарий

А есть для centos документация?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Вот в этой ветке - #comment_114443812 - комментов как раз обсуждали.

0
Автор поста оценил этот комментарий

Есть ли возможность использовать несколько <secret>, без использования docker?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Делаете несколько демонов и запускаете их в параллель, либо все тот же докер в нескольких контейнерах.
показать ответы
0
Автор поста оценил этот комментарий
а этот демон нужен? Я просто далёк от линукса
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Он для автозапуска при ребуте, и, в принципе, для управления сервисом.

0
Автор поста оценил этот комментарий
вот эта инструкция подойдёт? http://chepa.net/all/2018/05/31/%D1%83%D1%81%D1%82%D0%B0%D0%...
раскрыть ветку (1)
0
Автор поста оценил этот комментарий

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

показать ответы
Автор поста оценил этот комментарий

а на centOS по этой инструкции получится установить?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
На центоси надо посмотреть какие установлены версии опенссл и ссллиб, главный затык на старых убунтах именно в них.
показать ответы
4
Автор поста оценил этот комментарий

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

раскрыть ветку (1)
0
Автор поста оценил этот комментарий
Когда душа просит и есть время, я же в начале писал. =)
показать ответы