OmniRoute 遠端 VPS 部署:Codex API 閘道、自動回退與 Caddy HTTPS

OmniRoute 遠端 VPS 部署:Codex API 閘道、自動回退與 Caddy HTTPS,覆寫設定、驗證、權限邊界、故障回退和長期維護。

OmniRoute 的這個教學只處理標題中的具體任務。遠端部署應讓 20128 只監聽回環位址,再由 Caddy 提供 TLS;Codex 使用受限端點令牌,自動回退需要可觀察而不能靜默換模型。

以下所有操作都先放在測試儲存庫、測試帳號或僅回環監聽的服務中。指令中的網域名稱、使用者名稱、路徑與金鑰是佔位符,執行前需要替換。

遠端網關的實際資料路徑

這一節解決的是「遠端網關的實際資料路徑」。先記錄目前狀態,再執行最小動作,最後用獨立證據確認結果。

對 OmniRoute 而言,判斷依據是:遠端部署應讓 20128 只監聽回環位址,再由 Caddy 提供 TLS;Codex 使用受限端點令牌,自動回退需要可觀察而不能靜默換模型。不要在這個階段順手打開更多權限。

1
docker version

執行後保留命令輸出和時間戳記。若輸出依賴目前終端機裡的臨時變量,開啟新終端複查一次。

VPS 上準備 Docker 與持久性卷

按下面順序處理:

  1. 讀取實際版本和目前配置。
  2. 只改變與本節相關的一項設定。
  3. 執行一個唯讀或可撤銷的請求。
  4. 檢查日誌、退出碼和最終檔案。
  5. 失敗時恢復剛才那一項修改。
1
docker volume create omniroute-data

這裡的完成標準不是介面出現,而是在「VPS 上準備 Docker 與持久卷」有可重複結果。

讓 OmniRoute 只監聽 127.0.0.1

要檢查的內容 合格表現 需要停止的信號
讓 OmniRoute 只監聽 127.0.0.1 輸入和輸出範圍明確 自動擴大到其他項目或帳號
權限 只獲得完成任務所需權限 要求管理員權限或完整金鑰
日誌 能定位失敗且已經脫敏 出現 Token、Cookie 或私有正文
回退 能恢復上一步狀態 修改不可逆且沒有備份
1
docker run -d --name omniroute --restart unless-stopped --stop-timeout 40 -p 127.0.0.1:20128:20128 -v omniroute-data:/app/data diegosouzapw/omniroute:latest

表格中的停止訊號一旦出現,先撤銷本節改動,不要繼續後面的自動化。

第一次讀取模型列表

圍繞「第一次讀取模型清單」準備一個成功樣本和一個失敗樣本。成功樣本驗證正常路徑,失敗樣本驗證限制是否真的生效。

1
curl.exe http://127.0.0.1:20128/v1/models -H 'Authorization: Bearer YOUR_KEY'

建議記錄以下四項:

  • 執行前的版本或 Git 提交。
  • 實際輸入,不記錄秘密值。
  • 可觀察的輸出、狀態碼或 diff。
  • 恢復動作以及恢復後的複查結果。

如果失敗原因仍不清楚,每次只修改一個變數;不要同時更換連接埠、執行時間、Provider 和代理程式。

Caddy 反向代理的最小配置

這一節解決的是「Caddy 反向代理的最小配置」。先記錄目前狀態,再執行最小動作,最後用獨立證據確認結果。

對 OmniRoute 而言,判斷依據是:遠端部署應讓 20128 只監聽回環位址,再由 Caddy 提供 TLS;Codex 使用受限端點令牌,自動回退需要可觀察而不能靜默換模型。不要在這個階段順手打開更多權限。

1
caddy validate --config Caddyfile

執行後保留命令輸出和時間戳記。若輸出依賴目前終端機裡的臨時變量,開啟新終端複查一次。

簽發 HTTPS 後檢查憑證鏈

按下面順序處理:

  1. 讀取實際版本和目前配置。
  2. 只改變與本節相關的一項設定。
  3. 執行一個唯讀或可撤銷的請求。
  4. 檢查日誌、退出碼和最終檔案。
  5. 失敗時恢復剛才那一項修改。
1
curl.exe -I https://ai.example.com/v1/models

這裡的完成標準不是介面出現,而是「簽發 HTTPS 後檢查憑證鏈」有可重複結果。

為 Codex 建立專用存取令牌

要檢查的內容 合格表現 需要停止的信號
為 Codex 建立專用存取權杖 輸入和輸出範圍明確 自動擴大到其他項目或帳號
權限 只獲得完成任務所需權限 要求管理員權限或完整金鑰
日誌 能定位失敗且已經脫敏 出現 Token、Cookie 或私有正文
回退 能恢復上一步狀態 修改不可逆且沒有備份
1
curl.exe https://ai.example.com/v1/models -H 'Authorization: Bearer YOUR_KEY'

表格中的停止訊號一旦出現,先撤銷本節改動,不要繼續後面的自動化。

auto 路由與固定模型如何選擇

圍繞「auto 路由和固定模型如何選擇」準備一個成功樣本和一個失敗樣本。成功樣本驗證正常路徑,失敗樣本驗證限制是否真的生效。

1
curl.exe http://127.0.0.1:20128/v1/chat/completions -H 'Content-Type: application/json' -d '{"model":"auto","messages":[{"role":"user","content":"ping"}]}'

建議記錄以下四項:

  • 執行前的版本或 Git 提交。
  • 實際輸入,不記錄秘密值。
  • 可觀察的輸出、狀態碼或 diff。
  • 恢復動作以及恢復後的複查結果。

如果失敗原因仍不清楚,每次只修改一個變數;不要同時更換連接埠、執行時間、Provider 和代理程式。

Provider 限流時觀察回退

這一節解決的是「Provider 限流時觀察回退」。先記錄目前狀態,再執行最小動作,最後用獨立證據確認結果。

對 OmniRoute 而言,判斷依據是:遠端部署應讓 20128 只監聽回環位址,再由 Caddy 提供 TLS;Codex 使用受限端點令牌,自動回退需要可觀察而不能靜默換模型。不要在這個階段順手打開更多權限。

1
docker logs --since 10m omniroute

執行後保留命令輸出和時間戳記。若輸出依賴目前終端機裡的臨時變量,開啟新終端複查一次。

壓縮功能先離線評估

按下面順序處理:

  1. 讀取實際版本和目前配置。
  2. 只改變與本節相關的一項設定。
  3. 執行一個唯讀或可撤銷的請求。
  4. 檢查日誌、退出碼和最終檔案。
  5. 失敗時恢復剛才那一項修改。
1
docker exec omniroute npm run eval:compression

這裡的完成標準不是介面出現,而是「壓縮功能先離線評估」有可重複結果。

備份 omniroute-data 而不是只備份鏡像

要檢查的內容 合格表現 需要停止的信號
備份 omniroute-data 而不是只備份鏡像 輸入和輸出範圍明確 自動擴展到其他項目或帳號
權限 只獲得完成任務所需權限 要求管理員權限或完整金鑰
日誌 能定位失敗且已經脫敏 出現 Token、Cookie 或私有正文
回退 能恢復上一步狀態 修改不可逆且沒有備份
1
docker run --rm -v omniroute-data:/data -v ${PWD}:/backup alpine tar czf /backup/omniroute-data.tgz -C /data .

表格中的停止訊號一旦出現,先撤銷本節改動,不要繼續後面的自動化。

故障時讓 Codex 切回原端點

圍繞「故障時讓 Codex 切回原端點」準備一個成功樣本和一個失敗樣本。成功樣本驗證正常路徑,失敗樣本驗證限制是否真的生效。

1
docker stop omniroute

建議記錄以下四項:

  • 執行前的版本或 Git 提交。
  • 實際輸入,不記錄秘密值。
  • 可觀察的輸出、狀態碼或 diff。
  • 恢復動作以及恢復後的複查結果。

如果失敗原因仍不清楚,每次只修改一個變數;不要同時更換連接埠、執行時間、Provider 和代理程式。

從 Caddy 日誌區分網關和上游錯誤

這一節解決的是「從 Caddy 日誌區分網關和上游錯誤」。先記錄目前狀態,再執行最小動作,最後用獨立證據確認結果。

對 OmniRoute 而言,判斷依據是:遠端部署應讓 20128 只監聽回環位址,再由 Caddy 提供 TLS;Codex 使用受限端點令牌,自動回退需要可觀察而不能靜默換模型。不要在這個階段順手打開更多權限。

1
caddy validate --config Caddyfile

執行後保留命令輸出和時間戳記。若輸出依賴目前終端機裡的臨時變量,開啟新終端複查一次。

限制遠端令牌可呼叫的模型

按下面順序處理:

  1. 讀取實際版本和目前配置。
  2. 只改變與本節相關的一項設定。
  3. 執行一個唯讀或可撤銷的請求。
  4. 檢查日誌、退出碼和最終檔案。
  5. 失敗時恢復剛才那一項修改。
1
curl.exe https://ai.example.com/v1/models -H 'Authorization: Bearer YOUR_KEY'

這裡的完成標準不是介面出現,而是「限制遠端令牌可呼叫的模型」有可重複結果。

模擬主 Provider 失效

要檢查的內容 合格表現 需要停止的信號
模擬主 Provider 失效 輸入和輸出範圍明確 自動擴大到其他項目或帳號
權限 只獲得完成任務所需權限 要求管理員權限或完整金鑰
日誌 能定位失敗且已經脫敏 出現 Token、Cookie 或私有正文
回退 能恢復上一步狀態 修改不可逆且沒有備份
1
docker logs --follow omniroute

表格中的停止訊號一旦出現,先撤銷本節改動,不要繼續後面的自動化。

升級鏡像時固定回滾標籤

圍繞「升級鏡像時固定回滾標籤」準備一個成功樣本和一個失敗樣本。成功樣本驗證正常路徑,失敗樣本驗證限制是否真的生效。

1
docker image ls diegosouzapw/omniroute

建議記錄以下四項:

  • 執行前的版本或 Git 提交。
  • 實際輸入,不記錄秘密值。
  • 可觀察的輸出、狀態碼或 diff。
  • 恢復動作以及恢復後的複查結果。

如果失敗原因仍不清楚,每次只修改一個變數;不要同時更換連接埠、執行時間、Provider 和代理程式。

OmniRoute 常見問題

是否可以跳過測試環境,直接把 OmniRoute 用到正式專案?

不建議。至少先完成一次最小成功請求、一次故意失敗和一次恢復演練。

OmniRoute 指令能運作但結果不對,先查哪裡?

先查輸入範圍、實際生效的配置和上游響應,再查模型總結。進程正常不代表業務結果正確。

如何避免 OmniRoute 的金鑰或令牌進入 Git?

使用系統環境變數、Secret 管理或專案外設定文件,並在提交前搜尋 diff。發現洩漏後必須輪換密鑰。

升級 OmniRoute 時最容易漏掉什麼?

最容易漏掉配置格式、預設監聽位址、權限範圍和快取相容性。升級前儲存版本與驗證樣本。

OmniRoute 驗收問題

完成後應能回答下面的問題:

  • 使用的是哪個確切版本?
  • 哪些目錄、連接埠、帳號和外部服務可被存取?
  • 成功結果如何回到原始資料或 Git diff?
  • 上游失敗時會報錯、重試還是切換?
  • 金鑰是否可能出現在日誌或歷史記錄?
  • 如何在十分鐘內回到修改前狀態?

如果其中任何一項無法回答,OmniRoute 仍處於試用狀態,不應擴大權限或存取生產自動化。