✈️ GCP 上搭建 Telegram MTProto 代理

在自己的 GCP 虚拟机上用官方镜像搭一个 Telegram 专用代理:防火墙、Docker、secret、导入验证、运维与排障全记录(已脱敏,可公开)

在自己的 GCP 虚拟机(Debian 12)上用官方 MTProxy 镜像搭一个 Telegram 专用代理:给自己和信得过的人多一条连 Telegram 的路。本文命令均在 Debian 12 上适用,照着从上往下执行即可。

一、这是什么 / 先说清的几件事

二、前置条件

三、步骤 1:GCP 防火墙放行 443/TCP

代理监听 443 端口(看起来像普通 HTTPS 流量),先在云端放行。

控制台操作:GCP 控制台 → VPC 网络 → 防火墙 → 创建防火墙规则:

或用 gcloud 命令(在本机装有 gcloud 的终端执行):

gcloud compute firewall-rules create allow-mtproto-443 \
  --allow tcp:443 --direction INGRESS --priority 1000 --network default

如果机器上 443 已被其他服务占用,换一个端口(比如 8443),后面所有出现 443 的地方同步替换,防火墙也放行对应端口。

四、步骤 2:安装 Docker

SSH 登录 VM 后执行(已装 Docker 的跳过本节,用 docker --version 验证):

curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
docker --version

能输出版本号即安装成功。官方安装脚本会把 Docker 设为开机自启。

五、步骤 3:生成 secret 并启动代理

先生成一个固定 secret(32 位十六进制)。固定 secret 的好处:代理链接由你自己拼,不依赖容器日志,重启也不变:

openssl rand -hex 16

把输出记下来(例如 0123456789abcdef0123456789abcdef,下文以 <SECRET> 代指)。然后启动官方镜像:

sudo docker run -d --name mtproto --restart unless-stopped \
  -e SECRET=<SECRET> \
  -p 443:443 \
  telegrammessenger/proxy

确认容器起来了:

sudo docker ps

看到 mtproto 处于 Up 状态即可。

六、步骤 4:拼出代理链接并导入 Telegram

先在 VM 上查公网 IP:

curl -s ifconfig.me

代理链接格式(把 <公网IP> 和 <SECRET> 换成你的):

tg://proxy?server=<公网IP>&port=443&secret=<SECRET>

同样的内容也有网页版链接,适合发给别人:

https://t.me/proxy?server=<公网IP>&port=443&secret=<SECRET>

导入方法:

七、步骤 5:验证

  1. 客户端里代理状态显示已连接(桌面版设置里能看到延迟毫秒数)
  2. 随便给一个联系人发条消息、再打开一个频道拉新消息,能收发即通
  3. VM 上看一眼容器日志,没有报错刷屏即正常:
sudo docker logs --tail 20 mtproto

八、日常运维命令速查

```bash sudo docker ps # 看状态 sudo docker logs -f mtproto # 实时日志(Ctrl+C 退出) s ...[truncated 2089 chars]