VPS 上部署 OpenClaw AI 代理:脚本一步步指南
OpenClaw 是一个开源 AI 代理,通过 Telegram 管理你的 VPS。全栈方案:docker-compose、bash 工具脚本、上下文配置文件。只需克隆仓库,配置 .env 文件的 API 密钥,运行 deploy.sh —— 10 分钟内系统就绪。代理能监控容器、执行 SQL 查询、重启服务,并检查心跳。
系统架构
OpenClaw 运行在 Docker 容器 ghcr.io/openclaw/openclaw 中,挂载 /var/run/docker.sock、/var/www/projects 和 /var/log/nginx。workspace/SOUL.md 中的上下文定义行为:PostgreSQL 容器列表、项目表、安全规则。
/tools/ 中的脚本由请求触发:
docker-status.sh、docker-logs.sh、docker-restart.shdb-discover.sh、db-query.sh用于 PostgreSQLhealth-check.sh用于 HTTP 站点监控system-stats.sh、security-check.sh
代理处理自然语言:“auth 服务日志” → docker-logs.sh auth-container。
最低要求
- Ubuntu 20.04+ 或安装 Docker Compose V2 的 Linux 系统(
docker compose version) - 2 GB 内存(代理占用 ~300–500 MB)
- OpenRouter API 密钥(openrouter.ai/keys),支持 GPT-4o、Claude 模型
- Telegram 机器人令牌,从 @BotFather 获取
第一步:仓库设置
ssh user@your-server
git clone https://github.com/ShyDamn/openclaw-devops-kit.git /tmp/openclaw-setup
cd /tmp/openclaw-setup
结构:
openclaw-devops-kit/
├── docker-compose.yml
├── .env.example
├── deploy.sh
├── config/openclaw.json
├── workspace/SOUL.md, USER.md, HEARTBEAT.md
└── tools/ (14 个脚本:docker-*.sh, db-*.sh, health-check.sh 等)
第二步:Telegram 机器人和 .env
- @BotFather → /newbot → 获取令牌
123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11 - @userinfobot → 获取你的 ID
778921250
cp .env.example .env
nano .env
TELEGRAM_BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxx
YOUTRACK_TOKEN=perm:your-token-here # 可选
在 config/openclaw.json 中:
"allowFrom": [
"tg:778921250"
]
第三步:workspace/ 中的上下文设置
SOUL.md —— 核心行为
列出你的 PostgreSQL 容器和项目:
## PostgreSQL 容器:db1, db2, db3
| Path | Project | Stack |
|------|---------|-------|
| /projects/my-app/ | SaaS | Next.js + PostgreSQL |
| /projects/api/ | Backend | NestJS |
规则:读取无需确认,编辑需双重检查。
USER.md —— 你的资料
时区、技术栈、关键项目。
HEARTBEAT.md —— 小时检查清单
资源监控、容器状态、HTTP 站点。
第四步:站点监控
在 tools/health-check.sh 中:
SITES=(
"mysite.com|mysite-frontend|mysite"
"api.mysite.com|mysite-api|mysite"
)
格式:域名|容器|项目。遇到 5xx/超时 —— 自动重启,失败时通知。
第五步:部署和启动
bash deploy.sh
自动化步骤:
- 检查 Docker Compose V2
- 创建
/var/www/openclaw/ - 设置 .env 权限(chmod 600)
- 拉取镜像
- 启动容器
Telegram 配对:
cd /var/www/openclaw
docker compose run --rm --profile cli openclaw-cli pairing approve telegram <CODE>
关键脚本详解
docker-logs.sh
#!/bin/bash
CONTAINER="${1:?Usage: docker-logs.sh <container_name> [lines]}"
LINES="${2:-50}"
docker logs --tail "$LINES" "$CONTAINER" 2>&1
从 SOUL.md 自动检测容器。
system-stats.sh
#!/bin/bash
echo "=== 内存 ==="
free -h
echo ""
echo "=== 磁盘 ==="
df -h / | tail -1
# ... CPU, docker stats
心跳的全面输出。
db-discover.sh —— 数据库发现
#!/bin/bash
for c in $(docker ps --format '{{.Names}}' | grep -i postgres); do
echo "=== $c ==="
DB_USER=$(docker exec "$c" printenv POSTGRES_USER 2>/dev/null)
# ...
docker exec "$c" psql -U "$DB_USER" -d "$DB_NAME" -c "\dt"
done
自动发现所有 PostgreSQL 实例,拉取 POSTGRES_USER/POSTGRES_DB,列表示。
db-query.sh
使用容器参数执行 SQL。
关键要点
- SOUL.md 上下文至关重要:无项目/容器表时,代理会询问细节。
- openclaw.json 白名单:仅限 Telegram ID 访问,无泄露风险。
- 带自动重启的 health-check.sh:5xx → 重启 → 验证 → 通知。
- MIT 许可:脚本/配置完全掌控。
- OpenRouter:失败时模型轮换(GPT-4o、Claude),单一 API。
— Editorial Team
暂无评论。