如何安裝 OpenClaw(macOS、Windows、Linux):乾淨安裝 + 驗證

嗨,自动化建設者們。如果你準備安裝 OpenClaw但不確定要選擇哪種路徑——CLI 安裝、Docker 或其他——我已經遍歷了 macOS、Ubuntu 和 Windows WSL2 的每個主要安裝路徑。
我將帶你走過決策點、特定平台步驟、實際重要的驗證檢查,以及如果出問題時如何乾淨地卸載。這是我在三台不同機器上成功(和失敗)的經驗。
選擇你的安裝路徑(CLI vs Docker)

何時使用 CLI(本地、輕量、開發者優先)
推薦給:
- 單台機器個人使用
- 完整系統存取(檔案操作、瀏覽器控制、本地自動化)
- 更快的迭代和除錯
- 最低的安裝障礙
優勢:
- 直接訪問 Gateway 日誌(
openclaw gateway logs) - 一鍵安裝:
npm install -g openclaw@latest - 入門嚮導自動處理守護程序設置
- 更容易的技能安裝和配置
安裝時間: 如果你已安裝 Node.js 22+,約需 5-10 分鐘。
何時使用 Docker(隔離、可重現、更安全)
建議用於:
- 伺服器部署或 VPS 託管
- 需要隔離的共享環境
- 在一台主機上運行多個 OpenClaw 實例
- 安全性敏感的設置(默認啟用沙箱模式)
優勢:
- 為群組/頻道自動化提供每次會話的沙箱
- 在不同環境中可重現的構建
- 更容易拆除和重建
- 無 Node.js 版本衝突
設置時間: 包括 Docker 安裝和鏡像拉取在內約 10-15 分鐘。
根據官方 OpenClaw 文檔,基於 Docker 的安裝支持 Nix 模式,用於聲明式配置和每次會話的沙箱。
初學者的決策捷徑
macOS 安裝

先決條件(Homebrew、權限)
檢查 Node.js 版本:
node --version
# Must show v22.x.x or higher
If you don't have Node 22+, install via Homebrew:
brew install node@22
brew link node@22
Or use nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
nvm install 22 && nvm use 22
CLI Install Steps
# Install OpenClaw globally
npm install -g openclaw@latest
# Verify installation
openclaw --version
# Should show: openclaw/2026.1.29
# Run onboarding wizard (installs launchd daemon)
openclaw onboard --install-daemon
What --install-daemon does:
- Creates launchd service at
~/Library/LaunchAgents/com.openclaw.gateway.plist - Auto-starts Gateway on login
- Runs Gateway in background (you don't need terminal open)
Docker Install Alternative
# Pull latest image
docker pull openclaw/openclaw:latest
# Run with volume mounts for config persistence
docker run -d \
--name openclaw-gateway \
-v ~/.openclaw:/root/.openclaw \
-p 18789:18789 \
openclaw/openclaw:latest \
gateway --port 18789
Per GitHub issue #1679, Docker deployments require explicit auth token configuration when accessed via reverse proxy.
Default Config & File Locations
~/.openclaw/
├── openclaw.json # Main config (model, channels, tools)
├── state/ # Session data, message history
├── workspace/ # Skills and custom tools
└── credentials/ # OAuth tokens, API keys
~/Library/LaunchAgents/
└── com.openclaw.gateway.plist # macOS daemon config
Windows Install (WSL2 Recommended)

Why WSL2 is Required
OpenClaw does not support native Windows. The WhatsApp Web protocol, iMessage integration, and Unix-based process management all assume a POSIX environment.
According to the Windows platform guide, WSL2 (Windows Subsystem for Linux) is the only supported path for Windows users.
WSL2 Setup Checklist
- Enable WSL2:
# Run in PowerShell as Administrator
wsl --install
This installs Ubuntu 24.04 by default. Restart your computer when prompted.
- Launch Ubuntu:
- Open "Ubuntu" from Start Menu
- Create username and password when prompted
- Verify WSL version:
wsl --list --verbose
# Should show VERSION = 2
If it shows VERSION = 1, upgrade:
wsl --set-version Ubuntu 2
OpenClaw Install Inside WSL
Once inside Ubuntu (WSL2), follow the Linux install steps:
# Update packages
sudo apt update && sudo apt upgrade -y
# Install Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Verify Node version
node --version
# Install OpenClaw
npm install -g openclaw@latest
# Run onboarding
openclaw onboard --install-daemon
Common Windows-Specific Pitfalls
Issue 1: WSL network access from Windows
By default, WSL2 uses a virtualized network. To access the OpenClaw web dashboard from Windows browser:
- Find WSL IP:
ip addr show eth0 | grep inet
# Example output: inet 172.20.224.5/20
- Access dashboard at
http://172.20.224.5:18789/(replace with your WSL IP)
Issue 2: File system performance
Store ~/.openclaw/ inside WSL file system (/home/username/), not Windows (/mnt/c/). Cross-system file access is 10-20x slower.
Issue 3: systemd not running
Some WSL2 distributions don't enable systemd by default. Check:
systemctl --version
If it fails, enable systemd in /etc/wsl.conf:
sudo nano /etc/wsl.conf
Add:
[boot]
systemd=true
Restart WSL:
wsl --shutdown
Linux Install

Supported Distros
Package Dependencies
Ubuntu/Debian:
sudo apt update
sudo apt install -y curl git build-essential
Fedora:
sudo dnf install -y curl git gcc-c++ make
Arch:
sudo pacman -S curl git base-devel
CLI Install Steps
# Install Node.js 22
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
# Or use nvm for user-level install
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.bashrc
nvm install 22 && nvm use 22
# Install OpenClaw
npm install -g openclaw@latest
# Run onboarding (installs systemd service)
openclaw onboard --install-daemon
Running OpenClaw as a Service (Optional)
The --install-daemon flag creates a systemd user service automatically. Verify it's running:
systemctl --user status openclaw-gateway
Expected output:
● openclaw-gateway.service - OpenClaw Gateway
Loaded: loaded (/home/user/.config/systemd/user/openclaw-gateway.service)
Active: active (running)
Manual service management:
# Start
systemctl --user start openclaw-gateway
# Stop
systemctl --user stop openclaw-gateway
# Restart
systemctl --user restart openclaw-gateway
# View logs
journalctl --user -u openclaw-gateway -f
Enable auto-start on boot:
systemctl --user enable openclaw-gateway
sudo loginctl enable-linger $USER
The enable-linger command allows user services to start before login, which is necessary for headless servers.
Verify Installation

Check Version Output
openclaw --version
Expected output:
openclaw/2026.1.29
If you see command not found, verify npm global bin is in your PATH:
echo $PATH | grep npm
Add it if missing:
echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc
source ~/.bashrc
Run Health Checks
openclaw doctor
Healthy installation output:
✅ CLI version: 2026.1.29
✅ Node.js: v22.11.0
✅ Gateway service: running (PID 12345)
✅ Config: ~/.openclaw/openclaw.json
✅ Auth: Anthropic API key configured
⚠️ DM policy: pairing (requires approval for unknown senders)
ℹ️ Channels: telegram, whatsapp (2 connected)
Common warnings:
⚠️ Gateway exposed on 0.0.0.0- See security guide⚠️ Auth mode: none- This is removed in v2026.1.29+ (per release notes)
Read Logs Correctly
# View recent Gateway logs
openclaw gateway logs --tail 50
# Follow logs in real-time
openclaw gateway logs --follow
Key log patterns to recognize:
Successful startup:
2026-01-30T12:00:00.000Z [gateway] agent model: anthropic/claude-sonnet-4-5-20250929
2026-01-30T12:00:00.100Z [gateway] listening on ws://127.0.0.1:18789 (PID 12345)
2026-01-30T12:00:00.200Z [canvas] host mounted at http://127.0.0.1:18793/__openclaw__/canvas/
Authentication working:
2026-01-30T12:01:00.000Z [telegram] connected @yourbotname
2026-01-30T12:01:00.100Z [whatsapp] paired device: Chrome (Linux)
Problem indicators:
Error: Missing API key for Anthropic
[ws] unauthorized conn=xxx reason=token_missing
Error: EACCES: permission denied
What "Working" Looks Like
Minimal working test:
- Send a message to your Telegram bot:
Hello
- Expected response:
Hello! I'm your OpenClaw assistant. How can I help you today?
- Check logs show the interaction:
openclaw gateway logs --tail 10
- Should contain:
[telegram] ← message from @yourusername
[agent] generating response (model: claude-sonnet-4-5)
[telegram] → reply sent
If you see this flow, your installation is working correctly.
Uninstall or Reset Configuration
Full Uninstall Steps
macOS:
# Stop and remove daemon
openclaw gateway stop
launchctl unload ~/Library/LaunchAgents/com.openclaw.gateway.plist
rm ~/Library/LaunchAgents/com.openclaw.gateway.plist
# Remove OpenClaw package
npm uninstall -g openclaw
# Remove config and data (optional)
rm -rf ~/.openclaw
Linux:
# Stop and disable service
systemctl --user stop openclaw-gateway
systemctl --user disable openclaw-gateway
rm ~/.config/systemd/user/openclaw-gateway.service
# Remove package
npm uninstall -g openclaw
# Remove config and data (optional)
rm -rf ~/.openclaw
Windows (WSL2):
Same as Linux steps above, run inside Ubuntu WSL2 terminal.
Resetting Config Without Reinstall
Option 1: Delete config only (preserves session history)
mv ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup
openclaw onboard
Option 2: Full state reset (fresh start)
openclaw gateway stop
mv ~/.openclaw ~/.openclaw.backup
openclaw onboard --install-daemon
Option 3: Reset specific channels
rm ~/.openclaw/credentials/telegram.json
openclaw channels login
When a Clean Reset is the Right Move
Reset if:
- Gateway won't start after config changes
- Channel pairing is broken (WhatsApp QR expired, Telegram token invalid)
- You switched API providers (Anthropic ↔ OpenAI) and seeing auth errors
- Upgrade migration failed (
openclaw doctorshows state version mismatch)
Don't reset if:
- You just want to change one setting (edit
~/.openclaw/openclaw.jsondirectly) - Daemon isn't starting (check
systemctl --user status openclaw-gatewayfirst) - Pairing codes aren't working (run
openclaw pairing listto see pending pairs)
I've hit all these scenarios testing across platforms. The most common mistake is resetting config when you just need to restart the daemon—save yourself 10 minutes and check service status first.
Prefer a guided setup? At Macaron, we built an AI that remembers your context and creates personalized mini-apps from a single sentence—no technical setup required. If you want to test how conversation turns into custom tools for daily tasks like meal planning or habit tracking, sign up and run your first automation instantly with Macaron.
FAQ
Q: Do I need Node.js 22+ or can I use an older version?
Node.js 22+ is required. Older versions won't work—you'll get syntax errors immediately.
問:Gateway 顯示「運行中」,但我無法訪問儀表板。怎麼回事?
在 v2026.1.29 中,默認綁定已更改為僅限本地主機。請從同一台機器訪問 http://127.0.0.1:18789,或設置 Tailscale 進行遠程訪問。
問:WhatsApp 不斷斷線重連。我該怎麼解決?
刪除憑證並重新配對:rm -rf ~/.openclaw/credentials/whatsapp 然後再次運行 openclaw channels login --channel whatsapp。
問:安裝後找不到 openclaw 命令。
將 npm 的全局 bin 添加到您的 PATH:echo 'export PATH="$PATH:$(npm config get prefix)/bin"' >> ~/.bashrc && source ~/.bashrc
問:將 gateway 暴露在互聯網上是否安全?
不安全。請使用 Tailscale。2026 年 1 月直接暴露在互聯網上存在多個嚴重漏洞。
問:可以在 Raspberry Pi 或便宜的 VPS 上運行嗎?
可以。需要 1GB 以上的 RAM。請遵循 Linux 安裝步驟—Docker 可行但會使用更多內存。










