本文使用系统Ubuntu16.04,Github项目地址

搭建

安装依赖项,您需要一组通用的工具来构建源代码,以及openssl和zlib的开发包

Debian/Ubuntu

apt install git curl build-essential libssl-dev zlib1g-dev

我安装在了/root目录下

CentOS/RHEL

yum install openssl-devel zlib-devel
yum groupinstall "Development Tools"

克隆仓库

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

运行make开始编译

make && cd objs/bin

如果编译失败运行

make clean

然后再重新编译

运行

获取一个秘密,用于连接TG服务器

curl -s https://core.telegram.org/getProxySecret -o proxy-secret

获取当前的TG配置。偶尔会变化,因此官方建议每天更新一次

curl -s https://core.telegram.org/getProxyConfig -o proxy-multi.conf

生成用户用来连接到代理的密钥,记下这串密钥,后面会用到

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

运行(先看下面的参数配置)

./mtproto-proxy -u nobody -p 8888 -H 6666 -S <secret> --aes-pwd proxy-secret proxy-multi.conf -M 1

需要自定义的地方:

  • nobody是用户名
  • 8888是本地端口
  • 6666是外部端口
  • <secret>是刚才生成的密钥
  • proxy-secretproxy-multi.conf是上文编译生成的,如果在其他路径运行要写明绝对路径如"/root/MTProxy/objs/bin/proxy-secret"
  • -M是指定除主线程之外的工作线程数目,服务器越强可以填写更大的数字,填0则仅使用主线程,我使用了0
  • 更多用法和参数请参考mtproto-proxy --help

运行后看到如下则成功,已经可以使用TG客户端连接了

Aug 21 02:14:18 ubuntu systemd[1]: Started MTProxy.
Aug 21 02:14:18 ubuntu mtproto-proxy[1286]: [1286][2018-08-21 02:14:18.973279 local] Invoking engine mtproxy-0.01 compiled at Aug 21 2018 01:45:30 by gcc 5.4.0 20160609 64-bit after co
Aug 21 02:14:18 ubuntu mtproto-proxy[1286]: [1286][2018-08-21 02:14:18.973975 local] config_filename = '/root/MTProxy/objs/bin/proxy-multi.conf'
Aug 21 02:14:18 ubuntu mtproto-proxy[1286]: [1286][2018-08-21 02:14:18.994582 local] Started as [65.49.203.23:8888:1286:1534832058]
Aug 21 02:14:18 ubuntu mtproto-proxy[1286]: [1286][2018-08-21 02:14:18.995508 local] configuration file /root/MTProxy/objs/bin/proxy-multi.conf re-read successfully (797 bytes parsed),
Aug 21 02:14:19 ubuntu mtproto-proxy[1286]: [1286][2018-08-21 02:14:19.000343 local] main loop

不能用的,使用其他系统的,注意防火墙的端口设置

除了 TelegramMessenger/MTProxy 外官方还支持Docker的方式搭建服务器,另外还有第三方的Python,PHP等其他语言的实现- p1ratrulezzz/mtproxy-server-linux

开机自启,进程守护

新建systemd服务文件(它是大多数Linux发行版的标准路径,但应该先检查它)

vi /etc/systemd/system/MTProxy.service

填写如下(我得配置,按照情况自行更改目录位置,命令参数等)

[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/root/MTProxy/objs/bin
ExecStart=/root/MTProxy/objs/bin/mtproto-proxy -u nobody -p 8888 -H 6666 -S f042fb4962389cb20c827f1c30645f0f --aes-pwd /root/MTProxy/objs/bin/proxy-secret /root/MTProxy/objs/bin/proxy-multi.conf -M 0
Restart=on-failure

[Install]
WantedBy=multi-user.target

官方原配置

[Unit]
Description=MTProxy
After=network.target

[Service]
Type=simple
WorkingDirectory=/opt/MTProxy
ExecStart=/opt/MTProxy/mtproto-proxy -u nobody -p 8888 -H 443 -S <secret> -P <proxy tag> <other params>
Restart=on-failure

[Install]
WantedBy=multi-user.target

重新加载守护进程

systemctl daemon-reload

测试是否生效

systemctl restart MTProxy.service
# 检查状态应该为开启的,如果Failed,也先完成所有步骤最后重启再检查
systemctl status MTProxy.service

开启开机自启动

systemctl enable MTProxy.service

最后再客户端上填写ip,端口和密钥就可以使用和生成一键连接了

服务器注册及分享

如果愿意分享可以看这一步

添加官方机器人@MTProxybot
发送 /newproxy
根据提示发送代理服务器地址及端口号
再根据提示发送此前生成的密钥
注册完成

设置赞助频道的方法:
发送 /myproxies,将列出你注册过的代理服务器列表
选择要设置的代理服务器,此处并非以端口号型号列出,而是在注册成功后生成的十六进制标签,形如 850594e9…,请注意不要与密钥混淆
再选择 Set promotion
根据提示发送赞助频道的链接或用户名
设置完成
此后所有连接到这个代理服务器的客户端,都会在聊天主界面置顶显示对应的赞助频道了。


版权声明:本文为原创文章,版权归Joe所有,转载请注明出处.

本文链接:https://www.j000e.com/linux/tgmtproxy.html
知识共享许可协议
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

Last modification:March 1st, 2020 at 06:55 pm
If you think my article is useful to you, please feel free to appreciate