Здесь я опишу для себя установку из исходников MTProxy. Может кому тоже будет полезно.
Исходники можно взять тут.
Первым делом смотрим через терминал какой версии у нас openssl
openssl version
Если версия ниже 1.1.*, то обновляем openssl. Делается так:
Обновляем пакеты, качаем архив, разархивируем, переходим в папку. Конфигурируем и собираем.
sudo yum install libtool perl-core zlib-devel -y
curl -O -L https://www.openssl.org/source/openssl-1.1.0h.tar.gz
tar -zxvf openssl-1.1.0h.tar.gz cd openssl-1.1.0h
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl shared zlib make make test
Далее устанавливаем
make install
Добавляем новую версию в PATH
Создаём файл
sudo vi /etc/profile.d/openssl.sh
В него заносим следующее:
# /etc/profile.d/openssl.sh pathmunge /usr/local/openssl/bin
Вставляем через нажатие “i”, вставили, нажимаем escape, для сохранения и выхода печатаем “:wq” и Enter.
Линкуем библиотеки
Создаём файл
sudo vi /etc/ld.so.conf.d/openssl-1.1.0h.conf
В него копируем текст
# /etc/ld.so/conf.d/openssl-1.1.0h.conf /usr/local/openssl/lib
сохраняем и выходим.
sudo ldconfig -v
Ребут сервака и проверяем версию. Должна обновиться.
Переходим к установке MTProxy
git clone https://github.com/TelegramMessenger/MTProxy.git cd MTProxy/ 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
Полученную строку из последней команды копируем к себе куда нибудь.
Вносим правки в Makefile
vi Makefile
Заменяем два места в файле
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
Собираем сервер
sudo make
Вносим правило в iptables, сохраняем и перезапускаем.
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables-save | sudo tee /etc/sysconfig/iptables service iptables restart
Запускаем сервер.
objs/bin/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1
вместо nobody пишем учётку из под которой будем запускать, если вы такой же дурак как и я, то пишем root, далее пишем порты, нужно чтоб эти порты больше не юзала ни одна прога на серваке. Вместо <secret> вносим длиннющий код, который получили до этого. Вносим без кавычек, напрмер
-S 15da6d33556f333a95b8a28734adf969
И по идее, теперь должно всё запуститься.
Добавление прокси в автозагрузку
Создадим файл MTProxy.service:
sudo nano /etc/systemd/system/MTProxy.service
Внесём в него следующее:
[Unit] Description=MTProxy After=network.target [Service] Type=simple Restart=always RestartSec=1 User=root WorkingDirectory=/root/MTProxy/objs/bin ExecStart=/root/MTProxy/objs/bin/mtproto-proxy -u root -p 8888 -H 444 -S <ваш секретный код(без <>)> -P <ваш рекламный тег(без <>)> --aes-pwd /root/MTProxy/proxy-secret /root/MTProxy/proxy-multi.conf -M 1 Restart=on-failure [Install] WantedBy=multi-user.target
юзера можно менять конечо, даже нужно, плохо из под рута запускать, но мне лень. сама строка запуска похожа на ту, что писали выше, но пришлось указать полные пути до скомпилированного файла, то секретного файла и до списка серверов. Если делалось по моей инструкции, то всё должно быть примерно такое же. Порт 444 рекомендую сменить на 443, если он у вас не занят другим приложением. Как получить рекламный тег я надеюсь объяснять не надо. Просто пообщайся по этой теме с @MTProxybot в телеге.
Сохраняем и закрываем файл.
Вводим последовательно 4 команды
sudo systemctl daemon-reload sudo systemctl restart MTProxy.service sudo systemctl status MTProxy.service sudo systemctl enable MTProxy.service
Перезапускаем демонов(хз как точно, я не понимаю эту команду). перезагружаем прокси, узнаём статус и прописываем в автозагрузку.(Это про четыре команды выше).
При введении команды статуса должны увидеть что то похожее на это:
И не забудьте внести правила в iptables
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT iptables -L -n iptables-save | sudo tee /etc/sysconfig/iptables service iptables restart
Чекай
На этом уж точно всё.
Спасибо чуваку с хабра , который перевёл инструкцию по обновлению openssl отсюда и дополнил её обновлением Makefile’а. Чуваку с гитхаба, который решил проблему связанную с маской сети, час назад его коммит одобрили, и править ничего дополнительно не надо. Спасибо Паше Дурову. Спасибо диплому, что у меня отпуск, и я могу потратить кучу времени на поднятие этого сервера.
Диджитал резистанс!
Ra
Никак не получается в автозагрузку запихнуть, не подскажите решение?
Inojj
Дополнил статью про добавление в автозагрузку, спасибо что побороли мою лень 🙂
User
у меня на CentOs не собиралось из-за пункта -m64. Заменил на родной ${ARCH} и сборка пошла
Inojj
Здравствуйте, вполне возможно что сейчас ребята из телеграма пофиксили сборку, на тот момент приходилось ставить так). Спасибо за ваш комментарий)
Anton
Не работает уже инструкция