Docker 云部署
使用 Docker 在云服务器上部署 OpenClaw
概述
在自己的云服务器上使用 Docker 部署 OpenClaw,可以获得完全的控制权和最大的灵活性。 适合需要自定义配置或有特殊需求的用户。
完全控制
自己的服务器,完全掌控
容器化
Docker 隔离,易于管理
数据安全
数据存储在你的服务器
服务器准备
推荐配置
- CPU: 1-2 核心
- RAM: 1GB+
- 存储: 10GB+ SSD
- 系统: Ubuntu 22.04 LTS
推荐服务商
| 服务商 | 最低价格 | 特点 |
|---|---|---|
| Hetzner | €3.79/月 | 性价比最高 |
| Vultr | $2.50/月 | 全球节点多 |
| DigitalOcean | $4/月 | 简单易用 |
| Linode | $5/月 | 稳定可靠 |
初始化服务器
# 连接服务器
ssh root@your-server-ip
# 更新系统
apt update && apt upgrade -y
# 创建普通用户
adduser openclaw
usermod -aG sudo openclaw
# 切换用户
su - openclaw安装 Docker
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 将用户添加到 docker 组
sudo usermod -aG docker $USER
# 重新登录使权限生效
exit
ssh openclaw@your-server-ip
# 验证安装
docker --version
docker compose version部署 OpenClaw
创建项目目录
mkdir -p ~/openclaw
cd ~/openclaw创建 docker-compose.yml
# docker-compose.yml
version: '3.8'
services:
openclaw:
image: openclaw/openclaw:latest
container_name: openclaw
restart: unless-stopped
ports:
- "8080:8080"
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- CLAWDBOT_TELEGRAM_TOKEN=${TELEGRAM_TOKEN}
- TZ=Asia/Shanghai
volumes:
- ./config:/app/config
- ./data:/app/data
- ./logs:/app/logs
healthcheck:
test: ["CMD", "wget", "-q", "--spider", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3创建 .env 文件
# .env
ANTHROPIC_API_KEY=sk-ant-xxx...
TELEGRAM_TOKEN=123456:ABC...启动服务
# 启动
docker compose up -d
# 查看日志
docker compose logs -f
# 查看状态
docker compose psSSL 配置
使用 Caddy 作为反向代理,自动获取 SSL 证书:
# docker-compose.yml 添加 Caddy
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
volumes:
caddy_data:
caddy_config:# Caddyfile
your-domain.com {
reverse_proxy openclaw:8080
}监控维护
使用 systemd 管理
# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw
After=docker.service
Requires=docker.service
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/home/openclaw/openclaw
ExecStart=/usr/bin/docker compose up -d
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.targetsudo systemctl enable openclaw
sudo systemctl start openclaw日志管理
# 查看实时日志
docker compose logs -f
# 限制日志大小(在 docker-compose.yml 中)
services:
openclaw:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"备份恢复
备份脚本
#!/bin/bash
# backup.sh
DATE=$(date +%Y%m%d)
BACKUP_DIR=~/backups
mkdir -p $BACKUP_DIR
cd ~/openclaw
# 备份数据
tar -czf $BACKUP_DIR/openclaw-$DATE.tar.gz data config
# 保留最近 7 天
find $BACKUP_DIR -name "openclaw-*.tar.gz" -mtime +7 -delete设置定时备份
# 添加 cron 任务
crontab -e
# 每天凌晨 3 点备份
0 3 * * * /home/openclaw/backup.sh恢复数据
cd ~/openclaw
tar -xzf ~/backups/openclaw-20240115.tar.gz
docker compose restart