尚未安裝 OpenClaw?點此查看一鍵安裝指令
curl -fsSL https://openclaw.ai/install.sh | bash
iwr -useb https://openclaw.ai/install.ps1 | iex
curl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
擔心影響電腦?ClawTank 免安裝雲端運行,免除誤刪風險
Key Findings
  • Docker Compose 是最推薦的 OpenClaw 伺服器部署方式——一個 YAML 檔即可定義服務、Volume 與網路,三分鐘內完成啟動[1]
  • 透過 Volume 映射將 ~/.openclaw 持久化至宿主機,確保配置、對話記錄與 Skill 不因容器重啟而遺失[4]
  • 反向代理(Nginx 或 Caddy)搭配 Let's Encrypt 是生產環境必備——提供 HTTPS 加密、WebSocket 支援與存取控制[5]
  • systemd 方案適合不需要容器隔離的 Ubuntu/Debian 主機,配合 Restart=always 實現自動重啟與開機自啟動[2]

一、部署選項概覽

OpenClaw 的伺服器部署不僅僅是「安裝」,而是建立一個可持續運行、安全可控的 AI 代理基礎設施。根據官方文件與社群實踐[1],主流部署方式分為三種:

方式適用場景隔離性維運複雜度
Docker Compose多數生產環境、團隊共用高(容器沙盒)
systemd單機、輕量 VPS中(OS 層級)
雲端託管企業級、自動擴縮高(VM / K8s)中~高

CrowdStrike 的安全分析報告指出,容器化部署能有效限縮 OpenClaw 的檔案系統存取範圍,降低潛在的安全風險[6]。對於生產環境,我們強烈建議以 Docker 作為首選方案。

二、Docker Compose 快速部署

Docker Compose 讓你用一個 YAML 檔定義所有服務依賴,是官方推薦的部署方式[1]。以下是完整的 docker-compose.yml

# docker-compose.yml
version: "3.9"

services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    container_name: openclaw-server
    restart: unless-stopped
    ports:
      - "3000:3000"
    volumes:
      - openclaw-data:/home/openclaw/.openclaw
      - ./workspace:/home/openclaw/workspace
    env_file:
      - .env
    environment:
      - OPENCLAW_MODE=gateway
      - OPENCLAW_GATEWAY_HOST=0.0.0.0
      - OPENCLAW_GATEWAY_PORT=3000
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 15s
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: "2.0"

volumes:
  openclaw-data:

啟動只需兩條指令:

# 建立工作目錄並啟動
mkdir -p ~/openclaw-server && cd ~/openclaw-server
docker compose up -d

驗證服務狀態:

# 檢查容器運行狀態
docker compose ps

# 查看即時日誌
docker compose logs -f openclaw

三、環境變數配置

敏感資訊不應寫入 docker-compose.yml,而是透過 .env 檔案注入[3]。建立 .env 檔案:

# .env — 請勿納入版本控制
OPENCLAW_API_KEY=your-api-key-here
OPENCLAW_MODEL_PRIMARY=claude-opus-4-6
OPENCLAW_MODEL_FALLBACK=claude-sonnet-4
OPENCLAW_GATEWAY_TOKEN=your-gateway-secret-token
OPENCLAW_LOG_LEVEL=info
OPENCLAW_MAX_CONCURRENT=5
OPENCLAW_SANDBOX=docker

務必將 .env 加入 .gitignore

echo ".env" >> .gitignore

完整的環境變數參考如下:

變數名稱用途預設值
OPENCLAW_API_KEYLLM API 金鑰(必填)
OPENCLAW_MODE運行模式(local / gateway)local
OPENCLAW_GATEWAY_HOST監聽位址127.0.0.1
OPENCLAW_GATEWAY_PORT監聽連接埠3000
OPENCLAW_GATEWAY_TOKENGateway 認證 Token(建議設定)
OPENCLAW_SANDBOX沙盒模式docker
OPENCLAW_LOG_LEVEL日誌等級info

四、Persistent Storage 與 Volume 映射

容器天生是「無狀態」的——重啟後所有變更會消失。要讓 OpenClaw 的配置、對話記錄與 Skill 持久化,必須正確設定 Volume[4]

volumes:
  # Named volume:配置檔與對話記錄
  - openclaw-data:/home/openclaw/.openclaw

  # Bind mount:工作區目錄(方便存取檔案)
  - ./workspace:/home/openclaw/workspace

  # 可選:自訂 Skill 目錄
  - ./skills:/home/openclaw/.openclaw/skills

常用的 Volume 管理指令:

# 檢視 Volume 使用量
docker volume inspect openclaw-data

# 備份 Volume 資料
docker run --rm -v openclaw-data:/data -v $(pwd):/backup \
  alpine tar czf /backup/openclaw-backup-$(date +%Y%m%d).tar.gz -C /data .

# 從備份還原
docker run --rm -v openclaw-data:/data -v $(pwd):/backup \
  alpine tar xzf /backup/openclaw-backup-20260228.tar.gz -C /data

五、反向代理 + HTTPS

生產環境絕不應直接暴露 OpenClaw 的 3000 連接埠。透過反向代理加上 TLS 憑證是基本要求[5]

方案 A:Nginx + Let's Encrypt

# /etc/nginx/sites-available/openclaw
server {
    listen 80;
    server_name openclaw.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name openclaw.yourdomain.com;

    ssl_certificate     /etc/letsencrypt/live/openclaw.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/openclaw.yourdomain.com/privkey.pem;

    # 安全標頭
    add_header X-Frame-Options DENY;
    add_header X-Content-Type-Options nosniff;
    add_header Strict-Transport-Security "max-age=31536000" always;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;

        # WebSocket 支援(OpenClaw Gateway 必備)
        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;
    }
}

啟用站點並申請憑證:

# 啟用站點
sudo ln -s /etc/nginx/sites-available/openclaw /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

# 申請 Let's Encrypt 憑證
sudo certbot --nginx -d openclaw.yourdomain.com

方案 B:Caddy(自動 HTTPS)

Caddy 內建自動 HTTPS,設定更為精簡:

# Caddyfile
openclaw.yourdomain.com {
    reverse_proxy localhost:3000
    header {
        X-Frame-Options DENY
        X-Content-Type-Options nosniff
        Strict-Transport-Security "max-age=31536000"
    }
}

六、systemd Service 配置

若你的環境不適合使用 Docker(例如輕量 VPS 或已有 OpenClaw 直接安裝),systemd 是最直接的服務管理方案[2]

# /etc/systemd/system/openclaw.service
[Unit]
Description=OpenClaw AI Agent Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openclaw
Group=openclaw
WorkingDirectory=/home/openclaw
ExecStart=/usr/local/bin/openclaw server --mode gateway --host 0.0.0.0 --port 3000
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw

# 安全加固
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/openclaw/.openclaw /home/openclaw/workspace
PrivateTmp=yes

# 環境變數
EnvironmentFile=/home/openclaw/.openclaw/.env

[Install]
WantedBy=multi-user.target

啟用並管理服務:

# 重新載入 systemd、啟用並啟動服務
sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw

# 查看服務狀態與日誌
sudo systemctl status openclaw
sudo journalctl -u openclaw -f --no-pager

七、雲端部署(AWS / GCP / Azure)

三大雲端平台皆可部署 OpenClaw,以下是各平台的推薦方案與最低規格:

AWS

元件推薦服務規格
運算EC2 (t3.medium) 或 ECS Fargate2 vCPU / 4 GB RAM
儲存EBS gp320 GB
網路ALB + ACM 憑證HTTPS 終止
監控CloudWatch日誌 + 指標
# EC2 快速部署(Ubuntu 22.04 / 24.04)
sudo apt update && sudo apt install -y docker.io docker-compose-v2
sudo usermod -aG docker $USER
newgrp docker

# 拉取並啟動
mkdir ~/openclaw-server && cd ~/openclaw-server
# 將 docker-compose.yml 和 .env 放入此目錄
docker compose up -d

GCP

推薦使用 Compute Engine(e2-medium)搭配 Cloud Load Balancing,或直接以 Cloud Run 部署容器映像。Cloud Run 的優勢在於自動擴縮與按使用量計費。

Azure

推薦 Azure Container Instances(ACI)或 Azure VM(B2s)。ACI 適合快速測試;VM 方案則與上述 Docker Compose 流程一致,搭配 Application Gateway 提供 HTTPS。

共通建議:無論使用哪個雲端平台,都應將 OPENCLAW_GATEWAY_TOKEN 存放在各平台的 Secrets Manager(AWS Secrets Manager / GCP Secret Manager / Azure Key Vault)中,避免明文寫入環境變數[6]

八、健康檢查與監控

生產環境必須建立健康檢查機制,確保 OpenClaw 持續可用[7]

Docker 內建健康檢查

前述 docker-compose.yml 已包含 healthcheck 區段。檢視健康狀態:

# 查看容器健康狀態
docker inspect --format='{{.State.Health.Status}}' openclaw-server

# 查看最近的健康檢查記錄
docker inspect --format='{{json .State.Health}}' openclaw-server | jq

外部監控腳本

#!/bin/bash
# check-openclaw.sh — 搭配 crontab 每 5 分鐘執行

HEALTH_URL="http://localhost:3000/health"
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$HEALTH_URL" --max-time 10)

if [ "$RESPONSE" != "200" ]; then
  echo "[$(date)] OpenClaw health check failed (HTTP $RESPONSE)" >> /var/log/openclaw-monitor.log
  docker compose -f ~/openclaw-server/docker-compose.yml restart
  # 可選:發送告警通知
  # curl -X POST "https://hooks.slack.com/services/YOUR/WEBHOOK" \
  #   -H 'Content-type: application/json' \
  #   -d '{"text":"OpenClaw health check failed, restarting..."}'
fi

加入 crontab:

# 每 5 分鐘執行健康檢查
*/5 * * * * /home/openclaw/check-openclaw.sh

日誌管理

Docker 日誌預設會無限增長,建議限制大小:

# 在 docker-compose.yml 的 service 底下加入
    logging:
      driver: "json-file"
      options:
        max-size: "50m"
        max-file: "3"

九、常見問題

Q1:Docker 與 systemd 該選哪個?

如果你的主機已安裝 Docker,優先選擇 Docker Compose。Docker 提供更好的隔離性、可攜性與一致的部署體驗。systemd 適合極度受限的環境(例如記憶體低於 1 GB 的 VPS),或你明確不希望引入容器的場景[1]

Q2:容器重啟後設定消失了?

檢查 Volume 是否正確掛載。執行 docker volume ls 確認 openclaw-data 存在,再用 docker inspect openclaw-server 確認 Mounts 區段指向正確路徑。

Q3:WebSocket 連線在 Nginx 後面斷開?

確認 Nginx 設定中包含 proxy_set_header Upgradeproxy_set_header Connection "upgrade",並將 proxy_read_timeout 設為足夠長的時間(建議 86400s)[5]

Q4:如何更新 OpenClaw 版本?

# 拉取最新映像並重啟(資料透過 Volume 保留)
cd ~/openclaw-server
docker compose pull
docker compose up -d

Q5:Ubuntu 安裝 Docker 的最快方式?

# Ubuntu 22.04 / 24.04 一鍵安裝 Docker
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# 登出再登入後生效

Q6:如何限制 OpenClaw 的系統資源使用?

docker-compose.yml 中使用 deploy.resources.limits 設定 CPU 與記憶體上限(前述範例已包含)。systemd 方案可在 service 檔中加入 MemoryMax=2GCPUQuota=200%

Q7:可以在 Raspberry Pi 上用 Docker 部署嗎?

可以,但需使用 ARM 架構的映像。OpenClaw 官方提供多架構映像(amd64 / arm64),Raspberry Pi 4 或更新機型搭配 4 GB 以上記憶體即可運行[7]

需要企業級 OpenClaw 部署規劃?超智諮詢提供從架構設計到上線維運的完整技術顧問服務。立即諮詢