Установка 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.