# 策展 · X (Twitter) 🔥

> 📖 本站完整內容索引（documentation index）：[llms.txt](/llms.txt)

> 作者：Fly.io (@flydotio) · 平台：X (Twitter) · 日期：2026-04-18

> 原始來源：https://x.com/flydotio/status/2044854047061279036

## 中文摘要

Fly.io 推出 Hermes Agent 部署指南，成本約每月 15 美元，即可在 Telegram、Discord 等聊天應用中與自進化 AI Agent 互動。

Fly.io 提供簡易部署方式，將 Nous Research 的「Hermes Agent」轉化為 Machine app，讓使用者透過 Telegram、Discord、Slack、WhatsApp 或 Signal 等平台隨時聊天，Agent 具學習、記憶與互動能力，第一則訊息僅需數分鐘準備時間。

**部署成本與規格**  
預設配置為 `shared-cpu-2x` / 2 GB RAM / 10 GB volume，24/7 運行每月約 15 美元（依地區而異），僅按實際機器運行時間與 volume 儲存計費，可依需求擴展或關閉以節省費用。Fly.io 計算器可精算具體金額。

**前置準備需求**  
- 安裝並登入 `flyctl`，參考官方安裝指南。  
- Fly.io 帳戶需綁定信用卡（Machines 與 volumes 非免費階層）。  
- LLM API 金鑰，推薦 OpenRouter（單一金鑰支援數百模型），Anthropic、OpenAI 或 Nous Portal 亦相容。  
- Telegram bot token：透過 [@BotFather](https://t.me/BotFather) 建立 `/newbot` 並複製 `123456:ABC…` token。  
- Telegram 使用者 ID：訊息 [@userinfobot](https://t.me/userinfobot) 取得數字 ID，用以限制 bot 僅回應特定使用者。  
其他平台如 Discord 或 Slack，則參考 Hermes 訊息文件設定憑證。

**快速部署步驟**  
1. 複製儲存庫：`git clone https://github.com/fly-apps/hermes-flyio.git && cd hermes-flyio && git clone https://github.com/NousResearch/hermes-agent.git`。  
2. 產生全球唯一 app 名稱：`export APP="hermes-$(whoami)-$(openssl rand -hex 3)"`，並替換 `fly.toml` 中的 `my-hermes`。  
3. 建立 app 與 volume：`fly apps create $APP && fly volumes create hermes_data --region sjc --size 10 --yes --app $APP`（指令具冪等性，若名稱衝突重跑步驟 2）。  
4. 設定祕密：`fly secrets set OPENROUTER_API_KEY=sk-or-your-key-here --app $APP` 與 `fly secrets set TELEGRAM_BOT_TOKEN=123456:ABC-your-token-here --app $APP`。  
5. 部署：複製 `fly.toml` 與 `Dockerfile.append` 至 hermes-agent，執行 `fly deploy hermes-agent/ --app $APP`。首次建置需數分鐘（安裝 uv、Node、Playwright 的 Chromium 及 Hermes [all] 額外依賴），後續部署因層緩存加速。成功後 `fly logs` 顯示「⚕ Hermes Gateway Starting...」與無使用者白名單警告（預期行為）。

**首次設定流程**  
透過 SSH 執行互動精靈 `fly ssh console --pty --app $APP -C "hermes setup"`：  
- 選擇「Quick Setup」。  
- 工具配置（如 Exa、Firecrawl、Browserbase、FAL、ElevenLabs、Tinker）可全跳過（Enter）。  
- 選 Telegram，貼上 bot token 與使用者 ID。  
設定後執行 `fly apps restart $APP` 重啟機器（精靈內重啟僅限 SSH 工作階段）。搜尋 Telegram bot 名稱，傳 `/start` 開始聊天，同時 `fly logs --app $APP` 監控日誌。若 SSH 連線失敗，先查 `fly logs` 診斷閘道崩潰。

**更新與持久化**  
更新僅需 `git -C hermes-agent pull` 後重複部署步驟，配置、記憶、技能與會話歷史存於 `/opt/data` volume，不受影響。綁定技能於啟動時自動調和，不覆寫使用者修改。

**備份機制**  
所有學習內容（記憶、技能、SOUL.md、會話 DB、cron jobs）存於 `hermes_data` volume，Fly.io 每日自動快照，預設保留 5 天（可調 1-60 天）。  
- 延長保留：`fly volumes update <volume-id> --snapshot-retention 30 --app $APP`，或於 `fly.toml` [mounts] 設定 `snapshot_retention = 30`。  
- 查詢與還原：`fly volumes snapshots list <volume-id> --app $APP` 與 `fly volumes create hermes_data_restored --snapshot-id <snapshot-id> --size 10 --app $APP`。  
快照前 10 GB 免費，之後增量 $0.08/GB/月，Hermes 部署通常免費內。每日快照有風險（主機故障前學習遺失），建議手動備份：`fly ssh console --pty --app $APP -C "hermes backup create /opt/data/backup.tar.gz" && fly sftp get /opt/data/backup.tar.gz --app $APP`。

**聊天與除錯方式**  
主要透過設定平台（如 Telegram）聊天，閘道確保手機或桌面隨時存取。另可 SSH 進入原生終端 UI：`fly ssh console --pty --app $APP -C "hermes"`（`/quit` 退出），適用除錯、`hermes doctor` 或快速會話。TUI 與閘道共享 `/opt/data`，記憶與歷史同步。

**擴展與效能調整**  
預設 `shared-cpu-2x` / 2 GB 適合單人多平台，重度技能、Playwright 瀏覽或 RL 任務需升級：`fly scale vm shared-cpu-4x --memory 4096 --app $APP` 與 `fly volumes extend <volume-id> --size 20 --app $APP`。預設 `fly.toml` 24/7 運行（`min_machines_running = 1`，`auto_stop_machines = "off"`），純 webhook 模式可改 `auto_stop_machines = "suspend"` 閒置暫停。

**Webhook 整合（GitHub、Stripe 等）**  
預設無公網入口（無 HTTP 服務、無 IP 分配），訊息平台僅需出站連線，故 `https://<your-app>.fly.dev` 無內容。啟用入站 webhook：  
1. 解註 `fly.toml` 的 `[http_service]`，於 `[env]` 加 `HERMES_HOME = "/opt/data"`、`WEBHOOK_HOST = "0.0.0.0"`、`WEBHOOK_PORT = "8644"`。  
2. SSH 執行 `hermes gateway setup`，新增「webhook」平台。  
3. 重新部署並分配 IP：`fly deploy ... && fly ips allocate-v6 --app $APP && fly ips allocate-v4 --shared --app $APP`。  
外部服務可 POST 至 `https://<your-app-name>.fly.dev/webhooks/<route-name>`，路由經 `hermes webhook subscribe …` 或 `config.yaml` 下的 `platforms.webhook.extra.routes` 定義，支援 HMAC 驗證。

**配置參考表**  
所有祕密經 `fly secrets set` 設定（絕不提交程式碼），非祕密變數置 `fly.toml` [env]：  

| 變數 | 設定方式 | 用途 |  
|------|----------|------|  
| `OPENROUTER_API_KEY` / `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `NOUS_API_KEY` 等 | `fly secrets set` | LLM 提供者憑證（任選一） |  
| `TELEGRAM_BOT_TOKEN` | `fly secrets set` | Telegram bot token |  
| `DISCORD_TOKEN` | `fly secrets set` | Discord bot token |  
| `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` | `fly secrets set` | Slack Socket Mode 憑證 |  
| `WEBHOOK_SECRET` | `fly secrets set` | 入站 webhook HMAC 祕密（僅 webhook 啟用時） |  
| `HERMES_HOME` | `fly.toml` | 固定 `/opt/data` 確保寫入 volume |  
| `WEBHOOK_HOST` / `WEBHOOK_PORT` | `fly.toml` | webhook 入站時設定 |  

完整清單見 Hermes 環境變數文件。

**內部運作原理**  
部署時以 Hermes 儲存庫為建置脈絡，注入 `fly.toml` 與 `Dockerfile.append`：  
- 附加 shim `/usr/local/bin/hermes`，經 `gosu` 切換 `hermes` 使用者呼叫 venv 二進位，簡化 `fly ssh console -C "hermes ..."`。  
- CMD 設 `["gateway", "run"]`，容器啟動直入前景閘道（`gateway start` 僅適用主機 systemd）。  
上游機制不變：  
- Entrypoint (`docker/entrypoint.sh`) 以 root 擁有 `/opt/data`（Fly volume root 掛載），切 `hermes` 使用者，初始化 `.env`、`config.yaml`、`SOUL.md`，同步技能，exec 閘道。  
- `/opt/data` 為 `HERMES_HOME`，儲存配置、記憶、技能、DB、cron、hooks、plans、workspace 與工具 $HOME。  
- Playwright Chromium 建置時置 `/opt/hermes/.playwright`，避開 volume 覆蓋。  
更多細節參 Hermes 文件。  

此部署凸顯 Fly.io 在邊緣運算的優勢，讓 Hermes Agent 無縫融入日常聊天，無需公網暴露即具高可用性，備份與擴展設計貼合長期使用，成本透明且彈性。

## 標籤

Agent, 新產品, 教學資源, Deployment, Fly.io, Nous Research
