# Hugging Face Spaces 部署指南 本指南說明如何將此專案部署到 Hugging Face Spaces 免費版。 ## 前置準備 1. 註冊 [Hugging Face](https://huggingface.co/) 帳號 2. 準備 geminigen.ai 帳號憑證 ## 部署步驟 ### 1. 建立 Space 1. 前往 https://huggingface.co/new-space 2. 填寫資訊: - **Space name**: 自訂名稱(例如:ai-image-generator) - **License**: MIT - **Select the Space SDK**: Docker - **Space hardware**: CPU basic (免費) 3. 點擊 "Create Space" ### 2. 上傳專案檔案 #### 方式 A: 使用 Git (推薦) ```bash # 克隆 Space 倉庫 git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME cd YOUR_SPACE_NAME # 複製專案檔案(排除不需要的檔案) cp -r /path/to/project/* . # 確保包含以下關鍵檔案: # - Dockerfile # - README.md (Space 配置) # - artifacts/ # - lib/ # - package.json # - pnpm-lock.yaml # - pnpm-workspace.yaml # - tsconfig.base.json # - tsconfig.json # 提交並推送 git add . git commit -m "Initial deployment" git push ``` #### 方式 B: 使用 Web 介面 1. 在 Space 頁面點擊 "Files" 標籤 2. 點擊 "Add file" → "Upload files" 3. 上傳所有必要檔案 ### 3. 設定環境變數 在 Space 的 "Settings" 標籤中設定以下環境變數: #### 必要變數 ```bash # JWT 密鑰(請生成隨機字串) JWT_SECRET=your-random-jwt-secret-key-at-least-32-characters # 加密密鑰(必須是 32 字元) ENCRYPTION_KEY=your-32-character-encryption-key ``` #### 可選變數 ```bash # 資料庫路徑(預設值已足夠) DATABASE_URL=file:/data/sqlite.db # 暫存路徑(預設值已足夠) TEMP_STORAGE_PATH=/app/temp-storage # Turnstile 驗證碼服務(如果有部署) TURNSTILE_SOLVER_URL=https://your-turnstile-solver.vercel.app ``` ### 4. 啟用 Persistent Storage (重要) 為了保存資料庫和用戶資料: 1. 在 Space Settings 中找到 "Persistent Storage" 2. 點擊 "Enable Persistent Storage" 3. 設定掛載路徑為 `/data` **注意**: 免費版 Persistent Storage 有容量限制,請定期清理舊檔案。 ### 5. 等待建置完成 Space 會自動開始建置 Docker 映像,這可能需要 10-15 分鐘。 建置完成後,Space 會自動啟動,您可以在 "App" 標籤中看到應用程式。 ## 首次使用 1. 訪問您的 Space URL(例如:https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME) 2. 點擊右上角「註冊」按鈕 3. 第一個註冊的用戶會自動成為管理員 4. 登入後,進入「管理後台」 5. 設定 geminigen.ai 憑證: - Email - Password 6. 點擊「儲存憑證」 7. 開始使用! ## 常見問題 ### Q: 建置失敗怎麼辦? A: 檢查以下項目: - 確認 Dockerfile 格式正確 - 確認所有依賴檔案都已上傳 - 查看 Space 的 "Logs" 標籤了解錯誤訊息 ### Q: 應用程式無法啟動? A: 檢查: - 環境變數是否正確設定 - Persistent Storage 是否已啟用 - 查看 "Logs" 標籤的錯誤訊息 ### Q: 資料庫資料遺失? A: 確保: - Persistent Storage 已啟用並掛載到 `/data` - DATABASE_URL 指向 `/data/sqlite.db` ### Q: 圖片/影片無法顯示? A: 本地暫存模式下: - 檔案會在 24 小時後自動清理 - 重啟 Space 會清空暫存 - 這是免費版的限制,如需永久儲存請考慮外部儲存服務 ### Q: 如何更新應用程式? A: 使用 Git 推送更新: ```bash cd YOUR_SPACE_NAME git pull origin main # 拉取最新變更 # 修改檔案... git add . git commit -m "Update application" git push ``` ### Q: 效能不足怎麼辦? A: 免費版 CPU basic 有限制: - 考慮升級到付費硬體 - 優化資料庫查詢 - 減少同時處理的請求數 ## 進階配置 ### 使用外部資料庫 如果需要更穩定的資料庫,可以使用外部服務: 1. 註冊 [Supabase](https://supabase.com/) 或 [Neon](https://neon.tech/)(都有免費額度) 2. 建立 PostgreSQL 資料庫 3. 修改環境變數: ```bash DATABASE_URL=postgresql://user:pass@host:5432/dbname ``` 4. 修改 `lib/db/drizzle.config.ts` 和 `lib/db/src/index.ts` 改回 PostgreSQL 配置 ### 使用外部儲存 整合 Cloudflare R2 或其他 S3 相容服務: 1. 註冊服務並取得憑證 2. 修改 `artifacts/api-server/src/lib/objectStorage.ts` 3. 設定相關環境變數 ## 監控與維護 ### 查看日誌 在 Space 的 "Logs" 標籤可以查看即時日誌。 ### 重啟 Space 在 Settings 中點擊 "Factory reboot" 可以重啟 Space。 ### 備份資料 定期下載 `/data/sqlite.db` 進行備份: ```bash # 使用 Hugging Face CLI huggingface-cli download spaces/YOUR_USERNAME/YOUR_SPACE_NAME data/sqlite.db --repo-type=space ``` ## 成本估算 - **免費版**: CPU basic,適合個人使用或測試 - **付費版**: - CPU upgrade: $0.03/hour - GPU T4: $0.60/hour - Persistent Storage: 免費 50GB ## 支援 如有問題,請查看: - [Hugging Face Spaces 文件](https://huggingface.co/docs/hub/spaces) - [專案 GitHub Issues](https://github.com/your-repo/issues) ## 授權 MIT License