Spaces:
Running
Running
| # 🚀 Bloom Ware Render 部署指南 | |
| ## 📋 前置準備 | |
| ### 1. 生成新的 JWT Secret(生產環境專用) | |
| ```bash | |
| python3 -c "import secrets; print(secrets.token_urlsafe(32))" | |
| ``` | |
| 複製輸出的字串,稍後會用到。 | |
| ### 2. 將 Firebase JSON 轉為單行字串 | |
| ```bash | |
| cat your-firebase-credentials.json | python3 -m json.tool --compact | pbcopy | |
| ``` | |
| (macOS 會自動複製到剪貼簿) | |
| --- | |
| ## 🔧 Render 部署步驟 | |
| ### 步驟 1:推送程式碼到 GitHub | |
| ```bash | |
| git add . | |
| git commit -m "準備 Render 部署:統一配置管理 + Firebase 環境變數化" | |
| git push origin main | |
| ``` | |
| ### 步驟 2:在 Render 建立 Web Service | |
| 1. 登入 [Render](https://render.com/) | |
| 2. 點擊 **New** → **Web Service** | |
| 3. 連接 GitHub 倉庫:選擇 `bloom-ware` | |
| 4. 設定: | |
| - **Name**: `bloom-ware`(或自訂名稱) | |
| - **Region**: `Singapore` 或 `Oregon` | |
| - **Branch**: `main` | |
| - **Runtime**: `Python 3` | |
| - **Build Command**: `pip install -r requirements.txt` | |
| - **Start Command**: `python app.py` | |
| ### 步驟 3:設定環境變數 | |
| 在 Render Dashboard → Environment 頁面,新增以下環境變數: | |
| #### 必要環境變數(16 項) | |
| | 變數名 | 值 | 說明 | | |
| |--------|-----|------| | |
| | `ENVIRONMENT` | `production` | 環境識別 | | |
| | `FIREBASE_PROJECT_ID` | `your-firebase-project-id` | Firebase 專案 ID | | |
| | `FIREBASE_CREDENTIALS_JSON` | `{"type":"service_account",...}` | **完整 JSON 字串(單行)** | | |
| | `OPENAI_API_KEY` | `sk-proj-...` | OpenAI API Key | | |
| | `OPENAI_MODEL` | `gpt-5-nano` | 模型名稱 | | |
| | `OPENAI_TIMEOUT` | `30` | 超時秒數 | | |
| | `GOOGLE_CLIENT_ID` | `your-google-client-id.apps.googleusercontent.com` | Google OAuth Client ID | | |
| | `GOOGLE_CLIENT_SECRET` | `GOCSPX-...` | Google OAuth Secret | | |
| | `GOOGLE_REDIRECT_URI` | `https://your-app.onrender.com/auth/google/callback` | **OAuth 回調 URI** | | |
| | `WEATHER_API_KEY` | `your-weather-api-key` | OpenWeatherMap Key | | |
| | `NEWSDATA_API_KEY` | `pub_xxxxx` | NewsData.io Key | | |
| | `EXCHANGE_API_KEY` | `your-exchange-api-key` | ExchangeRate Key | | |
| | `JWT_SECRET_KEY` | `YOUR_NEW_SECRET` | **新生成的 Secret** | | |
| | `ACCESS_TOKEN_EXPIRE_MINUTES` | `30` | Token 有效期 | | |
| | `HOST` | `0.0.0.0` | 監聽主機 | | |
| | `PORT` | `10000` | Render 固定端口 | | |
| ### 步驟 4:部署 | |
| 點擊 **Create Web Service**,Render 會自動: | |
| 1. 執行 `pip install -r requirements.txt` | |
| 2. 啟動 `python app.py` | |
| 3. 提供 HTTPS URL(例如:`https://bloom-ware-xxxx.onrender.com`) | |
| --- | |
| ## 🔗 Google OAuth 回調 URI 更新 | |
| ### 1. 前往 Google Cloud Console | |
| https://console.cloud.google.com/apis/credentials | |
| ### 2. 選擇你的 OAuth 2.0 客戶端 | |
| ### 3. 新增「已授權的重新導向 URI」 | |
| ``` | |
| https://bloom-ware-xxxx.onrender.com/auth/google/callback | |
| ``` | |
| (替換為你的實際 Render 網址) | |
| ### 4. 儲存變更 | |
| ### 5. 更新 Render 環境變數 | |
| 回到 Render Dashboard → Environment,更新: | |
| ``` | |
| GOOGLE_REDIRECT_URI=https://bloom-ware-xxxx.onrender.com/auth/google/callback | |
| ``` | |
| --- | |
| ## ✅ 驗證部署 | |
| ### 1. 檢查 Logs | |
| 在 Render Dashboard → Logs 查看: | |
| ``` | |
| ✅ Firebase Firestore連接成功!專案ID:your-project-id | |
| ✅ OpenAI 客戶端初始化完成 | |
| 🚀 Bloom Ware 後端服務器啟動中... | |
| ``` | |
| ### 2. 測試連接 | |
| 訪問:`https://your-app.onrender.com` | |
| 應該看到前端登入頁面 | |
| ### 3. 測試 Google 登入 | |
| 1. 點擊「使用 Google 登入」 | |
| 2. 授權後應該成功跳轉並登入 | |
| --- | |
| ## 🐛 常見問題 | |
| ### 問題 1:Firebase 憑證錯誤 | |
| **錯誤訊息**:`Firebase 憑證載入失敗` | |
| **解決方式**: | |
| - 確認 `FIREBASE_CREDENTIALS_JSON` 是**單行字串**(無換行符) | |
| - 檢查 JSON 格式是否正確(使用 `python3 -m json.tool` 驗證) | |
| ### 問題 2:Google OAuth 回調失敗 | |
| **錯誤訊息**:`redirect_uri_mismatch` | |
| **解決方式**: | |
| - 確認 Google Cloud Console 已新增 Render 回調 URI | |
| - 確認 `GOOGLE_REDIRECT_URI` 環境變數正確 | |
| ### 問題 3:應用休眠(免費方案) | |
| **現象**:閒置 15 分鐘後,首次訪問需等待 30 秒 | |
| **解決方式**: | |
| - 升級到付費方案($7/月) | |
| - 或使用 UptimeRobot 定期 ping(每 14 分鐘) | |
| --- | |
| ## 📝 部署後清單 | |
| - [ ] 測試 Google 登入流程 | |
| - [ ] 測試 WebSocket 連接 | |
| - [ ] 測試語音功能(錄音 + TTS) | |
| - [ ] 測試 MCP 工具(天氣、新聞、匯率) | |
| - [ ] 檢查 Firebase Firestore 資料寫入 | |
| - [ ] 監控 Render Logs 是否有錯誤 | |
| --- | |
| ## 🔄 更新部署 | |
| 每次程式碼更新後: | |
| ```bash | |
| git add . | |
| git commit -m "更新功能" | |
| git push origin main | |
| ``` | |
| Render 會自動檢測並重新部署(約 2-3 分鐘)。 | |
| --- | |
| ## 📞 支援 | |
| 遇到問題?檢查: | |
| 1. Render Dashboard → Logs | |
| 2. Render Dashboard → Events | |
| 3. GitHub Actions(如有設定 CI/CD) | |
| --- | |
| **🎉 恭喜!Bloom Ware 已成功部署到 Render!** | |