Skip to content
返回部落格
1 分鐘閱讀 作者 OCLauncher Team

如何在 Fly.io 上部署 OpenClaw(逐步教學)

完整的 OpenClaw 自架指南 — 從建立 Fly 應用程式、設定密鑰,到連接通訊頻道。比較自架 OpenClaw 託管成本與託管方案。

fly.io self-hosting deployment tutorial openclaw hosting managed openclaw ai agent hosting
OCLauncher Team

OCLauncher Team

Building AI tools that work while you sleep.

如何在 Fly.io 上部署 OpenClaw(逐步教學)

如何在 Fly.io 上部署 OpenClaw(逐步教學)

OpenClaw 是一個擁有超過 68K GitHub 星星的開源 AI 代理框架。它能將大型語言模型變成全天候的個人助手,連接 Discord、Telegram、WhatsApp 等通訊平台。

Fly.io 是最受歡迎的 OpenClaw 託管平台之一。它提供持久化儲存、自動 HTTPS 和全球邊緣部署 — 這些都是全天候 AI 代理所需的功能。本指南將逐步帶你完成一個可用於生產環境的 Fly.io 部署。

參考資料: 本指南基於官方 OpenClaw Fly.io 文件 和中文社群指南。

準備工作

開始之前,請確保你有:

  • 已安裝並認證的 flyctl CLI
  • Fly.io 帳號(免費方案即可開始)
  • Anthropic API 金鑰(或其他供應商的金鑰,如 OpenAI、Google 等)
  • 頻道憑證 — Discord 機器人 Token、Telegram 機器人 Token 或 WhatsApp 設定,取決於你想連接哪些通訊平台

步驟一:建立 Fly 應用程式

複製 OpenClaw 儲存庫並建立新的 Fly 應用程式和持久化磁碟區:

# 複製儲存庫
git clone https://github.com/openclaw/openclaw.git
cd openclaw

# 建立新的 Fly 應用程式(選擇你自己的名稱)
fly apps create my-openclaw

# 建立持久化磁碟區(1 GB 通常就夠了)
fly volumes create openclaw_data --size 1 --region iad

選擇離你最近的區域。常見選項包括 lhr(倫敦)、iad(維吉尼亞)和 sjc(聖荷西)。你的 AI 代理回應延遲部分取決於這個選擇。

步驟二:設定 fly.toml

編輯複製的儲存庫中的 fly.toml,將應用程式名稱改成你的:

app = "my-openclaw"
primary_region = "iad"

[build]
  dockerfile = "Dockerfile"

[env]
  NODE_ENV = "production"
  OPENCLAW_PREFER_PNPM = "1"
  OPENCLAW_STATE_DIR = "/data"
  NODE_OPTIONS = "--max-old-space-size=1536"

[processes]
  app = "node dist/index.js gateway --allow-unconfigured --port 3000 --bind lan"

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = false
  auto_start_machines = true
  min_machines_running = 1
  processes = ["app"]

[[vm]]
  size = "shared-cpu-2x"
  memory = "2048mb"

[mounts]
  source = "openclaw_data"
  destination = "/data"

需要注意的幾個設定:

設定重要原因
--bind lan綁定到 0.0.0.0,讓 Fly 的代理能連到閘道器
--allow-unconfigured允許閘道器在沒有設定檔的情況下啟動(之後再建立)
internal_port = 3000必須與 --port 旗標一致,Fly 健康檢查才能通過
memory = "2048mb"512 MB 太小 — 建議至少 2 GB
OPENCLAW_STATE_DIR = "/data"將狀態(對話、記憶、憑證)持久化到磁碟區

步驟三:設定密鑰

所有敏感資訊都使用環境變數。這樣可以避免它們出現在設定檔中被意外記錄或暴露:

# 必要:閘道器認證 Token(非迴路綁定時需要)
fly secrets set OPENCLAW_GATEWAY_TOKEN=$(openssl rand -hex 32)

# 模型供應商 API 金鑰
fly secrets set ANTHROPIC_API_KEY=sk-ant-...

# 可選:其他供應商
fly secrets set OPENAI_API_KEY=sk-...
fly secrets set GOOGLE_API_KEY=...

# 頻道 Token(根據需要新增)
fly secrets set DISCORD_BOT_TOKEN=MTQ...

請妥善保存你的 OPENCLAW_GATEWAY_TOKEN — 稍後存取控制介面時會用到。

步驟四:部署

fly deploy

首次部署會建構 Docker 映像,通常需要 2-3 分鐘。後續部署會更快。

部署完成後,確認一切正常運作:

fly status
fly logs

你應該會看到類似以下的輸出:

[gateway] listening on ws://0.0.0.0:3000 (PID xxx)

如果你設定了 Discord Token,還應該會看到:

[discord] logged in to discord as YourBot#1234

步驟五:建立設定檔

透過 SSH 連線到運行中的機器來建立正式的設定:

fly ssh console

然後在持久化磁碟區上建立設定檔:

cat > /data/openclaw.json << 'EOF'
{
  "agents": {
    "defaults": {
      "model": {
        "primary": "anthropic/claude-sonnet-4-5",
        "fallbacks": ["openai/gpt-4o"]
      }
    },
    "list": [
      {
        "id": "main",
        "default": true
      }
    ]
  },
  "auth": {
    "profiles": {
      "anthropic:default": { "mode": "token", "provider": "anthropic" }
    }
  },
  "bindings": [
    {
      "agentId": "main",
      "match": { "channel": "discord" }
    }
  ],
  "channels": {
    "discord": {
      "enabled": true,
      "groupPolicy": "allowlist",
      "guilds": {
        "YOUR_GUILD_ID": {
          "channels": { "general": { "allow": true } },
          "requireMention": false
        }
      }
    }
  },
  "gateway": {
    "mode": "local",
    "bind": "auto"
  }
}
EOF

將 YOUR_GUILD_ID 替換為你實際的 Discord 伺服器 ID。Discord 機器人 Token 會自動從 DISCORD_BOT_TOKEN 環境變數讀取 — 不需要放在設定檔中。

退出 SSH 並重新啟動機器以套用設定:

exit
fly machine restart <machine-id>

你可以用 fly machines list 查詢機器 ID。

步驟六:存取與驗證

控制介面

打開瀏覽器,前往:

https://my-openclaw.fly.dev

貼上你的閘道器 Token(之前產生的 OPENCLAW_GATEWAY_TOKEN)來進行認證。控制介面讓你可以與代理對話、查看日誌和管理設定。

日誌與 SSH

# 即時日誌
fly logs

# SSH 進入機器
fly ssh console

疑難排解

以下是最常見的問題及解決方法:

「應用程式未在預期位址上監聽」

閘道器綁定到 127.0.0.1 而非 0.0.0.0。在 fly.toml 的程序命令中加入 --bind lan。

健康檢查失敗

Fly 無法連接到閘道器。確保 fly.toml 中的 internal_port 與程序命令中的 --port 旗標一致。

OOM / 記憶體問題

如果容器持續重新啟動或出現 SIGABRT 錯誤,表示機器需要更多記憶體。將 fly.toml 更新為至少 2048 MB,或執行:

fly machine update <machine-id> --vm-memory 2048 -y

閘道器鎖定錯誤

如果閘道器在重新啟動後拒絕啟動並顯示「已在運行」錯誤,請刪除過期的鎖定檔案:

fly ssh console --command "rm -f /data/gateway.*.lock"
fly machine restart <machine-id>

重新啟動後狀態未持久化

確保 fly.toml 的環境設定區段中設定了 OPENCLAW_STATE_DIR=/data,並且磁碟區掛載在 /data。

更新

要將 OpenClaw 更新到最新版本:

git pull
fly deploy

fly deploy 之後,用 fly status 和 fly logs 確認一切正常。

費用

使用建議的設定(shared-cpu-2x、2 GB 記憶體、1 GB 磁碟區),預計每月花費約 $10-15 美元,視使用量而定。Fly.io 的免費方案涵蓋部分額度,因此第一個月的費用可能更低。詳情請參閱 Fly.io 定價。

12 個月成本比較

自行架設(Fly.io)OCLauncher
運算(2 GB VM)~$12/月已包含
AI API Token$20–60/月(自行付費)每月 3M Token 已包含
儲存空間(磁碟區)~$0.15/月8GB 已包含
儀表板 / UI無(僅 CLI)完整網頁儀表板
設定時間1–3 小時30 秒
維護自行負責(更新、監控、當機)全託管
12 個月總計~$250–870(運算 + Token)$228($19 × 12)

最大的成本差異來自 AI Token。如果自行架設,你需要直接向 API 供應商付費 — 以 Anthropic 目前的費率,每月 3M Token 大約需要 $20-60 美元,視模型和輸入/輸出比例而定。OCLauncher 將 3M Token 包含在每月 $19 的價格中。

更簡單的替代方案

在 Fly.io 上自架讓你擁有完全的掌控權,對於喜歡管理基礎設施的開發者來說是很有成就感的。但這也意味著你需要自己負責整個生命週期:配置機器、設定密鑰、撰寫 TOML 檔案、SSH 進入建立設定檔、監控運作時間和處理更新。

如果你想跳過以上所有步驟 — OCLauncher 為你在 30 秒內部署 OpenClaw,每月僅 US$19,包含 3M AI Token、8GB 儲存空間、所有通訊頻道和完整儀表板。它底層運行在相同的 Fly.io 基礎設施上,所以你能獲得同樣的效能,卻不需要承擔營運上的負擔。

相關文章