返回首页

在 VPS 上安装 OpenClaw AI 指南

使用 docker-compose 和 bash 脚本在 VPS 上部署 OpenClaw AI 代理指南。代理管理容器、PostgreSQL,通过 Telegram 监控站点。完整架构、代码示例、上下文设置。

VPS 上的 OpenClaw:Telegram 中的 DevOps AI 代理
Advertisement 728x90

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/nginxworkspace/SOUL.md 中的上下文定义行为:PostgreSQL 容器列表、项目表、安全规则。

/tools/ 中的脚本由请求触发:

Google AdInline article slot
  • docker-status.shdocker-logs.shdocker-restart.sh
  • db-discover.shdb-query.sh 用于 PostgreSQL
  • health-check.sh 用于 HTTP 站点监控
  • system-stats.shsecurity-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 中:

Google AdInline article slot
"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 —— 你的资料

时区、技术栈、关键项目。

Google AdInline article slot

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

Advertisement 728x90

继续阅读