尚未安裝 OpenClaw?點此查看一鍵安裝指令
curl -fsSL https://openclaw.ai/install.sh | bashiwr -useb https://openclaw.ai/install.ps1 | iexcurl -fsSL https://openclaw.ai/install.cmd -o install.cmd && install.cmd && del install.cmd一、部署選項概覽
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_KEY | LLM API 金鑰 | (必填) |
OPENCLAW_MODE | 運行模式(local / gateway) | local |
OPENCLAW_GATEWAY_HOST | 監聽位址 | 127.0.0.1 |
OPENCLAW_GATEWAY_PORT | 監聽連接埠 | 3000 |
OPENCLAW_GATEWAY_TOKEN | Gateway 認證 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 Fargate | 2 vCPU / 4 GB RAM |
| 儲存 | EBS gp3 | 20 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 Upgrade 與 proxy_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=2G 與 CPUQuota=200%。
Q7:可以在 Raspberry Pi 上用 Docker 部署嗎?
可以,但需使用 ARM 架構的映像。OpenClaw 官方提供多架構映像(amd64 / arm64),Raspberry Pi 4 或更新機型搭配 4 GB 以上記憶體即可運行[7]。
需要企業級 OpenClaw 部署規劃?超智諮詢提供從架構設計到上線維運的完整技術顧問服務。立即諮詢


