如何手动搭建Telegram专用的MTProto代理

首先安装依赖
如果是 Debian 或 Ubuntu

1
apt-get install -y git curl build-essential libssl-dev zlib1g-dev

如果是 Centos

1
yum install -y openssl-devel zlib-devel && yum groupinstall -y "Development Tools"

进入要安装 MTProxy 的目录,这个你可以自己决定,在这里我把 MTProxy 安装在 /root
下载 MTProxy 源码

1
git clone https://github.com/TelegramMessenger/MTProxy

进入下载好的源码目录,开始编译

1
2
cd MTProxy
make

进入存放编译出来的可执行文件目录,下载密钥和配置文件

1
2
3
cd objs/bin
curl -s https://core.telegram.org/getProxySecret -o proxy-secret
curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

生成密钥,记下这32个字符,这就是你用来连接代理的secret

1
head -c 16 /dev/urandom | xxd -ps

测试代理是否可用

1
./mtproto-proxy -u (用户名) -H (端口) -p (本地端口) -S (密钥) --aes-pwd (proxy-secret文件路径) (proxy-multi.conf文件路径)

示例

1
./mtproto-proxy -u nobody -p 1081 -H 2018 -S bcd35bb0d406475b53c1f32f2ad94a72 --aes-pwd proxy-secret proxy-multi.conf

然后在Telegram客户端添加代理,如果代理状态是 online 就代表设置成功了,接下来要把代理变成服务,使之能开机自启,下面的命令请先编辑好再粘贴到控制台里

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat << EOF > /etc/systemd/system/MTProxy.service
[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=(存放可执行文件的目录)
ExecStart=(可执行文件的绝对路径) -u (用户名) -p (本地端口) -H (端口) -S (密钥) --aes-pwd (proxy-secret文件绝对路径) (proxy-multi.conf文件绝对路径)
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

示例,假设我编译出来的可执行文件放在 /root/MTProxy/objs/bin

1
2
3
4
5
6
7
8
9
10
11
12
13
14
cat << EOF > /etc/systemd/system/MTProxy.service
[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/root/MTProxy/objs/bin
ExecStart=/root/MTProxy/objs/bin -u nobody -p 1081 -H 2018 -S bcd35bb0d406475b53c1f32f2ad94a72 --aes-pwd /root/MTProxy/objs/bin/proxy-secret /root/MTProxy/objs/bin/proxy-multi.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

重载一下守护进程

1
systemctl daemon-reload

启动MTProxy服务

1
systemctl restart MTProxy.service

查看一下状态,是否是 active

1
systemctl status MTProxy.service

启用开机自启

1
systemctl enable MTProxy.service