# 🐋 Antigravity Manager 原生 Docker 部署手冊 本目錄包含 Antigravity Manager 的原生 Headless Docker 部署方案。該方案支持完整的 Web 管理界面、API 反代以及數據持久化,無需複雜的 VNC 或桌面環境。 ## 🆕 本版本部署方案(本地前端構建復用) 適用於「前端近期不改、後端經常調整」的場景。思路是先在本地生成 `dist/`,Docker 只編譯後端並直接拷貝 `dist/`,大幅縮短構建時間並降低前端構建風險。 **步驟** 1. 本地生成前端靜態資源: ```bash npm ci --legacy-peer-deps npm run build ``` 2. 使用本方案構建與啟動(後端-only + 復用 `dist/`): ```bash docker compose -f docker/docker-compose.yml -f docker/docker-compose.localdist.yml build docker compose -f docker/docker-compose.yml -f docker/docker-compose.localdist.yml up -d ``` 或合併為單條命令: ```bash docker compose -f docker/docker-compose.yml -f docker/docker-compose.localdist.yml up -d --build ``` 啟動後動態查看日誌: ```bash docker compose -f docker/docker-compose.yml -f docker/docker-compose.localdist.yml logs -f --tail=200 ``` **更新方式** - 後端有改動:重跑上面的 `build` + `up -d` - 前端有改動:先在本地重新 `npm run build`,再重跑 `build` + `up -d` **Git 部署提醒** - 若服務器不在本地構建前端,請確保 `dist/` 已提交到倉庫(本版本已從 `.gitignore` 移除)。 ## 🚀 快速開始 ### 1. 直接拉取鏡像 (推薦) 您可以直接從 Docker Hub 拉取已構建好的鏡像並啟动,無需獲取源碼: > [!IMPORTANT] > **安全警告**:從 v4.0.3 開始,Docker 版支持 **管理密碼與 API Key 分離**: > * **API Key**:通過 `-e API_KEY=xxx` 設置,用於所有 AI 協議的 API 調用鑒權。 > * **Web 管理密碼**:通過 `-e WEB_PASSWORD=xxx` 設置,僅用於 Web UI 登錄。 > * **默認行為**:若未設置 `WEB_PASSWORD`,系統會自動回退使用 `API_KEY` 作為登錄密碼。若兩者皆未設置,則生成隨機 Key。 > * **查看方式**:執行 `docker logs antigravity-manager` 尋找 `Current API Key` 或 `Web UI Password`,或執行 `grep -E '"api_key"|"admin_password"' ~/.antigravity_tools/gui_config.json` 查看。 ```bash # 啟動容器 (請替换 your-secret-key 為強密鑰) docker run -d \ --name antigravity-manager \ -p 8045:8045 \ -e API_KEY=your-api-key \ -e WEB_PASSWORD=your-login-password \ -e ABV_MAX_BODY_SIZE=104857600 \ -v ~/.antigravity_tools:/root/.antigravity_tools \ lbjlaq/antigravity-manager:latest ``` #### 🔐 鑒權邏輯 (Security Scenarios) * **場景 A:僅設置了 `API_KEY`** - **Web 登錄**:使用 `API_KEY` 即可進入後台。 - **API 調用**:使用 `API_KEY` 進行 AI 請求鑒權。 * **場景 B:同時設置了 `API_KEY` 和 `WEB_PASSWORD` (推薦)** - **Web 登錄**:**必須**使用 `WEB_PASSWORD`。此時輸入 API Key 將被拒絕,確保管理權限與調用權限隔離。 - **API 調用**:繼續使用 `API_KEY`。您可以放心地將 API Key 分發給團隊成員,而保留密碼僅供管理員使用。 #### 🆙 舊版本升級指引 如果您是從舊版本升級,默認沒有設置 `WEB_PASSWORD`。您可以通過以下方式添加: 1. **Web UI (推薦)**:使用原有的 `API_KEY` 登錄,在 **API 反代** 設置頁面中設置新的管理密碼。 2. **環境變量**:停止舊容器,啟動新容器時增加 `-e WEB_PASSWORD=您的新密碼`。 > [!TIP] > **優先級邏輯 (Priority)**: > - **環境變量** (`ABV_WEB_PASSWORD` / `WEB_PASSWORD`) 具有最高優先級。如果設置了環境變量,程序將始終使用它,忽略配置文件中的值。 > - **配置文件** (`gui_config.json`) 用於持久化存儲。當您通過 Web UI 修改密碼並保存時,新密碼會寫入此文件(JSON 字段名為 `admin_password`)。 > - **回退機制**: 如果上述兩者皆未設置,則回退使用 `API_KEY`;若連 `API_KEY` 也未設置,則隨機生成。 ### 2. 使用 Docker Compose 在 `docker` 目錄下執行: ```bash docker compose up -d ``` ### 3. 手動構建鏡像 (開發者) 如果您需要修改代碼或自定義構建,請在項目根目錄下執行: ```bash # 默認構建最新標籤 docker build -t antigravity-manager:latest -f docker/Dockerfile . ``` #### 💡 構建參數 本鏡像支持自動鏡像源切換,以提升国内構建速度: * `USE_MIRROR`: * `auto` (默認): 自動檢測網絡環境,若無法訪問 Google 則切換至国内镜像(阿里云/NPM Mirror)。 * `true`: 強制使用国内镜像源。 * `false`: 強制使用官方默認源。 示例: ```bash # 強制使用国内镜像加速構建 docker build --build-arg USE_MIRROR=true -t antigravity-manager:latest -f docker/Dockerfile . ``` ## ⚙️ 環境變量配置 | 變量名 | 默認值 | 說明 | | :--- | :--- | :--- | | `PORT` | `8045` | 容器內服務監聽端口 | | `ABV_API_KEY` | - | **[重要]** 代理 API 密鑰。客戶端(如 Claude Code)訪問時需提供的 Key | | `ABV_WEB_PASSWORD` | - | **[安全]** Web 管理後台登錄密碼。若不設置則回退使用 API Key | | `ABV_MAX_BODY_SIZE` | `104857600` | **[性能]** 最大請求體限制 (Byte)。默認 100MB,用於解決大圖傳輸 413 錯誤 | | `LOG_LEVEL` | `info` | 日志等級 (debug, info, warn, error) | | `ABV_DIST_PATH` | `/app/dist` | 前端靜態資源託管路徑 (Dockerfile 已內置) | | `ABV_PUBLIC_URL` | - | 用於遠程 OAuth 回調的公網 URL (可選) | ## 📂 數據持久化 請務必將宿主機目錄掛載至容器內的 `/root/.antigravity_tools`,否則賬號和配置在容器重啟後會丟失。 ## 🌐 訪問位址 * **管理界面**: [http://localhost:8045](http://localhost:8045) * **API Base**: [http://localhost:8045/v1](http://localhost:8045/v1) ## 📦 Docker Hub 分發 (推薦) 若要推送至你的倉庫: ```bash # 打上版本標籤並推送 docker tag antigravity-manager:latest lbjlaq/antigravity-manager:latest docker tag antigravity-manager:latest lbjlaq/antigravity-manager:4.1.32 docker push lbjlaq/antigravity-manager:latest docker push lbjlaq/antigravity-manager:4.1.32 ```