跳到內容

在 Hetzner 上部署 OpenClaw (Docker 生產環境指南)

你是不是也遇過這種情況:好不容易在本地跑通了一個機器人或 Gateway,但只要一關掉電腦或斷開 SSH,服務就停了。或者每次重啟 Docker 容器,之前的登入狀態和設定就全部消失,一切都要重頭來過。

如果你想要一個穩定、24/7 在線,而且每個月只要約 5 美金的生產環境,這篇指南會教你如何在 Hetzner VPS 上搞定這一切。我們會使用 Docker 來運行 OpenClaw Gateway,並確保你的資料在重啟或重新構建後依然存在。

  • 具有 root 權限的 Hetzner VPS (建議使用 Ubuntu 或 Debian)
  • 從你的筆電 SSH 連線到伺服器的能力
  • 熟悉基礎的 SSH 操作與複製貼上
  • 大約 20 分鐘的時間
  • Docker 與 Docker Compose
  • Model 認證憑據
  • 選配的 Provider 憑據(如 WhatsApp QR, Telegram bot token, Gmail OAuth)

在 Hetzner 建立一個 Ubuntu 或 Debian 的 VPS。使用 root 帳號連線:

Terminal window
ssh root@YOUR_VPS_IP

請記住這個伺服器是有狀態的,不要把它當作拋棄式基礎設施。

在 VPS 上執行以下指令:

Terminal window
apt-get update
apt-get install -y git curl ca-certificates
curl -fsSL https://get.docker.com | sh

檢查版本確保安裝成功:

Terminal window
docker --version
docker compose version
Terminal window
git clone https://github.com/openclaw/openclaw.git
cd openclaw

Docker 容器本身是易失的,所有需要長期保存的狀態都必須放在宿主機上。

Terminal window
mkdir -p /root/.openclaw
mkdir -p /root/.openclaw/workspace
# 將所有權交給容器使用者 (uid 1000):
chown -R 1000:1000 /root/.openclaw
chown -R 1000:1000 /root/.openclaw/workspace

在專案根目錄建立 .env 檔案。你可以使用 openssl rand -hex 32 來產生強密碼。

Terminal window
OPENCLAW_IMAGE=openclaw:latest
OPENCLAW_GATEWAY_TOKEN=你的強密碼
OPENCLAW_GATEWAY_BIND=lan
OPENCLAW_GATEWAY_PORT=18789
OPENCLAW_CONFIG_DIR=/root/.openclaw
OPENCLAW_WORKSPACE_DIR=/root/.openclaw/workspace
GOG_KEYRING_PASSWORD=你的強密碼
XDG_CONFIG_HOME=/home/node/.openclaw

切記:不要將此檔案提交到 Git。

建立或更新 docker-compose.yml:

services:
openclaw-gateway:
image: ${OPENCLAW_IMAGE}
build: .
restart: unless-stopped
env_file:
- .env
environment:
- HOME=/home/node
- NODE_ENV=production
- TERM=xterm-256color
- OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND}
- OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT}
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD}
- XDG_CONFIG_HOME=${XDG_CONFIG_HOME}
- PATH=/home/linuxbrew/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
volumes:
- ${OPENCLAW_CONFIG_DIR}:/home/node/.openclaw
- ${OPENCLAW_WORKSPACE_DIR}:/home/node/.openclaw/workspace
ports:
# 建議:讓 Gateway 僅在 VPS 本地監聽,透過 SSH tunnel 存取
- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789"
command:
[
"node",
"dist/index.js",
"gateway",
"--bind",
"${OPENCLAW_GATEWAY_BIND}",
"--port",
"${OPENCLAW_GATEWAY_PORT}",
]

在運行中的容器內安裝二進位檔是一個陷阱,重啟後就會消失。所有 Skill 需要的外部工具(如 gog, wacli)都必須在構建 Image 時就裝好。

修改 Dockerfile 範例:

FROM node:22-bookworm
RUN apt-get update && apt-get install -y socat && rm -rf /var/lib/apt/lists/*
# 安裝 Gmail CLI
RUN curl -L https://github.com/steipete/gog/releases/latest/download/gog_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/gog
# 安裝 Google Places CLI
RUN curl -L https://github.com/steipete/goplaces/releases/latest/download/goplaces_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/goplaces
# 安裝 WhatsApp CLI
RUN curl -L https://github.com/steipete/wacli/releases/latest/download/wacli_Linux_x86_64.tar.gz \
| tar -xz -C /usr/local/bin && chmod +x /usr/local/bin/wacli
WORKDIR /app
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml .npmrc ./
COPY ui/package.json ./ui/package.json
COPY scripts ./scripts
RUN corepack enable
RUN pnpm install --frozen-lockfile
COPY . .
RUN pnpm build
RUN pnpm ui:install
RUN pnpm ui:build
ENV NODE_ENV=production
CMD ["node","dist/index.js"]
Terminal window
docker compose build
docker compose up -d openclaw-gateway

確認二進位檔是否就緒:

Terminal window
docker compose exec openclaw-gateway which gog

檢查日誌,看到 [gateway] listening on ws://0.0.0.0:18789 表示成功。

在你的筆電上建立 SSH tunnel:

Terminal window
ssh -N -L 18789:127.0.0.1:18789 root@YOUR_VPS_IP

現在你可以打開瀏覽器存取 http://127.0.0.1:18789/ 並貼上你的 Gateway token。

  • 記憶體不足 (OOM):Hetzner 的價格會變動。如果你遇到 OOM 錯誤,請升級到較大的 VPS 規格。
  • 重啟後工具消失:這通常是因為你直接在容器裡用 apt 或 curl 安裝東西。請務必更新 Dockerfile 並重新執行 docker compose build。
  • 無法存取 Control UI:檢查你的 SSH tunnel 是否還在運行,或者確認 .env 中的 OPENCLAW_GATEWAY_PORT 是否與你 tunnel 的連接埠一致。
  • 權限錯誤:如果容器無法寫入設定,請重新檢查步驟 4 中的 chown -R 1000:1000 指令。

如果你在設定過程中遇到任何問題,可以詢問我們的 AI Setup Assistant。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。