kioai / DEPLOYMENT.md
kinaiok
Initial deployment setup for Hugging Face Spaces
5ef6e9d

Hugging Face Spaces 部署指南

本指南說明如何將此專案部署到 Hugging Face Spaces 免費版。

前置準備

  1. 註冊 Hugging Face 帳號
  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 (推薦)

# 克隆 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" 標籤中設定以下環境變數:

必要變數

# JWT 密鑰(請生成隨機字串)
JWT_SECRET=your-random-jwt-secret-key-at-least-32-characters

# 加密密鑰(必須是 32 字元)
ENCRYPTION_KEY=your-32-character-encryption-key

可選變數

# 資料庫路徑(預設值已足夠)
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 推送更新:

cd YOUR_SPACE_NAME
git pull origin main  # 拉取最新變更
# 修改檔案...
git add .
git commit -m "Update application"
git push

Q: 效能不足怎麼辦?

A: 免費版 CPU basic 有限制:

  • 考慮升級到付費硬體
  • 優化資料庫查詢
  • 減少同時處理的請求數

進階配置

使用外部資料庫

如果需要更穩定的資料庫,可以使用外部服務:

  1. 註冊 SupabaseNeon(都有免費額度)
  2. 建立 PostgreSQL 資料庫
  3. 修改環境變數:
    DATABASE_URL=postgresql://user:pass@host:5432/dbname
    
  4. 修改 lib/db/drizzle.config.tslib/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 進行備份:

# 使用 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

支援

如有問題,請查看:

授權

MIT License