MTProxy 手动安装教程(mtg 2.0)

适用场景:为 Telegram 客户端搭建一个专属 MTProxy 代理。本文记录使用 mtg 搭建 MTProxy 的基本流程,从下载二进制到输出 tg:// / t.me 分享链接。

1. 下载 mtg

wget https://github.com/9seconds/mtg/releases/download/v2.1.7/mtg-2.1.7-linux-amd64.tar.gz

下载完成后,请自行解压并将 mtg 二进制文件放到系统可执行路径中,例如 /usr/local/bin/mtg

2. 生成密钥

mtg generate-secret --hex auca.com

示例输出:

ee3701c2a4b9d0362c042c5d9374619b2c617563612e636f6d

返回值会以 ee 开头,表示支持 Fake TLS。请保存好这个密钥,稍后要写入配置文件。

3. 创建 systemd 服务

创建服务文件:

vim /usr/lib/systemd/system/mtg.service

写入以下内容:

[Unit]
Description=mtg

[Service]
ExecStart=/usr/local/bin/mtg run /usr/local/etc/mtg/config.toml
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

4. 编写配置文件

创建配置目录和配置文件:

mkdir -p /usr/local/etc/mtg
vim /usr/local/etc/mtg/config.toml

最简配置

只配置密钥和监听端口即可启动:

secret = "ee3701c2a4b9d0362c042c5d9374619b2c617563612e636f6d"
bind-to = "127.0.0.1:10080"

完整示例配置

如果你需要更多可调参数,可以参考下面的示例:

secret = "ee367a189aee18fa31c190054efd4a8e9573746f726167652e676f6f676c65617069732e636f6d"
bind-to = "0.0.0.0:443"
concurrency = 8192
tcp-buffer = "4kb"
prefer-ip = "prefer-ipv4"
domain-fronting-port = 443
tolerate-time-skewness = "5s"

[network]
doh-ip = "9.9.9.9"
proxies = []

[network.timeout]
tcp = "5s"
http = "10s"
idle = "1m"

[defense.anti-replay]
enabled = true
max-size = "1mib"
error-rate = 0.001

[defense.blocklist]
enabled = true
download-concurrency = 2
urls = []
update-each = "24h"

[stats.statsd]
enabled = false
address = "127.0.0.1:8888"
metric-prefix = "mtg"
tag-format = "datadog"

[stats.prometheus]
enabled = true
bind-to = "127.0.0.1:3129"
http-path = "/"
metric-prefix = "mtg"

5. 启动服务

systemctl daemon-reload
systemctl enable mtg
systemctl start mtg

查看运行状态:

systemctl status mtg

6. 输出代理链接

支持生成 tg://t.me 格式链接和二维码:

mtg access /etc/mtg.toml

MTProxy 链接输出示例

验证与自查

  1. systemctl status mtg 显示 active(running)
  2. ss -lntp | grep 10080(或你配置的监听端口)确认端口监听正常
  3. journalctl -u mtg -e 无报错
  4. 用生成的 tg:// 链接在 Telegram 客户端中连接,发送/接收消息正常

参考