手动在CMD里敲npm install的方式,在个人开发环境里没问题,但如果你要把OpenClaw部署到团队或生产环境,你需要的是可重复、可审计、可回滚的基础设施。这篇文章会覆盖从Dockerfile编写到Kubernetes编排、从GitHub Actions流水线到Terraform资源声明的完整链路。
架构概览
生产级OpenClaw部署至少包含以下组件:OpenClaw网关服务、LLM后端(云端API或本地Ollama)、反向代理(Nginx/Traefik)、日志聚合(ELK或Loki)、监控告警(Prometheus + Grafana)。如果对接微信,还需要Webhook接收端和消息队列。
这些组件的关系用docker-compose可以声明如下:
version: '3.8'
services:
openclaw:
image: openclaw/gateway:latest
ports:
- "18789:18789"
volumes:
- openclaw-config:/root/.openclaw
- openclaw-logs:/root/.openclaw/logs
environment:
- OPENCLAW_LLM_PROVIDER=ollama
- OPENCLAW_LLM_BASE_URL=http://ollama:11434/v1
- OPENCLAW_LLM_API_KEY=ollama
- OPENCLAW_LLM_MODEL=qwen2.5:7b-32k
depends_on:
- ollama
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:18789/health"]
interval: 30s
timeout: 10s
retries: 3
ollama:
image: ollama/ollama:latest
volumes:
- ollama-models:/root/.ollama
ports:
- "11434:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: 1
capabilities: [gpu]
restart: unless-stopped
nginx:
image: nginx:alpine
ports:
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./certs:/etc/nginx/certs:ro
depends_on:
- openclaw
restart: unless-stopped
volumes:
openclaw-config:
openclaw-logs:
ollama-models:
CI/CD流水线:GitHub Actions
每次配置变更或版本更新都应通过流水线自动部署,而不是SSH到服务器手动操作。
name: Deploy OpenClaw
on:
push:
branches: [main]
paths:
- 'openclaw/**'
- 'docker-compose.yml'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run config validation
run: |
node -e "JSON.parse(require('fs').readFileSync('openclaw/config.json'))"
- name: Build and test
run: |
docker compose build
docker compose run --rm openclaw openclaw --version
- name: Deploy to production
uses: appleboy/ssh-action@v1
with:
host: ${{ secrets.DEPLOY_HOST }}
username: ${{ secrets.DEPLOY_USER }}
key: ${{ secrets.DEPLOY_KEY }}
script: |
cd /opt/openclaw
git pull origin main
docker compose pull
docker compose up -d --remove-orphans
docker compose exec openclaw openclaw --version
echo "Deploy complete at $(date)"
基础设施即代码:Terraform
如果你在云上运行,用Terraform声明基础设施:
resource "aws_ecs_task_definition" "openclaw" {
family = "openclaw-gateway"
requires_compatibilities = ["FARGATE"]
network_mode = "awsvpc"
cpu = "1024"
memory = "2048"
container_definitions = jsonencode([
{
name = "openclaw"
image = "openclaw/gateway:latest"
portMappings = [
{ containerPort = 18789, protocol = "tcp" }
]
environment = [
{ name = "OPENCLAW_LLM_PROVIDER", value = "openai" },
{ name = "OPENCLAW_LLM_MODEL", value = "gpt-4o-mini" }
]
secrets = [
{ name = "OPENCLAW_LLM_API_KEY", valueFrom = aws_ssm_parameter.api_key.arn }
]
logConfiguration = {
logDriver = "awslogs"
options = {
"awslogs-group" = "/ecs/openclaw"
"awslogs-region" = var.region
}
}
}
])
}
监控与告警
OpenClaw网关的健康状态、LLM响应延迟、Token消耗量、任务成功率都是需要监控的指标。用Prometheus抓取,Grafana展示,PagerDuty或飞书Webhook告警。
关键告警规则:网关进程异常退出、LLM API连续三次超时、单日Token消耗超过预算阈值、磁盘空间低于10%。
SOUL.md的版本管理
SOUL.md(AI人设文件)不应该通过手动编辑直接修改。把它纳入Git仓库,每次变更通过Pull Request审核。这不是技术洁癖,这是因为SOUL.md的内容直接决定了AI的行为边界——它等同于一个权限配置文件,需要变更管理。
回滚策略
每次部署前备份当前运行版本的镜像tag和config.json。如果新版本出现问题,回滚命令应该在三十秒内完成:
docker compose down
git checkout HEAD~1 -- docker-compose.yml openclaw/config.json
docker compose up -d
小结
个人用OpenClaw,npm install就够了。团队用OpenClaw,你需要容器化、流水线、基础设施即代码、监控告警和回滚策略。不是因为OpenClaw本身复杂,而是因为任何运行在生产环境中的服务都应该被这样对待。基础设施不是成本,基础设施是保险。