1. 首页 > 技术教程 > 正文

OpenClaw 接入 Telegram 教程:用 VPS 搭建自己的 AI 助手

VPS 部署 OpenClaw 并接入 Telegram,相当于给自己配了一个 7×24 小时在线的 AI 助手,能处理消息、执行代码、调用 MCP 工具。主机选之前写过不少 AI Agent 部署教程,这次拿 OpenClaw 举例,从零开始走一遍。你只需要一台 2 核 4G 的 VPS(Ubuntu 22.04)、一个 Telegram Bot Token,半小时左右就能跑起来。

zhujixuan TASK 093

准备工作:VPS、Telegram Bot 和域名

OpenClaw 本身不挑配置,但如果你要跑本地模型(比如通过 Ollama),建议内存至少 4G,CPU 核心越多越好。纯 API 调用(如 OpenAI、Claude)2 核 2G 也够用。

1.申请 Telegram Bot Token
在 Telegram 里搜 `@BotFather`,发送 `/newbot`,按提示取名,拿到形如 `123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11` 的 token。记好,别泄漏。

2.准备域名和反向代理(可选但强烈建议)
如果你用 Webhook 模式接收 Telegram 消息,需要公网可访问的 HTTPS 地址。用 Nginx + Certbot 配反向代理,或者直接用 Cloudflare Tunnel。Polling 模式不需要域名,但 VPS 必须能直连 Telegram 服务器(部分国内 VPS 可能被墙,建议选海外节点)。

3.安装 Docker 和 Docker Compose
如果还没装,直接跑官方脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo apt install docker-compose-plugin -y

Docker 部署 OpenClaw

OpenClaw 官方提供了 Docker 镜像,你只需要写一个 `docker-compose.yml`,配置好环境变量。

创建项目目录和配置文件

mkdir ~/openclaw && cd ~/openclaw
touch docker-compose.yml

docker-compose.yml 示例

yaml
version: '3.8'
services:
openclaw:
image: openclaw/agent:latest # 以官方仓库为准,这里只是示例
container_name: openclaw
restart: unless-stopped
ports:
– "8080:8080" # Webhook 端口,内部映射
environment:
– TELEGRAM_BOT_TOKEN=你的Token
– OPENAI_API_KEY=sk-xxxxx # 如果使用 OpenAI 模型
– CLAUDE_API_KEY=sk-ant-xxx # 如果用 Claude
– MCP_CONFIG_PATH=/app/mcp.json # MCP 工具配置文件路径
– WEBHOOK_URL=https://你的域名/webhook # 如果用 Webhook 模式
volumes:
– ./mcp.json:/app/mcp.json # 挂载 MCP 配置文件
– ./data:/app/data # 持久化数据

>注意:镜像名和版本以 OpenClaw 官方文档为准,这里只是演示结构。如果你不确定,先 pull 一下看看:`docker pull openclaw/agent`,如果不存在则换成官方仓库地址。

配置 MCP 工具(可选)

MCP(Model Context Protocol)是 OpenClaw 调用外部工具(如搜索、文件操作、数据库查询)的协议。在 `mcp.json` 里定义工具列表,例如:

json
{
"tools": [
{
"name": "web_search",
"type": "http",
"url": "https://api.xxx.com/search",
"api_key": "your-search-api-key"
}
]
}

如果你不需要任何外部工具,可以留空或跳过这个文件。

启动服务

cd ~/openclaw
docker compose up -d

检查日志确认没有报错:

docker logs openclaw -f –tail 20

常见错误:Token 格式不对、端口被占用、MCP 配置 JSON 解析失败。先看日志,别急着重装。

配置 Telegram Bot:Webhook 还是 Polling

OpenClaw 支持两种消息接收方式。

Webhook 模式(推荐)

需要公网 HTTPS 地址。假设你已经配好了 Nginx 反向代理,指向 VPS 的 8080 端口,且域名证书正常。然后通过 Telegram API 设置 Webhook:

curl -F "url=https://你的域名/webhook" https://api.telegram.org/bot<你的Token>/setWebhook

返回 `{"ok":true,"result":true,"description":"Webhook was set"}` 即成功。之后所有发给 Bot 的消息都会 POST 到你的 VPS。

Polling 模式(无域名时使用)

如果 VPS 能直连 Telegram,且你不想折腾域名,可以在 OpenClaw 的环境变量里设置 `POLLING=true`(具体变量名以官方文档为准),然后启动后它会主动拉取消息。

注意:Polling 模式会持续占用一个长连接,部分 VPS 网络不稳定可能导致断连,建议加个 `restart: always`。

测试与排障

给 Bot 发一条 `/start` 或任意文字,看回复是否正常。如果不回复,按以下顺序排查:

1.检查容器日志:`docker logs openclaw`,看是否有错误信息。
2.验证 Webhook:`curl https://api.telegram.org/bot<你的Token>/getWebhookInfo`,看 `last_error_date` 和 `last_error_message`。
3.测试 API Key:直接通过 curl 调用你配置的 AI 模型 API,确认 Key 有效。
4.防火墙放行:如果用了 Webhook,确保 VPS 防火墙(ufw/iptables)放行了 8080 端口,或者 Nginx 已经代理到内网端口。
5.反向代理配置:Nginx 示例(假设域名已解析):

nginx
server {
listen 443 ssl;
server_name your.domain.com;
ssl_certificate /etc/letsencrypt/live/your.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your.domain.com/privkey.pem;

location /webhook {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

别忘了 `sudo nginx -t` 检查语法,然后 `sudo systemctl reload nginx`。

老鸟叮嘱

Token 绝对不要写进公开的 docker-compose.yml。用 `.env` 文件或者 Docker Secrets 管理,避免 GitHub 误提交。

Webhook 路径别用默认 `/webhook`,改成随机字符串,防止被恶意调用刷请求。

不要用 root 跑 Docker,新建一个用户加入 docker 组。

MCP 工具接入数据库时,只给只读权限,不要把生产数据库的写权限暴露给 AI Agent。

定期更新镜像:`docker compose pull && docker compose up -d`,留意官方更新日志,尤其是安全修复。

FAQ

Q1: OpenClaw 必须用 Docker 吗?
不一定,官方也提供二进制文件直接运行,但 Docker 部署更省心,环境隔离好,适合新手。

Q2: 2 核 2G 的 VPS 能跑起来吗?
纯 API 调用模式完全够用。如果加载本地模型(如通过 Ollama),建议至少 4G 内存,否则容易 OOM。

Q3: 如何让 Bot 支持多轮对话?
OpenClaw 默认带会话管理,只要不重启容器,上下文会保持。如果需要持久化,配置 Redis 或 SQLite(看官方文档)。

Q4: 国内 VPS 能用 Telegram Bot 吗?
Telegram 的 API 域名 `api.telegram.org` 在国内部分地区被限制,建议选香港、新加坡或美西的 VPS。

Q5: 部署后 Bot 没反应,日志显示“connection refused”怎么办?
检查 `WEBHOOK_URL` 是否配置正确,Nginx 是否监听对应端口,防火墙是否放行。如果是 Polling 模式,确认网络能直连 Telegram。

Q6: 如何更换 AI 模型?
修改环境变量,比如把 `OPENAI_API_KEY` 换成 `DEEPSEEK_API_KEY`,并在配置里指定模型名。具体字段名参考官方文档。

用 VPS 跑 OpenClaw 接入 Telegram,本质就是配好 Token、启动容器、设好 Webhook 或 Polling。整个过程没有黑魔法,出问题先看日志,大部分坑都能在几分钟内定位。如果后续要接更多工具或自定义 Prompt,直接在 MCP 配置里加就行,扩展性比闭源方案强不少。

**相关阅读:**

– [Telegram AI Bot VPS 部署教程:Bot Token、Webhook 和反代配置](https://www.zhujixuan.com/jishujiaocheng/9900.html)
– [Hermes Agent VPS 部署教程:Docker Compose 安装和初始化配置](https://www.zhujixuan.com/jishujiaocheng/9872.html)
– [VPS部署AI工具100讲:AI Agent、Codex、Claude Code、Hermes Agent、Ollama与自动化工作流实战教程](https://www.zhujixuan.com/jishujiaocheng/9606.html)

转载请注明出处:https://www.zhujixuan.com/jishujiaocheng/9775.html 商家投稿邮箱:zhujixuanblog@qq.com