## Docker 镜像获取
OpenClaw 官方提供 Docker 镜像,开箱即用:
```bash
docker pull openclawai/openclaw:latest
```
镜像基于 Node.js 运行时,包含 OpenClaw 的所有核心组件。
### 国内镜像加速
如果拉取速度慢,可以配置 Docker 镜像加速器:
```bash
# 编辑 Docker 配置
sudo nano /etc/docker/daemon.json
```
添加加速器地址:
```json
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://registry.docker-cn.com"
]
}
```
重启 Docker 生效:
```bash
sudo systemctl restart docker
```
## docker run 快速启动
最简单的启动方式,一行命令:
```bash
docker run -d \
--name openclaw \
-p 18789:18789 \
-v ~/.openclaw:/root/.openclaw \
-e OPENAI_API_KEY=sk-your-key-here \
--restart unless-stopped \
openclawai/openclaw:latest
```
参数说明:
| 参数 | 说明 |
|------|------|
| `-d` | 后台运行 |
| `--name openclaw` | 容器名称 |
| `-p 18789:18789` | 端口映射(Gateway 默认端口) |
| `-v ~/.openclaw:/root/.openclaw` | 数据卷挂载(持久化配置和数据) |
| `-e OPENAI_API_KEY=...` | 设置环境变量 |
| `--restart unless-stopped` | 自动重启策略 |
启动后访问仪表板:
```
http://你的服务器IP:18789/
```
## docker-compose 完整配置
生产环境推荐使用 docker-compose,配置更清晰、管理更方便。
### 创建项目目录
```bash
mkdir -p /opt/openclaw
cd /opt/openclaw
```
### 编写 docker-compose.yml
```yaml
version: '3.8'
services:
openclaw:
image: openclawai/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "18789:18789"
volumes:
- ./data:/root/.openclaw
environment:
- TZ=Asia/Shanghai
- OPENAI_API_KEY=${OPENAI_API_KEY}
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY:-}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:18789/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
```
### 创建 .env 文件
```bash
nano /opt/openclaw/.env
```
```env
# 模型 API Key(至少配置一个)
OPENAI_API_KEY=sk-your-openai-key
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key
# 国内模型(可选)
DASHSCOPE_API_KEY=sk-your-qwen-key
DEEPSEEK_API_KEY=sk-your-deepseek-key
```
### 启动服务
```bash
cd /opt/openclaw
docker-compose up -d
```
### 常用管理命令
```bash
# 查看运行状态
docker-compose ps
# 查看日志
docker-compose logs -f openclaw
# 重启服务
docker-compose restart
# 停止服务
docker-compose down
# 停止并删除数据(谨慎!)
docker-compose down -v
```
## 环境变量设置
### 模型 API Key
至少需要配置一个模型提供商的 API Key:
| 环境变量 | 提供商 | 说明 |
|----------|--------|------|
| `OPENAI_API_KEY` | OpenAI | GPT-4、GPT-3.5 |
| `ANTHROPIC_API_KEY` | Anthropic | Claude 系列 |
| `DASHSCOPE_API_KEY` | 通义千问 | 国内推荐 |
| `DEEPSEEK_API_KEY` | DeepSeek | 国内推荐,性价比高 |
| `GLM_API_KEY` | 智谱 AI | GLM 系列 |
| `MOONSHOT_API_KEY` | Moonshot | Kimi 系列 |
### 渠道 Token
如果需要连接聊天渠道,配置对应的 Token:
```env
# Telegram Bot
TELEGRAM_BOT_TOKEN=123456:ABC-DEF...
# Discord Bot
DISCORD_BOT_TOKEN=your-discord-token
# WhatsApp(通过二维码配对,不需要 Token)
```
### 其他配置
```env
# 时区
TZ=Asia/Shanghai
# Gateway 端口(默认 18789)
OPENCLAW_PORT=18789
# 日志级别
LOG_LEVEL=info
```
## 数据持久化
Docker 容器是无状态的,重建容器后数据会丢失。必须通过 volumes 挂载来持久化数据。
### 需要持久化的目录
```
~/.openclaw/
├── openclaw.json # Gateway 配置
├── workspace/ # 智能体工作区(SOUL.md、MEMORY.md 等)
├── sessions/ # 会话记录
├── skills/ # 已安装的技能
└── agents/ # 多智能体配置
```
### docker-compose 中的 volumes 配置
```yaml
volumes:
- ./data:/root/.openclaw # 所有 OpenClaw 数据
```
这样所有数据都保存在宿主机的 `./data` 目录下,容器重建后数据不会丢失。
### 备份建议
```bash
# 定期备份数据目录
tar -czf openclaw-backup-$(date +%Y%m%d).tar.gz /opt/openclaw/data/
# 或者用 rsync 同步到远程
rsync -avz /opt/openclaw/data/ backup-server:/backups/openclaw/
```
## VPS 部署完整流程
从零开始在一台全新的 VPS 上部署 OpenClaw。
### 第一步:系统初始化
```bash
# 更新系统
sudo apt update && sudo apt upgrade -y
# 安装基础工具
sudo apt install -y curl wget git nano ufw
```
### 第二步:安装 Docker
```bash
# 安装 Docker(官方脚本)
curl -fsSL https://get.docker.com | sh
# 将当前用户加入 docker 组(免 sudo)
sudo usermod -aG docker $USER
# 安装 docker-compose
sudo apt install -y docker-compose-plugin
# 验证安装
docker --version
docker compose version
```
### 第三步:配置防火墙
```bash
# 允许 SSH
sudo ufw allow 22
# 允许 HTTP/HTTPS
sudo ufw allow 80
sudo ufw allow 443
# 启用防火墙
sudo ufw enable
# 查看状态
sudo ufw status
```
注意:不要直接暴露 18789 端口到公网,通过 Nginx 反向代理访问。
### 第四步:部署 OpenClaw
```bash
# 创建项目目录
mkdir -p /opt/openclaw
cd /opt/openclaw
# 创建 docker-compose.yml(参考上面的完整配置)
nano docker-compose.yml
# 创建 .env 文件
nano .env
# 启动
docker compose up -d
# 验证运行
docker compose ps
curl http://localhost:18789/
```
### 第五步:配置 Nginx 反向代理
见下一节。
## Nginx 反向代理配置
Nginx 作为反向代理,提供域名访问、SSL 加密和 WebSocket 支持。
### 安装 Nginx
```bash
sudo apt install -y nginx
```
### 配置文件
```bash
sudo nano /etc/nginx/sites-available/openclaw
```
```nginx
server {
listen 80;
server_name your-domain.com;
# HTTP 重定向到 HTTPS(配置 SSL 后启用)
# return 301 https://$server_name$request_uri;
location / {
proxy_pass http://127.0.0.1:18789;
proxy_http_version 1.1;
# WebSocket 支持(重要!)
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 传递真实 IP
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;
}
}
```
### 启用配置
```bash
# 创建软链接
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
# 删除默认配置(可选)
sudo rm /etc/nginx/sites-enabled/default
# 测试配置
sudo nginx -t
# 重载 Nginx
sudo systemctl reload nginx
```
### WebSocket 支持说明
OpenClaw 的 WebChat 和部分渠道使用 WebSocket 通信。Nginx 配置中的这两行是关键:
```nginx
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
```
如果缺少这两行,WebChat 将无法正常工作。
## SSL 证书配置
使用 Let's Encrypt 免费 SSL 证书。
### 安装 Certbot
```bash
sudo apt install -y certbot python3-certbot-nginx
```
### 申请证书
```bash
sudo certbot --nginx -d your-domain.com
```
Certbot 会自动:
1. 验证域名所有权
2. 申请 SSL 证书
3. 修改 Nginx 配置添加 HTTPS
4. 设置自动续期
### 验证自动续期
```bash
# 测试续期
sudo certbot renew --dry-run
# 查看证书状态
sudo certbot certificates
```
### 手动配置 HTTPS
如果 Certbot 自动配置不生效,手动修改 Nginx 配置:
```nginx
server {
listen 443 ssl http2;
server_name your-domain.com;
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
# SSL 安全配置
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:18789;
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;
proxy_read_timeout 86400s;
proxy_send_timeout 86400s;
}
}
server {
listen 80;
server_name your-domain.com;
return 301 https://$server_name$request_uri;
}
```
## 国内服务器注意事项
### 镜像加速
国内服务器拉取 Docker Hub 镜像可能很慢,务必配置镜像加速器(参考本文开头的配置方法)。
### 域名备案
如果使用国内服务器(阿里云、腾讯云等)并绑定域名:
- **必须完成 ICP 备案**,否则域名会被封禁
- 备案周期通常 7-20 个工作日
- 备案期间可以用 IP 直接访问(不绑定域名)
- 备案完成前不要配置 SSL 证书
### 端口限制
部分云服务商默认只开放 22、80、443 端口,其他端口需要在安全组中手动开放。
如果使用 Nginx 反向代理(推荐),只需要开放 80 和 443 即可。
### 网络访问
OpenClaw 需要访问模型 API(OpenAI、Anthropic 等),国内服务器可能无法直接访问:
- **推荐方案**:使用国内模型提供商(通义千问、DeepSeek、智谱 GLM)
- **备选方案**:配置代理访问国外 API
- **混合方案**:国内模型为主,国外模型作为故障转移备选
### 时区设置
确保容器时区正确:
```yaml
environment:
- TZ=Asia/Shanghai
```
## 更新和维护
### 更新 OpenClaw
```bash
cd /opt/openclaw
# 拉取最新镜像
docker compose pull
# 重建容器(数据不会丢失,因为挂载了 volumes)
docker compose up -d
# 查看新版本
docker compose logs openclaw | head -20
```
### 查看日志
```bash
# 实时日志
docker compose logs -f openclaw
# 最近 100 行
docker compose logs --tail 100 openclaw
```
### 监控容器状态
```bash
# 查看资源使用
docker stats openclaw
# 查看容器详情
docker inspect openclaw
```
### 常见问题排查
**容器启动失败**:
```bash
# 查看启动日志
docker compose logs openclaw
# 常见原因:
# 1. 端口被占用 → 修改端口映射
# 2. 环境变量缺失 → 检查 .env 文件
# 3. 数据目录权限 → chmod -R 755 ./data
```
**无法访问仪表板**:
```bash
# 检查容器是否运行
docker compose ps
# 检查端口监听
ss -tlnp | grep 18789
# 检查防火墙
sudo ufw status
```
**WebSocket 连接失败**:
```bash
# 检查 Nginx 配置是否包含 WebSocket 支持
sudo nginx -t
sudo cat /etc/nginx/sites-enabled/openclaw | grep -i upgrade
```
## 完整部署检查清单
部署完成后,逐项检查:
- [ ] Docker 容器正常运行(`docker compose ps`)
- [ ] Gateway 可访问(`curl http://localhost:18789/`)
- [ ] Nginx 反向代理正常(通过域名访问)
- [ ] SSL 证书有效(浏览器显示锁图标)
- [ ] WebSocket 正常(WebChat 可以对话)
- [ ] 数据持久化正常(重启容器后数据还在)
- [ ] 自动重启正常(`docker compose restart` 后服务恢复)
- [ ] 日志可查看(`docker compose logs`)
- [ ] 备份策略已配置
## 小结
Docker 部署 OpenClaw 的核心步骤:
1. 拉取镜像,编写 docker-compose.yml
2. 配置环境变量(API Key、渠道 Token)
3. 挂载数据卷实现持久化
4. 配置 Nginx 反向代理(注意 WebSocket 支持)
5. 申请 SSL 证书
6. 国内服务器注意镜像加速和备案
数据安全靠 volumes 挂载,更新靠 `docker compose pull && up -d`,简单可靠。
---
#Docker部署 #VPS部署 #服务器运维 #Nginx配置 #龙虾技能库