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
Автор поста оценил этот комментарий
Когда душа просит и есть время, я же в начале писал. =)
показать ответы

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества