在自己的 GCP 虚拟机上用官方镜像搭一个 Telegram 专用代理:防火墙、Docker、secret、导入验证、运维与排障全记录(已脱敏,可公开)
在自己的 GCP 虚拟机(Debian 12)上用官方 MTProxy 镜像搭一个 Telegram 专用代理:给自己和信得过的人多一条连 Telegram 的路。本文命令均在 Debian 12 上适用,照着从上往下执行即可。
代理监听 443 端口(看起来像普通 HTTPS 流量),先在云端放行。
控制台操作:GCP 控制台 → VPC 网络 → 防火墙 → 创建防火墙规则:
allow-mtproto-4430.0.0.0/0443或用 gcloud 命令(在本机装有 gcloud 的终端执行):
gcloud compute firewall-rules create allow-mtproto-443 \
--allow tcp:443 --direction INGRESS --priority 1000 --network default
如果机器上 443 已被其他服务占用,换一个端口(比如 8443),后面所有出现 443 的地方同步替换,防火墙也放行对应端口。
SSH 登录 VM 后执行(已装 Docker 的跳过本节,用 docker --version 验证):
curl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
docker --version
能输出版本号即安装成功。官方安装脚本会把 Docker 设为开机自启。
先生成一个固定 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
--restart unless-stopped:机器重启后容器自动恢复-e SECRET= 后面可以用英文逗号分隔多个 secret-e SECRET 也能跑:容器会随机生成并在日志里打印链接,但重启后排查麻烦,不推荐确认容器起来了:
sudo docker ps
看到 mtproto 处于 Up 状态即可。
先在 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>
导入方法:
tg:// 链接(或打开 t.me 链接),客户端会弹出「启用代理」确认框,点启用sudo docker logs --tail 20 mtproto
```bash sudo docker ps # 看状态 sudo docker logs -f mtproto # 实时日志(Ctrl+C 退出) s ...[truncated 2089 chars]