05 - 实施与部署指南
技术研究 人工智能 AI Agent
本地 Gateway 远程访问 (Tailscale) 公网访问 (谨慎使用)
部署模式选择
OpenClaw 支持多种部署模式,根据使用场景选择合适的方式:
模式一:本地部署 (推荐个人使用)
适用场景:
- 个人助手,数据完全本地
- 开发和测试环境
- 对隐私和安全要求极高
优势:
- 数据不离开本地机器
- 零网络延迟
- 完全控制配置
劣势:
- 需要保持设备在线
- 无法共享给其他用户
部署步骤:
# 1. 安装 Node.js >=22
nvm install 22
nvm use 22
# 2. 全局安装 OpenClaw
npm install -g openclaw@latest
# 3. 运行初始化向导
openclaw onboard --install-daemon
# 4. 启动 Gateway
openclaw gateway --port 18789 --verbose
# 5. 连接 Telegram Bot
openclaw channels login telegram
模式二:远程服务器部署 (推荐团队使用)
适用场景:
- 团队共享 AI 助手
- 需要 24/7 可用性
- 多设备访问
优势:
- 持续运行,不依赖个人设备
- 可被多个客户端访问
- 便于集中管理和监控
劣势:
- 需要服务器资源
- 需要配置安全访问
部署平台选项:
| 平台 | 推荐理由 | 部署复杂度 |
|---|---|---|
| VPS (DigitalOcean/Vultr) | 完全控制、成本可控 | 中等 |
| Railway | 一键部署、自动扩展 | 低 |
| Render | 免费层、简单配置 | 低 |
| Fly.io | 分布式部署、边缘网络 | 中等 |
| 自建 NixOS | 声明式配置、可复现 | 高 |
Railway 部署示例:
# 1. Fork OpenClaw 仓库
# 2. 在 Railway 导入项目
# 3. 配置环境变量:
TELEGRAM_BOT_TOKEN=your_token_here
ANTHROPIC_API_KEY=your_key_here
OPENAI_API_KEY=your_key_here
# 4. Railway 自动构建和部署
# 5. 获取 Railway 提供的公共 URL
# 6. 配置 Telegram Bot Webhook 指向该 URL
模式三:混合部署 (本地 Gateway + 远程 Nodes)
适用场景:
- 保持 Gateway 控制核心功能
- 设备特定功能在本地执行
- 需要跨设备协作
架构:
Remote Gateway (Linux Server)
├── AI Agent Runtime
├── Tool Registry
└── Channel Connections
│
│ Tailscale / SSH Tunnel
▼
Local macOS/iOS/Android Nodes
├── Camera, Screen Recording
├── System Run (host commands)
└── Canvas Rendering
优势:
- 核心功能持续可用
- 设备敏感操作在本地执行
- 平衡性能和隐私
配置示例:
{
"gateway": {
"bind": "127.0.0.1",
"tailscale": {
"mode": "serve"
}
},
"nodes": {
"autoConnect": ["macbook-local", "iphone-local"]
}
}
配置文件详解
最小配置 (~/.openclaw/openclaw.json)
{
"agent": {
"model": "anthropic/claude-opus-4-5"
},
"channels": {
"telegram": {
"botToken": "123456:ABCDEF"
}
}
}
完整配置示例
{
"gateway": {
"bind": "127.0.0.1",
"port": 18789,
"auth": {
"mode": "token",
"token": "gateway-secret-here"
},
"tailscale": {
"mode": "off",
"resetOnExit": false
}
},
"agent": {
"model": "anthropic/claude-opus-4-5",
"defaults": {
"workspace": "/Users/username/.openclaw/workspace",
"thinking": "medium",
"verbose": false,
"sandbox": {
"mode": "non-main",
"allowlist": ["bash", "read", "write"],
"denylist": ["browser", "canvas"]
}
},
"models": [
{
"id": "anthropic/claude-opus-4-5",
"provider": "anthropic",
"authProfile": "claude-pro"
},
{
"id": "openai/gpt-4-turbo",
"provider": "openai",
"authProfile": "openai-key"
}
]
},
"channels": {
"telegram": {
"botToken": "123456:ABCDEF",
"dmPolicy": "pairing",
"allowFrom": ["trusted-user"],
"groups": {
"group-123": {
"requireMention": true,
"activation": "mention"
}
},
"webhookUrl": "https://mydomain.com/webhook/telegram",
"webhookSecret": "webhook-secret"
},
"whatsapp": {
"allowFrom": ["+1234567890", "+9876543210"],
"groups": ["*"]
}
},
"tools": {
"browser": {
"enabled": true,
"color": "#FF4500"
},
"canvas": {
"enabled": true,
"port": 18793
},
"cron": {
"enabled": true,
"timezone": "Asia/Shanghai"
}
},
"logging": {
"level": "info",
"files": {
"gateway": "/var/log/openclaw/gateway.log",
"agent": "/var/log/openclaw/agent.log"
}
}
}
环境变量配置
必需变量
| 变量名 | 说明 | 示例 |
|---|---|---|
TELEGRAM_BOT_TOKEN | Telegram Bot 令牌 | 123456:ABCDEF... |
ANTHROPIC_API_KEY | Claude API 密钥 | sk-ant-... |
OPENAI_API_KEY | OpenAI API 密钥 | sk-... |
可选变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
OPENCLAW_GATEWAY_TOKEN | Gateway 认证令牌 | 无 |
NODE_ENV | 运行环境 | production |
LOG_LEVEL | 日志级别 | info |
Docker 环境变量
# docker-compose.yml
version: '3.8'
services:
openclaw:
image: ghcr.io/openclaw/openclaw:2026.1.29
environment:
- TELEGRAM_BOT_TOKEN=${TELEGRAM_BOT_TOKEN}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- OPENCLAW_GATEWAY_TOKEN=${GATEWAY_TOKEN}
volumes:
- ~/.openclaw:/app/.openclaw
- ~/.openclaw/workspace:/app/.openclaw/workspace
ports:
- "18789:18789"
- "18793:18793"
restart: unless-stopped
安全最佳实践
1. 访问控制
本地 Gateway:
{
"gateway": {
"bind": "127.0.0.1", // 仅监听本地
"auth": {
"mode": "token" // 启用令牌认证
}
}
}
远程访问 (Tailscale):
{
"gateway": {
"tailscale": {
"mode": "serve", // 仅 tailnet 内可访问
"allowPublic": false
}
}
}
公网访问 (谨慎使用):
{
"gateway": {
"auth": {
"mode": "password", // 启用密码认证
"password": "strong-password-here"
},
"tailscale": {
"mode": "funnel" // 公网 HTTPS (需密码)
}
}
}
2. Telegram 安全
配置 DM 配对策略:
{
"channels": {
"telegram": {
"dmPolicy": "pairing", // 默认配对模式
"allowFrom": ["trusted-user"] // 预批准用户
}
}
}
群组保护:
{
"channels": {
"telegram": {
"groups": {
"group-123": {
"requireMention": true, // 仅响应 @bot
"activation": "mention",
"allowedCommands": ["/status", "/new"] // 限制命令
}
}
}
}
}
3. 沙盒隔离
启用 Docker 沙盒:
{
"agent": {
"defaults": {
"sandbox": {
"mode": "non-main",
"image": "openclaw/sandbox:latest",
"allowlist": ["bash", "read", "write"],
"denylist": ["browser", "canvas", "nodes"]
}
}
}
}
4. 敏感信息保护
使用环境变量:
# .env 文件 (不提交到 Git)
TELEGRAM_BOT_TOKEN=123456:ABCDEF
ANTHROPIC_API_KEY=sk-ant-...
启用 secret 检测:
{
"security": {
"detectSecrets": true,
"secretPatterns": [
"sk-.*", // API keys
"\\+\\d{10,15}", // Phone numbers
"password.*=.*" // Passwords
]
}
}
监控与运维
健康检查
Gateway 健康端点:
# 通过 WebSocket
ws://localhost:18789/health
# CLI 命令
openclaw health
# 预期响应
{
"status": "healthy",
"gateway": "running",
"channels": {
"telegram": "connected",
"whatsapp": "connected"
},
"uptime": 86400
}
日志管理
配置日志轮转:
{
"logging": {
"level": "info",
"files": {
"gateway": {
"path": "/var/log/openclaw/gateway.log",
"maxSize": "100MB",
"maxFiles": 5
}
}
}
}
日志聚合 (可选):
- Loki + Grafana
- ELK Stack (Elasticsearch, Logstash, Kibana)
- Datadog Logs
性能监控
启用指标收集:
{
"metrics": {
"enabled": true,
"export": "prometheus",
"port": 9090
}
}
关键指标:
gateway_connections: 活跃 WebSocket 连接数agent_requests_total: Agent 请求数agent_duration_seconds: 请求处理时长channel_messages_total: 消息吞吐量tool_errors_total: 工具执行错误数
故障恢复
自动重启 (systemd):
# /etc/systemd/user/openclaw.service
[Unit]
Description=OpenClaw Gateway
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/openclaw gateway --port 18789
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=default.target
启动服务:
systemctl --user daemon-reload
systemctl --user enable openclaw
systemctl --user start openclaw
systemctl --user status openclaw
故障排查指南
常见问题诊断
1. Gateway 无法启动
# 检查端口占用
lsof -i :18789
# 检查配置语法
openclaw doctor
# 查看详细日志
openclaw gateway --verbose --debug
2. Telegram Bot 无响应
# 验证 Bot Token
curl https://api.telegram.org/bot<TOKEN>/getMe
# 删除现有 Webhook
curl -X POST https://api.telegram.org/bot<TOKEN>/deleteWebhook
# 手动发送测试消息
curl -X POST https://api.telegram.org/bot<TOKEN>/sendMessage \
-d "chat_id=<CHAT_ID>&text=Test"
3. Agent 拒绝执行工具
# 检查权限配置
cat ~/.openclaw/openclaw.json | grep sandbox
# 运行诊断
openclaw doctor --verbose
# 临时禁用沙盒 (仅测试)
openclaw agent --no-sandbox "test command"
4. 性能问题
# 检查资源使用
htop
# 查看当前会话数
openclaw sessions list
# 压缩会话减少 token 使用
openclaw sessions compact <session-id>
紧急恢复
重置 Gateway:
# 停止服务
systemctl --user stop openclaw
# 备份配置
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup
# 重置状态 (保留配置)
rm -rf ~/.openclaw/state
# 重启服务
systemctl --user start openclaw
恢复出厂设置:
# 完全重置 (警告:删除所有数据)
openclaw reset --hard
# 重新初始化
openclaw onboard --install-daemon
结论
OpenClaw 的部署支持从个人本地使用到团队远程服务的多种场景。核心配置原则包括:
- 安全优先: 启用认证、配置白名单、启用沙盒隔离
- 可观测性: 配置日志、监控和健康检查
- 高可用: 使用 systemd 自动重启、Docker 容器化部署
- 灵活扩展: 通过 Tailscale、SSH 隧道实现安全的远程访问
生产环境部署建议遵循最小权限原则,逐步开放必要功能,定期运行 openclaw doctor 检查配置风险。