很多人白嫖了 Oracle ARM 架构的服务器不知道放点啥,用来搭建 MTP 代理,却很容易失败,遇到各种错误阻碍,今天简单整理下在 ARM 架构下搭建 MTProxy 的方法教程。
MTProto Proxy (也叫 MTProxy) 是 Telegram 官方开源的代理协议用于 Telegram 通信连接, 项目原本是基于 C 语言开发的,因为只适配了 x86 架构的,所以你直接去编译是编译不通过的 ,也有很多人给官方提交了要求适配的 issue,也没有得到回应。
官方仓库至今已经停更 3 年了协议本身也不是不能用,在大多数服务器提供商售卖的都是 x86 架构的市场下,大多数人已经足以使用,并且在协议本身支持了 FakeTLS 得情况下,也没有太大更新的必要。
为了解决这部分少数人的需求,我们选择第三方开发的 MTProxy 服务端,由于它是用 Golang 开发的,可以很轻松编译发布到不同的平台,也包括我们用到的 ARM 架构。
仓库地址:https://github.com/9seconds/mtg
版本区别#
它分为两个版本 v1 和 v2,会有些细微差别,在使用上感官区别不大。最重要的是, v1 支持 adtag 频道分享,而 v2 不支持这项功能。
因为作者认为 MTP 代理本身就是在比较私密的朋友,小众圈子中进行使用,才会安全保密,不会被检测到。若用到大范围的公开分享推广,并通过广告取益,就很容易被运营商检测到,这两者是相悖的,即在最新版本中移除了 adtag,但同时也会在一些重大问题上维护 v1 版本。
一键脚本#
项目地址:https://github.com/ellermister/mtproxy
最新的一键脚本已经支持 ARM 服务器,mtproxy 一键安装脚本当在 ARM 架构服务器中会自动给你编译安装 9seconds/mtg .
mkdir /home/mtproxy && cd /home/mtproxy
curl -s -o mtproxy.sh https://raw.githubusercontent.com/ellermister/mtproxy/master/mtproxy.sh && chmod +x mtproxy.sh && bash mtproxy.sh
Docker 版本#
如果你没有安装 Docker,可以通过下面的脚本安装:
sh get-docker.sh
通过 docker 建立 mtproxy 代理容器:
docker run --name nginx-mtproxy -d \
-p 80:80 -p 443:443 \
-e ip_white_list="OFF" \
ellermister/nginx-mtproxy:latest
该镜像还有更多用法,支持白名单等功能,详见 https://hub.docker.com/r/ellermister/nginx-mtproxy
编译安装#
如果你想要自己编译安装,可以参考以下步骤。这里使用的是 v1 版本的 mtg,v2 同理,只是运行方式不同。
获取源码#
mkdir ~/work && cd ~/work
git clone https://github.com/9seconds/mtg.git -b v1 --depth=1
安装 golang#
根据你的系统架构选择 golang 安装包:https://go.dev/dl/ 这里是 arm64。
wget https://go.dev/dl/go1.18.4.linux-arm64.tar.gz
tar -xzf go1.18.4.linux-arm64.tar.gz -C /usr/local/
export PATH=$PATH:/usr/local/go/bin
rm -f go1.18.4.linux-arm64.tar.gz
编译 mtg#
默认作者提供的 Makefile 脚本中是对当前系统进行编译可用的静态文件,如果你是在 ARM 架构下的系统上编译,什么都不用改变,如果是想跨平台编译,参考 CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build
进行编译.
cd ~/work/mtg
make static
编译成功,你会在当前目录下得到一个 mtg 静态文件,你可以赋予权限,并将其复制到其他地方使用。
chmod +x mtg
cp mtg /usr/local/bin
运行 mtg#
mtg run <secret> <adtag>
参数解释
secret
为你的 MTProxy 密钥,包含一段 32 位随机字符和你的 fakeTLS 使用的域名adtag
为推广频道使用的密钥,可以通过机器人 @MTProxybot 获取
生成带 tls 伪装的 secret
mtg generate-secret -c aws.amazon.com tls
ee5244d2387a0b6945bf96d0433ea3009b6177732e616d617a6f6e2e636f6d
运行完整示例
mtg run ee5244d2387a0b6945bf96d0433ea3009b6177732e616d617a6f6e2e636f6d 7cfeefce74c922a85e2c6c3c8efb50e3 -b 0.0.0.0:443 >/dev/null 2>&1 &
如果你需要开启启动时运行,可以将以上命令加入到 /etc/rc.local
中