logo
icon

OneCLI

開源 AI 代理憑證閘道與保險庫。一次儲存 API 金鑰,代理發出 HTTP 請求時自動注入 — 代理永遠不會看到真實密鑰。

template cover
部署次數1
發布者glasschan
建立於2026-08-01
標籤
AISecurityVaultCredentialsAI AgentsGateway

模板內的服務

OneCLI — AI 代理的密鑰保險庫(由 SEAFOODHOLDHAND 建立)

OneCLI 是開源的憑證閘道,位於你的 AI 代理與外部服務之間。將真實 API 金鑰儲存於 OneCLI 的加密保險庫中,給予代理一個 placeholder(例如 FAKE_KEY),OneCLI 閘道會在請求時自動替換為真實憑證 — 代理永遠不會看到真實密鑰。

此模板一鍵部署完整的 OneCLI 實例。

架構

[Zeabur LB] → OneCLI 應用(單一 image,兩個 process)
                  ├─ :10254  → Next.js 網頁控制台(UI + API)
                  └─ :10255  → Rust 閘道(憑證注入代理)
[PostgreSQL]  → OneCLI 資料庫(代理、密鑰、審計日誌)

OneCLI app image (ghcr.io/onecli/onecli:latest) 包含:

  • Next.js 網頁控制台(port 10254,UI、代理管理、密鑰管理)
  • Rust 閘道(port 10255,透明的憑證注入代理)
  • Prisma migrations 於容器啟動時自動執行
  • 自動產生 SECRET_ENCRYPTION_KEY 持久化於 /app/data/(AES-256-GCM)

⚠️ 儲存真實憑證前請先閱讀 — 安全性

預設情況下,此模板以單用戶 / 本地模式部署:控制台無需登入即會直接開啟。 任何知道你控制台網域的人都能檢視並管理其中儲存的所有 API 金鑰。OneCLI 是一個憑證保險庫 — 此預設狀態暴露於公共網際網路並不安全。

儲存任何真實密鑰前,請執行以下其中一項:

  1. 以 Google OAuth 鎖定控制台 — 於 Zeabur Dashboard 的 onecli 服務下,同時設定 NEXTAUTH_SECRET + GOOGLE_CLIENT_ID + GOOGLE_CLIENT_SECRET(三者缺一不可,然後重新啟動)。請見下方「部署後配置」。
  2. 或將控制台置於私人 / 非公開網域(例如僅能透過 VPN 或私人網路存取),如此便只有你能開啟。

閘道網域(代理發送請求之處)永遠為公開 — 這並無問題,閘道會以每個代理的 access token 驗證每次呼叫。有風險的僅是預設本地模式下的控制台網域

運作方式

  1. 於瀏覽器開啟 https://your-domain.zeabur.app
  2. 直接進入控制台(單用戶模式無需登入)
  3. 建立第一個代理並取得 access token
  4. 將真實 API 金鑰加入保險庫
  5. 將你 AI 代理的 HTTP client 指向閘道 URL
你的代理 → [FAKE_KEY] → OneCLI 閘道 → [REAL_KEY] → 外部 API(OpenAI、GitHub 等)
                                        ↓
                                    審計日誌 + 速率限制

功能

  • 透明憑證注入 — 代理正常發送 HTTP 請求,閘道處理認證
  • AES-256-GCM 加密儲存 — 密鑰僅於請求時解密
  • 主機與路徑匹配 — 將密鑰路由至特定 API endpoint
  • 多代理支援 — 每個代理擁有各自的 scoped access token
  • Rust 閘道 — 快速、記憶體安全的 HTTP 代理(支援 MITM)
  • 兩種認證模式 — 單用戶(無需登入)或 Google OAuth(多用戶團隊)
  • Vault 整合 — 串接 Bitwarden 隨需注入憑證
  • 完整審計日誌 — 檢視每個代理的行為

首次登入

部署完成後(首次啟動 + migrations 約需 2-3 分鐘):

  1. 於瀏覽器開啟 https://your-domain.zeabur.app
  2. 直接進入控制台(單用戶模式無需登入)
  3. 建立第一個代理並取得 access token
  4. 將密鑰加入保險庫
  5. 將你 AI 代理的 HTTP client 指向閘道 URL

配置你的 AI 代理

取得代理 token 與至少一個密鑰後:

# 範例:將 OpenAI 請求經由 OneCLI 閘道
curl https://your-gateway-domain.zeabur.app/v1/chat/completions \
  -H "Authorization: Bearer <your-agent-access-token>" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4","messages":[{"role":"user","content":"Hello!"}]}'

在你的代理程式碼中,使用 placeholder(例如 FAKE_OPENAI_KEY),OneCLI 會自動替換為真實金鑰。

部署後配置(可選)

你可在 Zeabur Dashboard 的 onecli 服務下自訂環境變數:

啟用 Google OAuth(多用戶模式):

  • NEXTAUTH_SECRET → 你的 NextAuth 密鑰
  • GOOGLE_CLIENT_ID → 你的 Google OAuth client ID
  • GOOGLE_CLIENT_SECRET → 你的 Google OAuth client secret

自訂閘道連接埠:

  • GATEWAY_PORT → 預設 10255

備註

  • 加密金鑰(SECRET_ENCRYPTION_KEY)於首次啟動時自動產生並儲存於 /app/data/請勿遺失此 volume — 一旦遺失,所有已儲存的密鑰將無法復原。
  • Rust 閘道以 HTTPS 攔截(MITM)注入憑證。你的代理必須信任 OneCLI 的 CA 憑證(或在開發環境使用 --insecure-skip-verify)。
  • 資料庫 migrations 透過 entrypoint script 自動執行。
  • All-in-one image 約 500MB(Next.js + Rust 閘道),比分開部署更小。

了解更多:https://github.com/onecli/onecli

如於部署期間遇到任何問題,請透過 GitHub issues 告知: https://github.com/glasschan/seafoodholdhand-zeabur-templates