Home部署指南Docker 部署

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 ps

SSL 配置

使用 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.target
sudo 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