installation

SKILL.md

OpenClaw 安装与部署

概述

OpenClaw 是一个开源的分布式任务调度和工作流编排平台,本文档涵盖各种环境下的安装部署方法。

环境要求

系统要求

# 检查系统版本
cat /etc/os-release
uname -a

# 最低要求
# - CPU: 2 核心
# - 内存: 4GB
# - 磁盘: 20GB
# - 操作系统: Linux (CentOS 7+, Ubuntu 18.04+, Debian 10+)

# 检查资源
free -h
df -h
nproc

依赖检查

# 检查 Docker
docker --version
docker info

# 检查 Docker Compose
docker-compose --version

# 检查 Java (如需原生安装)
java -version

# 检查 Python
python3 --version
pip3 --version

Docker 方式安装(推荐)

单机部署

# 创建工作目录
mkdir -p /opt/openclaw && cd /opt/openclaw

# 下载 docker-compose.yml
curl -fsSL https://raw.githubusercontent.com/openclaw/openclaw/main/docker-compose.yml -o docker-compose.yml

# 创建必要目录
mkdir -p {data,logs,config}

# 启动服务
docker-compose up -d

# 查看状态
docker-compose ps
docker-compose logs -f

自定义配置

# docker-compose.yml
version: '3.8'

services:
  openclaw-server:
    image: openclaw/openclaw-server:latest
    container_name: openclaw-server
    ports:
      - "8080:8080"
      - "9090:9090"
    environment:
      - OPENCLAW_DB_HOST=openclaw-db
      - OPENCLAW_DB_PORT=3306
      - OPENCLAW_DB_NAME=openclaw
      - OPENCLAW_DB_USER=openclaw
      - OPENCLAW_DB_PASSWORD=${DB_PASSWORD:-openclaw123}
      - OPENCLAW_REDIS_HOST=openclaw-redis
      - OPENCLAW_REDIS_PORT=6379
      - JAVA_OPTS=-Xms1g -Xmx2g
    volumes:
      - ./data:/opt/openclaw/data
      - ./logs:/opt/openclaw/logs
      - ./config:/opt/openclaw/config
    depends_on:
      - openclaw-db
      - openclaw-redis
    restart: unless-stopped

  openclaw-worker:
    image: openclaw/openclaw-worker:latest
    container_name: openclaw-worker
    environment:
      - OPENCLAW_SERVER_HOST=openclaw-server
      - OPENCLAW_SERVER_PORT=9090
      - WORKER_GROUP=default
      - WORKER_THREADS=8
    volumes:
      - ./logs:/opt/openclaw/logs
    depends_on:
      - openclaw-server
    restart: unless-stopped
    deploy:
      replicas: 2

  openclaw-db:
    image: mysql:8.0
    container_name: openclaw-db
    environment:
      - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD:-root123}
      - MYSQL_DATABASE=openclaw
      - MYSQL_USER=openclaw
      - MYSQL_PASSWORD=${DB_PASSWORD:-openclaw123}
    volumes:
      - ./data/mysql:/var/lib/mysql
    restart: unless-stopped

  openclaw-redis:
    image: redis:7-alpine
    container_name: openclaw-redis
    command: redis-server --appendonly yes
    volumes:
      - ./data/redis:/data
    restart: unless-stopped

环境变量配置

# 创建 .env 文件
cat > .env << 'EOF'
# 数据库配置
DB_ROOT_PASSWORD=your_root_password
DB_PASSWORD=your_db_password

# 服务配置
OPENCLAW_PORT=8080
OPENCLAW_GRPC_PORT=9090

# 日志级别
LOG_LEVEL=INFO
EOF

# 启动时加载
docker-compose --env-file .env up -d

Kubernetes 部署

Helm 安装

# 添加 Helm 仓库
helm repo add openclaw https://charts.openclaw.io
helm repo update

# 查看可用版本
helm search repo openclaw

# 安装(默认配置)
helm install openclaw openclaw/openclaw -n openclaw --create-namespace

# 安装(自定义配置)
helm install openclaw openclaw/openclaw \
  -n openclaw --create-namespace \
  -f values.yaml

# 查看状态
kubectl get pods -n openclaw
kubectl get svc -n openclaw

values.yaml 示例

# values.yaml
server:
  replicaCount: 2
  resources:
    requests:
      memory: "1Gi"
      cpu: "500m"
    limits:
      memory: "2Gi"
      cpu: "1000m"

worker:
  replicaCount: 3
  resources:
    requests:
      memory: "512Mi"
      cpu: "250m"
    limits:
      memory: "1Gi"
      cpu: "500m"

mysql:
  enabled: true
  auth:
    rootPassword: "your_root_password"
    database: openclaw
    username: openclaw
    password: "your_password"
  primary:
    persistence:
      size: 20Gi

redis:
  enabled: true
  architecture: standalone
  auth:
    enabled: false

ingress:
  enabled: true
  className: nginx
  hosts:
    - host: openclaw.example.com
      paths:
        - path: /
          pathType: Prefix

手动 YAML 部署

# 创建命名空间
kubectl create namespace openclaw

# 应用配置
kubectl apply -f https://raw.githubusercontent.com/openclaw/openclaw/main/deploy/kubernetes/ -n openclaw

# 或本地文件
kubectl apply -f openclaw-deployment.yaml -n openclaw

# 查看部署状态
kubectl get all -n openclaw
kubectl describe deployment openclaw-server -n openclaw

原生安装

下载安装包

# 下载最新版本
OPENCLAW_VERSION=$(curl -s https://api.github.com/repos/openclaw/openclaw/releases/latest | grep tag_name | cut -d '"' -f 4)
wget https://github.com/openclaw/openclaw/releases/download/${OPENCLAW_VERSION}/openclaw-${OPENCLAW_VERSION}.tar.gz

# 解压
tar -xzf openclaw-${OPENCLAW_VERSION}.tar.gz -C /opt/
mv /opt/openclaw-${OPENCLAW_VERSION} /opt/openclaw
cd /opt/openclaw

初始化数据库

# 创建数据库
mysql -u root -p << 'EOF'
CREATE DATABASE IF NOT EXISTS openclaw DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER IF NOT EXISTS 'openclaw'@'%' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON openclaw.* TO 'openclaw'@'%';
FLUSH PRIVILEGES;
EOF

# 导入初始数据
mysql -u openclaw -p openclaw < /opt/openclaw/sql/init.sql

配置并启动

# 编辑配置
vim /opt/openclaw/conf/application.yml

# 启动服务
/opt/openclaw/bin/openclaw-server.sh start
/opt/openclaw/bin/openclaw-worker.sh start

# 查看状态
/opt/openclaw/bin/openclaw-server.sh status
/opt/openclaw/bin/openclaw-worker.sh status

# 查看日志
tail -f /opt/openclaw/logs/openclaw-server.log

Systemd 服务

# 创建 Server 服务
cat > /etc/systemd/system/openclaw-server.service << 'EOF'
[Unit]
Description=OpenClaw Server
After=network.target mysql.service redis.service

[Service]
Type=forking
User=openclaw
Group=openclaw
Environment=JAVA_HOME=/usr/lib/jvm/java-11
ExecStart=/opt/openclaw/bin/openclaw-server.sh start
ExecStop=/opt/openclaw/bin/openclaw-server.sh stop
ExecReload=/opt/openclaw/bin/openclaw-server.sh restart
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# 创建 Worker 服务
cat > /etc/systemd/system/openclaw-worker.service << 'EOF'
[Unit]
Description=OpenClaw Worker
After=network.target openclaw-server.service

[Service]
Type=forking
User=openclaw
Group=openclaw
Environment=JAVA_HOME=/usr/lib/jvm/java-11
ExecStart=/opt/openclaw/bin/openclaw-worker.sh start
ExecStop=/opt/openclaw/bin/openclaw-worker.sh stop
ExecReload=/opt/openclaw/bin/openclaw-worker.sh restart
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

# 启用并启动
systemctl daemon-reload
systemctl enable openclaw-server openclaw-worker
systemctl start openclaw-server openclaw-worker
systemctl status openclaw-server openclaw-worker

安装验证

健康检查

# API 健康检查
curl -s http://localhost:8080/api/health | jq .

# 组件状态
curl -s http://localhost:8080/api/status | jq .

# 集群信息
curl -s http://localhost:8080/api/cluster/info | jq .

访问 Web UI

# 默认访问地址
# http://localhost:8080

# 默认管理员账号
# 用户名: admin
# 密码: admin123 (首次登录后请修改)

# 测试登录
curl -X POST http://localhost:8080/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

升级指南

Docker 升级

# 备份数据
docker-compose exec openclaw-db mysqldump -u openclaw -p openclaw > backup.sql

# 拉取新版本
docker-compose pull

# 重启服务
docker-compose down
docker-compose up -d

# 验证
docker-compose ps
curl -s http://localhost:8080/api/health

Kubernetes 升级

# Helm 升级
helm upgrade openclaw openclaw/openclaw -n openclaw

# 查看升级状态
kubectl rollout status deployment/openclaw-server -n openclaw

# 回滚(如需要)
helm rollback openclaw -n openclaw

卸载

Docker 卸载

# 停止并删除容器
docker-compose down

# 删除数据(谨慎)
docker-compose down -v
rm -rf /opt/openclaw

# 删除镜像
docker rmi $(docker images openclaw/* -q)

Kubernetes 卸载

# Helm 卸载
helm uninstall openclaw -n openclaw

# 删除命名空间
kubectl delete namespace openclaw

# 清理 PVC(谨慎)
kubectl delete pvc --all -n openclaw

安装问题排查

问题 可能原因 解决方法
端口被占用 其他服务占用 netstat -tlnp | grep 8080
数据库连接失败 配置错误/网络问题 检查连接配置和网络
内存不足 JVM 配置过大 调整 JAVA_OPTS
权限问题 目录权限不足 chown -R openclaw:openclaw /opt/openclaw
Worker 无法注册 Server 未启动/网络问题 检查 Server 状态和网络连通性
Weekly Installs
5
GitHub Stars
28
First Seen
10 days ago
Installed on
openclaw5
gemini-cli5
github-copilot5
codex5
kimi-cli5
cursor5