From 2518eb3d4994874e4bfffee8b6333e17a59ad399 Mon Sep 17 00:00:00 2001 From: MarkLo Date: Fri, 21 Nov 2025 08:38:26 +0800 Subject: [PATCH] --- DEPLOY.md | 491 ------------------------------------------------------ 1 file changed, 491 deletions(-) delete mode 100644 DEPLOY.md diff --git a/DEPLOY.md b/DEPLOY.md deleted file mode 100644 index 4a3eecb0..00000000 --- a/DEPLOY.md +++ /dev/null @@ -1,491 +0,0 @@ -# TradingAgents 雲端部署指南 🚀 - -本指南提供將 TradingAgents 部署到雲端的完整步驟,**重點介紹完全免費的部署方案**。 - -## 📋 目錄 - -- [免費部署方案(推薦)](#免費部署方案推薦) -- [部署前準備](#部署前準備) -- [方案 1: Vercel + Render (完全免費)](#方案-1-vercel--render-完全免費) -- [方案 2: Railway (免費額度)](#方案-2-railway-免費額度) -- [方案 3: Docker Compose (自有伺服器)](#方案-3-docker-compose-自有伺服器) -- [環境變數配置](#環境變數配置) -- [故障排除](#故障排除) - ---- - -## 🎯 免費部署方案(推薦) - -### 最佳免費組合:Vercel (Frontend) + Render (Backend) - -| 服務 | 平台 | 免費額度 | 限制 | -|------|------|----------|------| -| **Frontend** | Vercel | 無限制 | 100GB 頻寬/月 | -| **Backend** | Render | 750 小時/月 | 休眠機制(15分鐘無活動) | - -> [!TIP] -> Render 的免費方案會在 15 分鐘無活動後休眠,首次訪問需要 30-60 秒喚醒。這對於測試和個人使用完全足夠! - ---- - -## 🔧 部署前準備 - -### 1. 必要的 API 密鑰 - -您需要準備以下 API 密鑰: - -#### OpenAI API Key(必需) -- 註冊:https://platform.openai.com/ -- 獲取 API Key:https://platform.openai.com/api-keys -- 費用:按使用量計費(建議使用 gpt-4o-mini 節省成本) - -#### Alpha Vantage API Key(必需) -- 註冊:https://www.alphavantage.co/support/#api-key -- **完全免費**,TradingAgents 用戶享有 60 請求/分鐘 - -### 2. GitHub 帳號 -所有免費部署方案都需要 GitHub 帳號來連接代碼倉庫。 - ---- - -## 🎨 方案 1: Vercel + Render (完全免費) - -這是**最推薦的免費方案**,前端和後端分別部署。 - -### Step 1: 部署 Backend 到 Render - -#### 1.1 準備代碼 -確保您的代碼已推送到 GitHub。 - -#### 1.2 創建 Render 帳號 -訪問 https://render.com/ 並使用 GitHub 登入。 - -#### 1.3 創建新的 Web Service - -1. 點擊 "New +" → "Web Service" -2. 連接您的 GitHub 倉庫 -3. 配置如下: - -``` -Name: tradingagents-backend -Region: Singapore (或最近的區域) -Branch: main -Root Directory: backend -Runtime: Python 3 -Build Command: pip install -r requirements.txt -Start Command: uvicorn app.main:app --host 0.0.0.0 --port $PORT -``` - -#### 1.4 設置環境變數 - -在 Render 的 Environment 頁面添加: - -```bash -OPENAI_API_KEY=your_openai_api_key_here -ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key_here -TRADINGAGENTS_RESULTS_DIR=/opt/render/project/src/results -PYTHON_VERSION=3.13.0 -``` - -> [!IMPORTANT] -> Render 要求 `PYTHON_VERSION` 必須是完整的版本號(例如 `3.13.0`)。 - -#### 1.5 選擇免費方案 -- Instance Type: **Free** -- 點擊 "Create Web Service" - -部署需要 5-10 分鐘。完成後,您會獲得一個 URL,例如: -``` -https://tradingagents-backend.onrender.com -``` - -### Step 2: 部署 Frontend 到 Vercel - -#### 2.1 創建 Vercel 帳號 -訪問 https://vercel.com/ 並使用 GitHub 登入。 - -#### 2.2 導入項目 - -1. 點擊 "Add New..." → "Project" -2. 選擇您的 GitHub 倉庫 -3. 配置如下: - -``` -Framework Preset: Next.js -Root Directory: frontend -Build Command: npm run build -Output Directory: .next -Install Command: npm install -``` - -#### 2.3 設置環境變數 - -在 Environment Variables 添加: - -```bash -NEXT_PUBLIC_API_URL=https://tradingagents-backend.onrender.com -``` - -> [!IMPORTANT] -> 將 `tradingagents-backend.onrender.com` 替換為您在 Step 1 獲得的實際 Render URL。 - -#### 2.4 部署 - -點擊 "Deploy",等待 2-3 分鐘。完成後,您會獲得一個 URL,例如: -``` -https://tradingagents.vercel.app -``` - -### Step 3: 更新 Backend CORS 設置 - -為了讓前端能夠訪問後端,需要更新 Backend 的 CORS 配置。 - -編輯 `backend/app/main.py`,找到 CORS 配置部分,添加您的 Vercel URL: - -```python -app.add_middleware( - CORSMiddleware, - allow_origins=[ - "http://localhost:3000", - "https://tradingagents.vercel.app", # 添加您的 Vercel URL - ], - allow_credentials=True, - allow_methods=["*"], - allow_headers=["*"], -) -``` - -提交並推送更改,Render 會自動重新部署。 - -### ✅ 完成! - -訪問您的 Vercel URL,應用程式現在已經在線上運行了! - ---- - -## 🚂 方案 2: Railway (免費額度) - -Railway 提供 $5 免費額度/月,可以同時部署前後端。 - -### Step 1: 創建 Railway 帳號 -訪問 https://railway.app/ 並使用 GitHub 登入。 - -### Step 2: 創建新項目 - -1. 點擊 "New Project" -2. 選擇 "Deploy from GitHub repo" -3. 選擇您的倉庫 - -### Step 3: 添加服務 - -#### 3.1 添加 Backend 服務 - -1. 點擊 "New Service" → "GitHub Repo" -2. 配置: - - Root Directory: `backend` - - Build Command: `pip install -r requirements.txt` - - Start Command: `uvicorn app.main:app --host 0.0.0.0 --port $PORT` - -3. 添加環境變數: -```bash -OPENAI_API_KEY=your_key_here -ALPHA_VANTAGE_API_KEY=your_key_here -TRADINGAGENTS_RESULTS_DIR=/app/results -``` - -4. 在 Settings → Networking 中生成一個公開域名 - -#### 3.2 添加 Frontend 服務 - -1. 點擊 "New Service" → "GitHub Repo" -2. 配置: - - Root Directory: `frontend` - - Build Command: `npm install && npm run build` - - Start Command: `npm start` - -3. 添加環境變數: -```bash -NEXT_PUBLIC_API_URL=https://your-backend-url.railway.app -``` - -4. 在 Settings → Networking 中生成一個公開域名 - -### ✅ 完成! - -兩個服務都會自動部署,您可以通過生成的域名訪問。 - -> [!WARNING] -> Railway 免費額度為 $5/月,通常可以運行約 500 小時。超出後需要付費。 - ---- - -## 🐳 方案 3: Docker Compose (自有伺服器) - -如果您有自己的 VPS(如 DigitalOcean、Linode、AWS EC2 等),可以使用 Docker Compose。 - -### 前置要求 -- 安裝 Docker 和 Docker Compose -- 至少 2GB RAM -- 開放端口 80 和 443 - -### Step 1: 準備環境變數 - -創建 `.env` 文件: - -```bash -cp .env.example .env -``` - -編輯 `.env`,填入您的 API 密鑰: - -```bash -OPENAI_API_KEY=your_openai_api_key -ALPHA_VANTAGE_API_KEY=your_alpha_vantage_key -TRADINGAGENTS_RESULTS_DIR=/app/results -``` - -### Step 2: 修改 docker-compose.yml - -確保 frontend 的環境變數指向正確的後端 URL: - -```yaml -environment: - - NEXT_PUBLIC_API_URL=http://your-server-ip:8000 -``` - -### Step 3: 構建並啟動 - -```bash -# 構建鏡像 -docker-compose build - -# 啟動服務 -docker-compose up -d - -# 查看日誌 -docker-compose logs -f -``` - -### Step 4: 訪問應用 - -- Frontend: http://your-server-ip:3000 -- Backend API: http://your-server-ip:8000 - -### 使用 Nginx 反向代理(可選) - -為了使用域名和 HTTPS,可以配置 Nginx: - -```nginx -server { - listen 80; - server_name yourdomain.com; - - location / { - proxy_pass http://localhost:3000; - proxy_http_version 1.1; - proxy_set_header Upgrade $http_upgrade; - proxy_set_header Connection 'upgrade'; - proxy_set_header Host $host; - proxy_cache_bypass $http_upgrade; - } - - location /api { - proxy_pass http://localhost:8000; - proxy_http_version 1.1; - proxy_set_header Host $host; - proxy_set_header X-Real-IP $remote_addr; - } -} -``` - -使用 Certbot 獲取免費 SSL 證書: - -```bash -sudo certbot --nginx -d yourdomain.com -``` - ---- - -## 🔐 環境變數配置 - -### Backend 環境變數 - -| 變數名 | 必需 | 說明 | 範例 | -|--------|------|------|------| -| `OPENAI_API_KEY` | ✅ | OpenAI API 密鑰 | `sk-...` | -| `ALPHA_VANTAGE_API_KEY` | ✅ | Alpha Vantage API 密鑰 | `YOUR_KEY` | -| `TRADINGAGENTS_RESULTS_DIR` | ⚠️ | 結果存儲目錄 | `/app/results` | -| `PYTHON_VERSION` | ❌ | Python 版本(Render) | `3.11` | - -### Frontend 環境變數 - -| 變數名 | 必需 | 說明 | 範例 | -|--------|------|------|------| -| `NEXT_PUBLIC_API_URL` | ✅ | Backend API URL | `https://api.yourdomain.com` | - -> [!CAUTION] -> 永遠不要在前端代碼中硬編碼 API 密鑰!所有敏感信息應該在後端處理。 - ---- - -## 🔧 故障排除 - -### Backend 問題 - -#### 問題:Render 服務休眠 -**症狀**:首次訪問需要等待 30-60 秒 - -**解決方案**: -- 這是 Render 免費方案的正常行為 -- 可以使用 UptimeRobot 等服務定期 ping 您的 API 保持喚醒 -- 或升級到付費方案($7/月) - -#### 問題:ModuleNotFoundError -**症狀**:找不到 `tradingagents` 模組 - -**解決方案**: -確保 `backend/Dockerfile` 正確複製了 tradingagents 目錄: -```dockerfile -COPY ../tradingagents ./tradingagents -``` - -#### 問題:API 速率限制 -**症狀**:Alpha Vantage 返回 429 錯誤 - -**解決方案**: -- 確認使用的是 TradingAgents 專用 API key(60 req/min) -- 或在 `tradingagents/default_config.py` 中切換到其他數據源 - -### Frontend 問題 - -#### 問題:CORS 錯誤 -**症狀**:瀏覽器控制台顯示 CORS 錯誤 - -**解決方案**: -在 `backend/app/main.py` 中添加您的前端 URL 到 CORS 白名單: -```python -allow_origins=[ - "https://your-frontend-url.vercel.app", -] -``` - -#### 問題:API 連接失敗 -**症狀**:前端無法連接到後端 - -**解決方案**: -1. 檢查 `NEXT_PUBLIC_API_URL` 環境變數是否正確 -2. 確保後端服務正在運行 -3. 檢查後端 URL 是否可以公開訪問 - -### Docker 問題 - -#### 問題:構建失敗 -**症狀**:`docker-compose build` 失敗 - -**解決方案**: -```bash -# 清理舊的鏡像和緩存 -docker-compose down -v -docker system prune -a - -# 重新構建 -docker-compose build --no-cache -``` - -#### 問題:容器無法啟動 -**症狀**:`docker-compose up` 後容器立即退出 - -**解決方案**: -```bash -# 查看詳細日誌 -docker-compose logs backend -docker-compose logs frontend - -# 檢查環境變數 -docker-compose config -``` - ---- - -## 🔑 Bring Your Own Key (BYOK) 模式 - -如果您希望讓用戶使用自己的 API Key,而不是在服務器端配置: - -1. **Render 配置**: - - 不要設置 `OPENAI_API_KEY` 和 `ALPHA_VANTAGE_API_KEY` 環境變數 - - 或者將它們設置為空值 - -2. **前端行為**: - - 應用程式會檢測到沒有預設 Key - - 用戶在執行分析時,界面會要求輸入他們自己的 API Key - - Key 僅用於當次請求,不會存儲在服務器上 - -這對於公開演示或讓社群使用您的部署版本非常有用,您無需為他人的使用付費。 - ---- - -## 📊 成本估算 - -### 完全免費方案(Vercel + Render) - -| 項目 | 成本 | -|------|------| -| Frontend (Vercel) | **$0** | -| Backend (Render) | **$0** | -| Alpha Vantage API | **$0** | -| OpenAI API | 按使用量(建議使用 gpt-4o-mini) | - -**預估 OpenAI 成本**: -- 使用 `gpt-4o-mini`:約 $0.01-0.05 每次交易分析 -- 每天 10 次分析:約 $3-15/月 - -### Railway 方案 - -| 項目 | 成本 | -|------|------| -| Railway 免費額度 | $5/月(免費) | -| 超出後 | $0.000231/GB-s | -| OpenAI API | 按使用量 | - ---- - -## 🎯 推薦配置 - -### 個人測試使用 -- **平台**:Vercel + Render(免費) -- **LLM**:gpt-4o-mini(節省成本) -- **配置**: -```python -config["deep_think_llm"] = "gpt-4o-mini" -config["quick_think_llm"] = "gpt-4o-mini" -config["max_debate_rounds"] = 1 -``` - -### 生產環境 -- **平台**:Vercel + Railway(或 Render 付費方案) -- **LLM**:gpt-4o 或 o1-preview -- **配置**:使用默認配置 -- **監控**:添加 Sentry 或 LogRocket - ---- - -## 📚 相關資源 - -- [Vercel 文檔](https://vercel.com/docs) -- [Render 文檔](https://render.com/docs) -- [Railway 文檔](https://docs.railway.app/) -- [TradingAgents GitHub](https://github.com/TauricResearch/TradingAgents) -- [Alpha Vantage API](https://www.alphavantage.co/documentation/) - ---- - -## 🤝 需要幫助? - -如果遇到問題: -1. 查看上面的[故障排除](#故障排除)部分 -2. 檢查 GitHub Issues -3. 加入 [Discord 社群](https://discord.com/invite/hk9PGKShPK) - ---- - -**祝您部署順利!** 🚀