跳轉至

Floci Az

Floci Az(又稱 floci-az)係一套以 Docker 容器形式發佈嘅自助託管服務,主要針對 Oracle Cloud Infrastructure(OCI)嘅運作環境而設計。條目名「Az」可以理解為 Availability Zone,亦有人將佢解釋為「Automation Zone」,代表 Floci 生態系統中負責喺雲端區域內提供持續服務嘅輕量組件。Floci Az 使用 floci/floci-az:latest 映像檔,透過 Docker Compose 管理,適合個人開發者、小型團隊,以及需要將 AI 服務私有化部署嘅機構。

Overview

Floci Az 嘅核心定位係一個「邊緣服務層」,位於用戶端應用程式與大型語言模型(LLM)之間。佢可以統一處理 API 請求、執行存取控制、記錄使用量,並提供快取功能以降低模型供應商嘅 API 成本。同 litellm 相似,Floci Az 支援多模型供應商嘅統一介面;但 Floci Az 更著重喺 Oracle Cloud 上嘅單一實例部署,並同 Cloudflare 網絡整合,以獲得穩定嘅對外連線。

「Az」亦有「可用區域」嘅意思,表示服務設計上具備高可用性特質。透過 Oracle Cloud 嘅免費方案(Always Free Tier),用戶可以低成本運行 Floci Az。容器內嘅資料會持久化儲存喺 Docker volume floci-az-data,確保容器重啟後設定同日誌依然保留。

Architecture

Floci Az 採用單一容器架構,配合外部 Docker network cf_network 同其他服務連接。

主要組件:

  • floci-az 容器:執行 Floci Az 主程式,負責 API 處理、資料儲存及後台任務。
  • cf_network:一個預先建立嘅 Docker bridge network,通常由 Cloudflare Tunnel 或其他反向代理容器建立。Floci Az 會以靜態 IP 172.21.0.84 接入,令其他容器可以透過固定地址存取。
  • floci-az-data volume:掛載到 /app/data,保存應用程式數據。

呢種架構適合配合 Cloudflare Tunnel 使用:外部流量先經 Cloudflare 進入反向代理,再轉發至 Floci Az。Oracle Cloud 實例只需要開放必要嘅端口,甚至可以用 Private Subnet 配合 Cloudflare 連接,減少暴露攻擊面。

Deployment

前置條件

  • Oracle Cloud 帳戶及已建立嘅 Compute Instance(建議使用 Ubuntu 22.04 LTS 或 Oracle Linux 8)。
  • 已安裝 Docker Engine 同 Docker Compose Plugin。
  • 已建立外部網絡 cf_network
docker network create cf_network
  • (可選)已部署 Cloudflare Tunnel,並設定好 cf_network

部署步驟

  1. 建立專案目錄:
mkdir ~/floci-az && cd ~/floci-az
  1. 建立 docker-compose.yml,內容如下:
services:
  floci-az:
    image: floci/floci-az:latest
    restart: unless-stopped
    networks:
      cf_network:
        ipv4_address: 172.21.0.84
    environment:
      TZ: Asia/Hong_Kong
    volumes:
      - floci-az-data:/app/data

networks:
  cf_network:
    external: true

volumes:
  floci-az-data:
  1. 啟動服務:
docker compose up -d
  1. 檢查狀態:
docker compose ps
docker logs -f floci-az

部署後,Floci Az 會以 172.21.0.84cf_network 內提供服務。若需要畀外部存取,請喺 Cloudflare Tunnel 設定中將流量轉發至 http://172.21.0.84 嘅對應端口。

Configuration

Floci Az 支援透過環境變數同資料目錄內嘅設定檔進行配置。最基本嘅環境變數係 TZ,用嚟設定容器時區;示例中使用 Asia/Hong_Kong,確保日誌同排程工作跟隨香港時間。

網絡設定

cf_network 必須係 external network,因為 Floci Az 需要同其他服務(例如 Cloudflare Tunnel、Nginx Proxy Manager)共享網絡。靜態 IP 172.21.0.84 避免容器重啟後 IP 改變,簡化反向代理設定。如果實際子網唔同,需要根據現有網絡範圍調整 IP。

資料持久化

/app/data 係 Floci Az 嘅數據目錄,存放包括:

  • 設定檔(例如 config.yamlfloci.toml
  • 日誌檔
  • SQLite 或其他嵌入式資料庫
  • 快取資料

用戶可以直接編輯數據卷內嘅設定檔,然後重啟容器:

docker compose restart floci-az

如需備份,可以用 tar 打包 volume,或者直接備份 Oracle Cloud 嘅 block volume snapshot。

Operations

日常管理

  • 查看日誌docker compose logs -f floci-az
  • 重新啟動docker compose restart floci-az
  • 停止服務docker compose down(保留 volume)
  • 徹底重置docker compose down -v(刪除 volume,謹慎使用)

更新

Floci Az 使用 latest 標籤,更新步驟:

docker compose pull
docker compose up -d

建議喺更新前備份 /app/data,因為新版本可能進行資料庫遷移。

健康檢查

容器本身未包含 healthcheck 指令,但用戶可以喺 compose 檔案加入自訂 healthcheck,例如:

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
  interval: 30s
  timeout: 5s
  retries: 3

亦可以使用 Oracle Cloud Monitoring 監察實例 CPU、記憶體及磁碟用量。

FAQ

Floci Az 係咪免費?

Floci Az 本身係開放原始碼專案,可以喺任何 Docker 主機免費運行。Oracle Cloud Always Free Tier 提供 ARM 或 AMD 微執行個體,適合低流量用途。

點解需要 cf_network

因為 Floci Az 要同其他容器(如 Cloudflare Tunnel)通訊。建立外部網絡可以令容器之間用固定 IP 互連,避免使用 Docker 預設網絡而產生 IP 變動。

可以唔用 Oracle Cloud 嗎?

可以。任何支援 Docker 嘅 Linux 主機都能執行,但 Floci Az 嘅設計同部署文件以 Oracle Cloud 為預設環境。

點解 TZ 要設為 Asia/Hong_Kong

確保服務日誌、排程同時間戳都以香港時間顯示,方便本地維護。

如何連接 LLM?

Floci Az 提供 OpenAI 兼容介面。用戶可以喺設定檔填入模型供應商(例如 OpenAI、Anthropic、或透過 litellm 建構嘅聚合服務)嘅 API 金鑰,然後將應用程式指向 http://floci-az:port

Source

Coverage auto (container scan)