1. 部署前准备与安全警告
⚠️ 重要安全警告(2026 年 3 月工信部预警)
截至 2026 年 3 月,全球超过 12 万 OpenClaw 实例因配置不当暴露于公网,导致大规模 API 密钥窃取和恶意软件传播事件。请务必遵循以下安全准则:
- 禁止公网裸奔:不要将 OpenClaw Web UI(默认端口 3000)直接暴露于公网
- 强制认证:必须配置强密码和 API Token 认证
- 网络隔离:使用防火墙限制访问来源 IP,仅允许可信网络
- 定期更新:保持 OpenClaw 为最新版本(当前 v2026.3.8),及时修复 CVE 漏洞
- 密钥管理:API Key 存储在 ~/.openclaw/.env 文件,设置 600 权限(仅所有者可读写)
- 技能包审查:仅安装官方或可信来源的技能包,避免供应链攻击
1.1 刑事风险警示
| 风险场景 | 可能罪名 | 后果 |
|---|---|---|
| 配置裸奔 | 非法获取计算机信息系统数据罪 | API 密钥、Cookie、SSH 密钥被盗 |
| 权限失控 | 非法控制计算机信息系统罪 | 设备被接管用于挖矿、DDoS 攻击 |
| 恶意技能包 | 提供侵入、非法控制计算机信息系统程序、工具罪 | unknowingly 传播后门程序 |
| 数据泄露 | 侵犯公民个人信息罪 | 用户隐私数据超范围收集/泄露 |
✅ 本指南安全承诺:
本部署指南严格遵循 2026 年最新安全标准,包含完整的认证配置、网络隔离、密钥管理和审计日志功能。按照本指南部署的 OpenClaw 实例可达到企业生产环境安全级别。
2. 系统要求与环境诊断
2.1 硬件与软件要求
💻 操作系统
- Windows 10+ (1903 或更高)
- macOS 12+ (Monterey 或更高)
- Linux: Ubuntu 20.04+, Debian 11+, CentOS 8+
- WSL2 (Windows Subsystem for Linux) 推荐
🧠 硬件配置
- CPU: 双核 2.0GHz+ (推荐 4 核+)
- 内存:最低 2GB,推荐 4GB+
- 磁盘:500MB 可用空间(不含模型缓存)
- 网络:稳定互联网连接(调用 AI API)
🛠️ 必需软件
- Node.js 22+ LTS (必须,18/20 不兼容)
- npm 10+ 或 pnpm 9+
- Git 2.30+ (源码安装需要)
- Docker 20+ (容器化部署需要)
🔧 可选依赖
- Python 3.10+ (部分技能需要)
- Ollama (本地模型推理)
- nvm (Node 版本管理,推荐)
- 1Panel (面板管理,可选)
2.2 环境诊断命令
# 1. 检查 Node.js 版本(必须 22+)
node --version
# 期望输出:v22.x.x 或 v23.x.x
# 2. 检查 npm/pnpm 版本
npm --version
pnpm --version
# 3. 检查 Git 安装
git --version
# 4. 检查 Docker(如使用容器化部署)
docker --version
docker-compose --version
# 5. 检查端口占用情况(3000 端口)
# Linux/macOS:
lsof -i :3000
netstat -tlnp | grep 3000
# Windows:
netstat -ano | findstr :3000
# 6. 检查网络连接(访问 AI API)
curl -I https://api.anthropic.com
curl -I https://api.openai.com
# 7. 检查磁盘空间
df -h ~
# Windows:
wmic logicaldisk get size,freespace,caption
2.3 自动诊断工具
# OpenClaw 内置诊断命令(安装后使用)
openclaw doctor
# 输出示例:
✓ Node.js v22.14.0 (required: >=22.0.0)
✓ npm 10.8.0
✓ Configuration file exists: ~/.openclaw/.env
✓ Network connectivity: OK
✓ Port 3000 is available
⚠ Warning: Python 3.9 detected (some skills require 3.10+)
3. 安装方式选择与对比
3.1 四种安装方式对比
| 安装方式 | 适用场景 | 优点 | 缺点 | 推荐度 |
|---|---|---|---|---|
| Docker 容器化 | 生产环境、服务器部署 | 环境隔离、一键部署、易维护 | 需要 Docker 基础 | ⭐⭐⭐⭐⭐ |
| npm/pnpm 全局安装 | 开发环境、个人使用 | 简单快速、版本管理方便 | 污染全局环境 | ⭐⭐⭐⭐ |
| 源码编译 | 定制开发、贡献代码 | 完全掌控、可修改源码 | 复杂、需要构建工具链 | ⭐⭐⭐ |
| 一键安装脚本 | 快速体验、新手入门 | 最简单、自动化程度高 | 自定义能力弱 | ⭐⭐⭐⭐ |
💡 推荐方案:
- 生产环境:Docker Compose 部署(本指南重点讲解)
- 开发环境:pnpm 全局安装(速度快、节省空间)
- Windows 用户:WSL2 + Docker(避免原生 Windows 环境坑)
4. Docker 容器化部署(推荐)
步骤 1:安装 Docker 环境
# ===== Linux (Ubuntu/Debian) =====
# 卸载旧版本(如有)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加 Docker GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装 Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证安装
docker --version
docker compose version
# 将当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
newgrp docker
# ===== macOS =====
# 使用 Homebrew 安装 Docker Desktop
brew install --cask docker
# 然后打开 Applications/Docker.app 完成安装
# ===== Windows =====
# 下载 Docker Desktop: https://www.docker.com/products/docker-desktop/
# 运行安装程序,按向导完成安装
# 启用 WSL2 后端(设置 → General → Use WSL 2 based engine)
步骤 2:创建配置文件与目录结构
# 创建 OpenClaw 工作目录
mkdir -p ~/openclaw/{data,config,logs}
cd ~/openclaw
# 创建 .env 配置文件
cat > .env << 'EOF'
# ========== AI 模型配置 ==========
# 选择并配置一个主要模型提供商(必填)
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# GOOGLE_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# OLLAMA_HOST=http://host.docker.internal:11434
# ========== 网络配置 ==========
PORT=3000
HOST=0.0.0.0
# ========== 安全配置 ==========
# 生成强密码作为 Dashboard 访问令牌
OPENCLAW_TOKEN=your_secure_random_token_here
# 启用 HTTPS(生产环境强烈建议)
HTTPS_ENABLED=false
# HTTPS_CERT_PATH=/path/to/cert.pem
# HTTPS_KEY_PATH=/path/to/key.pem
# ========== 存储配置 ==========
DATA_DIR=/app/data
CONFIG_DIR=/app/config
LOG_LEVEL=info
# ========== 代理配置(国内用户可选)==========
# HTTP_PROXY=http://proxy-server:port
# HTTPS_PROXY=http://proxy-server:port
# NO_PROXY=localhost,127.0.0.1
# ========== 高级配置 ==========
# MAX_CONTEXT_LENGTH=100000
# DEFAULT_MODEL=claude-sonnet-4-20250514
# FALLBACK_MODELS=claude-3-5-sonnet-20241022,gpt-4o
EOF
# 设置 .env 文件权限(仅所有者可读写)
chmod 600 .env
# 创建数据目录
mkdir -p data config logs
chmod 700 data config logs
步骤 3:编写 Docker Compose 配置文件
# docker-compose.yml
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "${PORT:-3000}:3000"
volumes:
- ./data:/app/data
- ./config:/app/config
- ./logs:/app/logs
- ~/.openclaw:/root/.openclaw
env_file:
- .env
environment:
- NODE_ENV=production
- TZ=Asia/Shanghai
networks:
- openclaw-network
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
deploy:
resources:
limits:
cpus: '2.0'
memory: 2G
reservations:
cpus: '0.5'
memory: 512M
# 可选:Nginx 反向代理(生产环境推荐)
nginx:
image: nginx:alpine
container_name: openclaw-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/nginx/ssl:ro
depends_on:
- openclaw
networks:
- openclaw-network
networks:
openclaw-network:
driver: bridge
步骤 4:配置 Nginx 反向代理(可选但推荐)
# nginx.conf - 生产环境配置
events {
worker_connections 1024;
}
http {
# 安全头
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# 限流配置
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;
server {
listen 80;
server_name your-domain.com;
# 强制跳转到 HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name your-domain.com;
# SSL 证书配置
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://openclaw:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
# WebSocket 支持
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
# 限流
limit_req zone=api_limit burst=20 nodelay;
}
# 健康检查端点
location /health {
proxy_pass http://openclaw:3000/health;
access_log off;
}
}
}
步骤 5:启动 OpenClaw 服务
# 拉取最新镜像
docker compose pull
# 后台启动服务
docker compose up -d
# 查看启动日志
docker compose logs -f openclaw
# 检查服务状态
docker compose ps
docker inspect openclaw --format='{{.State.Health.Status}}'
# 期望输出:healthy
# 测试服务是否正常运行
curl http://localhost:3000/health
# 期望输出:{"status":"ok","version":"2026.3.8"}
步骤 6:初始化配置向导
# 进入容器执行初始化
docker exec -it openclaw openclaw onboard
# 交互式配置向导将引导你完成:
1. 选择 AI 供应商(Anthropic/OpenAI/Google/Ollama)
2. 输入 API Key(如未在 .env 中配置)
3. 连接聊天平台(Telegram/WhatsApp/Discord 等)
4. 发送测试消息验证配置
# 配置完成后,访问 Web Dashboard
浏览器打开:http://localhost:3000/?token=YOUR_TOKEN
5. Linux/macOS 原生部署
5.1 一键安装脚本(推荐)
# ===== Linux/macOS 一键安装 =====
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --install-method git
# 或使用 npm 安装
npm i -g openclaw@beta
# 或使用 pnpm(更快更省空间)
pnpm add -g openclaw@beta
# 验证安装
openclaw --version
openclaw doctor
# 运行初始化向导
openclaw onboard
5.2 配置 Daemon 服务(开机自启)
# 创建 systemd 服务文件(Linux)
sudo tee /etc/systemd/system/openclaw.service > /dev/null << 'EOF'
[Unit]
Description=OpenClaw AI Agent Gateway
After=network.target
[Service]
Type=simple
User=your-username
WorkingDirectory=/home/your-username
ExecStart=/usr/bin/openclaw start
Restart=on-failure
RestartSec=10
Environment=NODE_ENV=production
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd 并启动服务
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw
sudo systemctl status openclaw
# macOS 使用 launchd
openclaw onboard --install-daemon
6. Windows 部署方案
⚠️ Windows 部署注意事项:
强烈建议使用 WSL2 部署 OpenClaw,避免原生 Windows 环境的 Node.js 版本、PowerShell 权限、C++ 编译工具等问题。
6.1 WSL2 部署(推荐)
# PowerShell(管理员权限)安装 WSL2
wsl --install -d Ubuntu-22.04
# 重启电脑后,在 WSL 终端中执行
curl -fsSL https://openclaw.ai/install.sh | bash
# 后续步骤与 Linux 相同
6.2 原生 Windows 部署
# PowerShell(管理员权限)一键安装
curl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd --tag beta && del install.cmd
# 验证安装
openclaw --version
openclaw doctor
openclaw onboard
7. API Key 配置与模型接入
7.1 主流 AI 平台 API Key 获取
| 平台 | 获取地址 | 推荐模型 | 价格参考 |
|---|---|---|---|
| Anthropic | console.anthropic.com | Claude Sonnet 4 | $3-15 / 1M tokens |
| OpenAI | platform.openai.com | GPT-4o | $5-30 / 1M tokens |
| aistudio.google.com | Gemini 2.0 Pro | $1-7 / 1M tokens | |
| 智谱 AI | open.bigmodel.cn | GLM-4 | ¥0.005-0.1 / K tokens |
| DeepSeek | platform.deepseek.com | DeepSeek-V3 | ¥0.3-1 / 1M tokens |
7.2 多模型 fallback 配置
# ~/.openclaw/.env 多模型配置示例
# 主模型(Anthropic Claude)
ANTHROPIC_API_KEY=sk-ant-api03-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DEFAULT_MODEL=claude-sonnet-4-20250514
# Fallback 模型(当主模型限流或不可用时自动切换)
FALLBACK_MODELS=claude-3-5-sonnet-20241022,gpt-4o,deepseek-chat
# OpenAI 备用
OPENAI_API_KEY=sk-proj-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# DeepSeek 备用(成本低)
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# 模型路由策略
MODEL_ROUTING_STRATEGY=priority
COOLDOWN_PERIOD=60s
MAX_RETRIES=3
7.3 本地模型部署(Ollama)
# 安装 Ollama
curl -fsSL https://ollama.ai/install.sh | sh
# 拉取开源模型
ollama pull qwen2.5-coder:32b
ollama pull llama-3.1-70b
ollama pull deepseek-coder:33b
# 配置 OpenClaw 使用本地模型
echo "OLLAMA_HOST=http://host.docker.internal:11434" >> ~/.openclaw/.env
echo "DEFAULT_MODEL=qwen2.5-coder:32b" >> ~/.openclaw/.env
# 重启 OpenClaw
docker compose restart openclaw
8. 聊天平台集成配置
8.1 支持的聊天平台
💬 Telegram
- 通过 @BotFather 创建 Bot
- 获取 Bot Token
- 支持群聊/私聊
- 完全免费
- 扫描二维码连接
- 支持个人号/商务号
- 需保持在线状态
- 注意封号风险
🎮 Discord
- 开发者门户创建应用
- 配置 Bot 权限
- 支持服务器/频道
- 适合社区运营
- IMAP/SMTP 协议
- 自动回复邮件
- 支持附件处理
- 适合工单系统
8.2 Telegram Bot 配置示例
# 1. 在 Telegram 搜索 @BotFather
# 2. 发送 /newbot 创建新 Bot
# 3. 按提示设置 Bot 名称和用户名
# 4. 获取 Bot Token(格式:123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
# 5. 在 OpenClaw 中配置
openclaw configure channels.telegram.enabled true
openclaw configure channels.telegram.token 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
# 6. 重启 OpenClaw
docker compose restart openclaw
# 7. 向 Bot 发送 /start 测试
9. API 访问权限与认证配置
9.1 API 认证方式
| 认证方式 | 安全性 | 适用场景 | 配置方法 |
|---|---|---|---|
| Token 认证 | ⭐⭐⭐⭐ | Web Dashboard 访问 | URL 参数 ?token=xxx |
| API Key 认证 | ⭐⭐⭐⭐⭐ | REST API 调用 | Header: X-API-Key |
| JWT 认证 | ⭐⭐⭐⭐⭐ | 企业 SSO 集成 | Bearer Token |
| Basic Auth | ⭐⭐⭐ | 内部测试环境 | username:password |
9.2 生成 API Key
# 方法 1:通过 OpenClaw CLI 生成
openclaw api-keys create --name "Production API Key" --permissions read,write,execute
# 输出:
✓ API Key created: ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
⚠️ Save this key securely. It won't be shown again.
# 方法 2:手动生成强随机 Token
openssl rand -hex 32
# 输出:a1b2c3d4e5f6...
# 方法 3:使用 Python 生成
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
9.3 配置 API 访问控制
# ~/.openclaw/.env API 安全配置
# 启用 API 认证
API_AUTH_ENABLED=true
# API Key 列表(逗号分隔)
API_KEYS=ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,ocak_yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
# 权限配置
API_PERMISSIONS=read,write,execute,admin
# IP 白名单(可选,逗号分隔)
API_IP_WHITELIST=192.168.1.0/24,10.0.0.0/8
# 速率限制(请求数/分钟)
API_RATE_LIMIT=100
# CORS 配置
CORS_ORIGINS=https://your-domain.com,https://admin.your-domain.com
CORS_METHODS=GET,POST,PUT,DELETE
CORS_ALLOWED_HEADERS=Content-Type,Authorization,X-API-Key
# JWT 配置(如使用 JWT 认证)
JWT_SECRET=your_jwt_secret_key_here_minimum_32_chars
JWT_EXPIRY=24h
JWT_ISSUER=openclaw.your-company.com
9.4 REST API 调用示例
# ===== cURL 示例 =====
# 1. 发送消息到 OpenClaw
curl -X POST https://your-domain.com/api/v1/messages \
-H "Content-Type: application/json" \
-H "X-API-Key: ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"channel": "telegram",
"recipient": "@username",
"content": "你好,请帮我分析这个需求文档...",
"priority": "normal"
}'
# 2. 查询任务状态
curl -X GET https://your-domain.com/api/v1/tasks/task-123 \
-H "X-API-Key: ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# 3. 执行系统命令(需要 execute 权限)
curl -X POST https://your-domain.com/api/v1/execute \
-H "Content-Type: application/json" \
-H "X-API-Key: ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-d '{
"command": "ls -la /app/data",
"timeout": 30
}'
# 4. 上传文件
curl -X POST https://your-domain.com/api/v1/files \
-H "X-API-Key: ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-F "file=@/path/to/document.pdf" \
-F "description=需求文档"
# ===== Python 示例 =====
import requests
API_BASE = "https://your-domain.com/api/v1"
API_KEY = "ocak_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
headers = {"X-API-Key": API_KEY}
# 发送消息
response = requests.post(
f"{API_BASE}/messages",
headers=headers,
json={
"channel": "telegram",
"recipient": "@username",
"content": "Hello from Python!"
}
)
print(response.json())
10. 安全加固与最佳实践
10.1 安全配置清单
🔐 OpenClaw 安全加固检查清单
10.2 防火墙配置(UFW)
# Linux UFW 防火墙配置
# 启用防火墙
sudo ufw enable
# 默认拒绝所有入站
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 SSH(防止把自己锁在外面)
sudo ufw allow 22/tcp
# 允许 HTTP/HTTPS(通过 Nginx)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 如需直接访问 OpenClaw(不推荐)
# sudo ufw allow from 192.168.1.0/24 to any port 3000 proto tcp
# 查看状态
sudo ufw status verbose
# 重置规则(如需)
sudo ufw reset
10.3 Fail2Ban 防暴力破解
# 安装 Fail2Ban
sudo apt-get install fail2ban -y
# 创建 OpenClaw 防护规则
sudo tee /etc/fail2ban/jail.d/openclaw.local > /dev/null << 'EOF'
[openclaw]
enabled = true
port = 3000,80,443
filter = openclaw
logpath = /var/log/openclaw/*.log
maxretry = 5
bantime = 3600
findtime = 600
EOF
sudo systemctl restart fail2ban
sudo fail2ban-client status openclaw
10.4 自动备份脚本
#!/bin/bash
# backup-openclaw.sh - OpenClaw 自动备份脚本
BACKUP_DIR="/backup/openclaw"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
# 创建备份目录
mkdir -p ${BACKUP_DIR}
# 备份配置文件
tar -czf ${BACKUP_DIR}/config_${DATE}.tar.gz \
~/.openclaw/.env \
~/openclaw/config/ \
~/openclaw/docker-compose.yml
# 备份数据目录
tar -czf ${BACKUP_DIR}/data_${DATE}.tar.gz \
~/openclaw/data/
# 备份日志(最近 7 天)
find ~/openclaw/logs -mtime -7 -type f | \
tar -czf ${BACKUP_DIR}/logs_${DATE}.tar.gz -T -
# 加密备份(可选)
# openssl enc -aes-256-cbc -salt -in ${BACKUP_DIR}/data_${DATE}.tar.gz \
# -out ${BACKUP_DIR}/data_${DATE}.tar.gz.enc -pass pass:${ENCRYPTION_PASSWORD}
# 删除旧备份
find ${BACKUP_DIR} -name "*.tar.gz" -mtime +${RETENTION_DAYS} -delete
# 上传到云存储(可选)
# aws s3 cp ${BACKUP_DIR} s3://your-bucket/openclaw-backups/ --recursive
echo "Backup completed: ${DATE}"
# 添加到 crontab(每天凌晨 2 点备份)
crontab -e
# 添加以下行
0 2 * * * /usr/local/bin/backup-openclaw.sh >> /var/log/openclaw-backup.log 2>&1
11. 验证测试与故障排查
11.1 健康检查
# 1. 检查容器状态
docker compose ps
# 期望输出:openclaw - Running (healthy)
# 2. 检查服务日志
docker compose logs openclaw | tail -50
# 3. 测试健康端点
curl http://localhost:3000/health
# 期望输出:{"status":"ok","version":"2026.3.8","uptime":"2h30m"}
# 4. 测试 API 端点
curl -H "X-API-Key: ocak_xxx" http://localhost:3000/api/v1/status
# 5. 发送测试消息
curl -X POST http://localhost:3000/api/v1/messages \
-H "Content-Type: application/json" \
-H "X-API-Key: ocak_xxx" \
-d '{"channel":"test","content":"Hello OpenClaw!"}'
11.2 常见问题排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 容器启动失败 | 端口冲突、内存不足、缺少环境变量 | 检查端口占用、增加内存、确认.env 配置 |
| API Key 认证失败 | Key 错误、权限不足、IP 不在白名单 | 验证 Key 格式、检查权限配置、确认 IP 白名单 |
| 无法连接 AI API | 网络问题、Key 无效、速率限制 | 检查网络连接、验证 API Key、查看配额 |
| WebSocket 断开 | Nginx 配置不当、超时设置过短 | 配置 proxy_read_timeout、启用 WebSocket 支持 |
| 二维码不显示 | 终端不支持、无头服务器 | 更换终端、使用 WebChat 界面扫码 |
| 技能加载失败 | 依赖缺失、权限问题、版本不兼容 | 安装 Python 依赖、检查文件权限、升级 OpenClaw |
11.3 调试模式
# 启用调试日志
openclaw configure log_level debug
docker compose restart openclaw
# 实时查看日志
docker compose logs -f openclaw
# 进入容器调试
docker exec -it openclaw bash
# 在容器内测试
openclaw doctor
openclaw test-connection
12. K8S 集群部署方案
12.1 Helm Chart 部署
# 添加 OpenClaw Helm Repository
helm repo add openclaw https://feiskyer.github.io/openclaw-kubernetes
helm repo update
# 创建命名空间
kubectl create namespace openclaw
# 创建 values.yaml 配置文件
cat > values.yaml << 'EOF'
replicaCount: 2
image:
repository: openclaw/openclaw
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 3000
ingress:
enabled: true
className: nginx
hosts:
- host: openclaw.your-domain.com
paths:
- path: /
pathType: Prefix
tls:
- secretName: openclaw-tls
hosts:
- openclaw.your-domain.com
env:
- name: ANTHROPIC_API_KEY
valueFrom:
secretKeyRef:
name: openclaw-secrets
key: anthropic-api-key
- name: API_KEYS
valueFrom:
secretKeyRef:
name: openclaw-secrets
key: api-keys
persistence:
enabled: true
storageClass: nfs-client
size: 10Gi
accessModes:
- ReadWriteMany
resources:
limits:
cpu: 2000m
memory: 2Gi
requests:
cpu: 500m
memory: 512Mi
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 10
targetCPUUtilizationPercentage: 80
EOF
# 部署 OpenClaw
helm install openclaw openclaw/openclaw \
--namespace openclaw \
-f values.yaml
# 查看部署状态
kubectl get pods -n openclaw
kubectl get svc -n openclaw
kubectl get ingress -n openclaw
12.2 创建 Kubernetes Secrets
# 创建 Secret 存储敏感信息
kubectl create secret generic openclaw-secrets \
--from-literal=anthropic-api-key='sk-ant-api03-xxx' \
--from-literal=api-keys='ocak_xxx,ocak_yyy' \
--from-literal=jwt-secret='your_jwt_secret_here' \
-n openclaw
# 查看 Secret(base64 编码)
kubectl get secret openclaw-secrets -n openclaw -o yaml