simply run 'make'
Всем привет. Обойдусь без лишних прелюдий — многие ждали официального релиза, и вот — дождались. На хабре уже есть парочка статей как установить MTProxy из докера.
А вот с установкой из исходников многие обломались — после simply run 'make' выдаются ошибки. Как установить MTProxy из исходников без ошибок на Centos 7 — под катом
Загружаем исходники
cd ~
git clone https://github.com/TelegramMessenger/MTProxy
Проверяем версию openssl
openssl version
Скорей всего вывод будет вроде:
OpenSSL 1.0.2k-fips 26 Jan 2017
Обновляем openssl до 1.1.0
Гайд взят отсюда
Устанавливаем вспомогательные тулзы
sudo yum install libtool perl-core zlib-devel -y
Скачиваем исходники версии 1.1.0
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_1_1_0g.tar.gz
Распаковываем и переходим в папку
tar -zxvf OpenSSL_1_1_0g.tar.gz
cd openssl-OpenSSL_1_1_0g
Собираем и устанавливаем
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make test
sudo make install
Добавляем новую версию в PATH:
Создаем файл
sudo vi /etc/profile.d/openssl.sh
Содержимое:
# /etc/profile.d/openssl.sh
pathmunge /usr/local/openssl/bin
>Перезагружаем shell
Создаем файл
sudo vi /etc/ld.so.conf.d/openssl-1.1.0g.conf
Содержимое:
# /etc/ld.so/conf.d/openssl-1.1.0g.conf
/usr/local/openssl/lib
Применяем
sudo ldconfig -v
Проверяем версию openssl
openssl version
OpenSSL 1.1.0h 27 Mar 2018
Открываем Makefile и добавляем
CFLAGS: -I/usr/local/openssl/include
LDFLAGS: -L /usr/local/openssl/lib
CFLAGS = -I/usr/local/openssl/include -m64 -O3 -std=gnu11 -Wall -mpclmul -march=core2 -mfpmath=sse -mssse3 -fno-strict-aliasing -fno-strict-overflow -fwrapv -DAES=1 -DCOMMIT=\"${COMMIT}\" -D_GNU_SOURCE=1 -D_FILE_OFFSET_BITS=64
LDFLAGS = -L /usr/local/openssl/lib -m64 -ggdb -rdynamic -lm -lrt -lcrypto -lz -lpthread -lcrypto
Сохраняем
И только теперь simply make.
make clean
make
Дальше согласно readme
Всем успехов, надеюсь помог
Мой прокси на дедике(интересно бы было нагрузочное тестирование провести)
t.me/proxy?server=mtp.proxy.mediatube.xyz&port=443&secret=f3f0a2df006d4b4913cc7fd77cc77ffa
VDS в России и Нидерландах
Наш канал в Telegram
Чат для вопросов
Комментарии (19)
zCooler
31.05.2018 10:01./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib
make
make test
sudo make install
На rpm-based дистрибутиве? Srsly?
Взять spec с ближайшей версии srpm, собрать rpm, при ошибках поправить spec, не?
ujifgc
31.05.2018 10:08Для Debian 9:
sudo apt-get install git curl build-essential libssl-dev libz-dev git clone https://github.com/TelegramMessenger/MTProxy.git cd MTProxy/ make
Результат будет в папке MTProxy/objs/bin
Чтобы хостить на портах < 1024 перед запуском нужно ещё это сделать:
sudo apt-get install libcap2-bin sudo setcap CAP_NET_BIND_SERVICE=+eip "полный путь бинарника mtproto-proxy"
ShashkovS
31.05.2018 10:10Спасибо! У меня был настроенный 3proxy, отлично и стабильно работающий.
Вчера тоже ткнулся с MTProto на CentOS7 — и фиг. Попробую сегодня эту инструкцию.
Infidel
31.05.2018 10:19Ставил на Ubuntu 16.04 LTE, напоролся на ту же проблему. Выяснил, что дело в версии openssl. Не стал разбираться со сборкой openssl 1.1 из исходников, опыта возни с линуксами не хватило, зато где-то нашел, что указанные «недостающие» функции EVP_MD_CTX_new и EVP_MD_CTX_free были и в openssl 1.0.2, но назывались там, соответственно, EVP_MD_CTX_create и EVP_MD_CTX_destroy.
Короткая пробежка по исходникам поиском и заменой (по 2 вхождения каждой функции в common/sha256.c и common/sha1.c, и одно в net/net-msg.c) привела к тому, что прокси прекрасно собрался и работает на «штатной» openssl 1.0.2g.
На гитхабе тем временем уже есть чей то пуллреквест, который делает примерно то же самое (алиасит _new и _free через дефайны в _create и _destroy).XDred
31.05.2018 12:58Собрал из исходников openssl 1.1h на Ubuntu 16.04.4, добавил в makefile нужные параметры.
Стало собиратся лучше чем раньше. Но всё равно с ошибкой. Ругается так:
objs/lib/libkdb.a(sha256.o): In function `sha256_starts':
sha256.c:(.text+0x5): undefined reference to `EVP_MD_CTX_init'
objs/lib/libkdb.a(sha1.o): In function `sha1_starts':
sha1.c:(.text+0x5): undefined reference to `EVP_MD_CTX_init'
objs/lib/libkdb.a(aesni256.o): In function `tg_ssl_aes_ctr128_crypt':
aesni256.c:(.text+0x4d0): undefined reference to `AES_ctr128_encrypt'
collect2: error: ld returned 1 exit status
Makefile:86: recipe for target 'objs/bin/mtproto-proxy' failed
make: *** [objs/bin/mtproto-proxy] Error 1
Возможно я что-то криво собрал или криво подключил. Не знаю теперь куда копать.
xeonz
31.05.2018 11:02Получилось ли у кого то подключить промо канал?
SlavikMIPT Автор
31.05.2018 11:03Да — вот мой прокси t.me/proxy?server=mtp.proxy.mediatube.xyz&port=443&secret=f3f0a2df006d4b4913cc7fd77cc77ffa
ShashkovS
31.05.2018 12:35+1Добавлю, что можно добавить mtproto в автозапуск, используя Systemd.
nano /lib/systemd/system/mtproxyd.service
[Unit] Description=MTproxy service After=network.target StartLimitIntervalSec=0 [Service] Type=simple Restart=always RestartSec=1 User=setup_user # Юзер должен иметь права к mtproto-proxy, proxy-secret и proxy-multi.conf ExecStart=/path_to_1/mtproto-proxy -u nobody -p 8888 -H 443 -S you_secret --aes-pwd /path_to_2/proxy-secret /path_to_3/proxy-multi.conf -M 1 # path_to_1, path_to_2, path_to_3 зависит от того, как вы устанавливали [Install] WantedBy=multi-user.target
systemctl daemon-reload systemctl start mtproxyd systemctl status mtproxyd systemctl enable mtproxyd
А ещё можно настроить sslh: habr.com/post/412779ZAZmaster
31.05.2018 13:58Ещё можно сделать
setcap 'cap_net_bind_service=+ep' /path_to_1/mtproto-proxy
, чтобы пользователь setup_user смог открыть порт 443
fedorro
31.05.2018 13:58За статью спасибо. /s Но как бы Хабр не заблокировали за пособничество пособникам пособников террористов. /s
sim2q
31.05.2018 22:31на 32 битах не собралось, на 64 и со старой openssl норм (gentoo OpenSSL 1.0.2o)
теперь это надо в tor завернуть?
Renaissance
02.06.2018 16:25Собралось успешно на Ubuntu 16.04 после обновления openssl.
Юнит-файл для systemd создал, теперь возник такой вопрос: а нужно ли перезапускать сам mtproto-proxy для того чтобы он перечитал обновленный proxy-multi.conf?Renaissance
02.06.2018 16:32Судя по тому что я нашел: github.com/TelegramMessenger/MTProxy/issues/46 перезапуск все же обязателен…
Lordbl4
Спасибо за статью.
Подскажите, на десктопном клиенте есть возможность настроить соединение чрез MTProto?
ColdHam
в альфа версии есть. скачать можно с офиц. сайта
Lordbl4
да, спасибо. нашел — https://desktop.telegram.org/changelog#alpha-version
(не очевидное расположение в коне чеиндж-лога)