升级到v1.3.2:支持Docker部署FACTORY_API_KEY环境变量配置

This commit is contained in:
1e0n
2025-10-09 22:34:31 +08:00
parent e0129b7a83
commit 666e58d681
4 changed files with 76 additions and 24 deletions

View File

@@ -1,3 +1,7 @@
# API 认证配置 # 认证配置(按优先级选择其一)
# 从 Factory 获取你的 refresh token
# 方式1使用固定API密钥推荐生产环境最高优先级
FACTORY_API_KEY=your_factory_api_key_here
# 方式2使用refresh token自动刷新次优先级
DROID_REFRESH_KEY=your_refresh_token_here DROID_REFRESH_KEY=your_refresh_token_here

View File

@@ -10,12 +10,18 @@
cp .env.example .env cp .env.example .env
``` ```
编辑 `.env` 文件,填入你的 refresh token 编辑 `.env` 文件,配置认证方式(按优先级选择其一)
```env ```env
# 方式1使用固定API密钥推荐生产环境
FACTORY_API_KEY=your_factory_api_key_here
# 方式2使用refresh token自动刷新
DROID_REFRESH_KEY=your_actual_refresh_token_here DROID_REFRESH_KEY=your_actual_refresh_token_here
``` ```
**优先级FACTORY_API_KEY > DROID_REFRESH_KEY > 客户端authorization**
### 2. 使用 Docker Compose 启动 ### 2. 使用 Docker Compose 启动
```bash ```bash
@@ -45,6 +51,14 @@ docker build -t droid2api:latest .
**运行容器:** **运行容器:**
```bash ```bash
# 方式1使用固定API密钥
docker run -d \
--name droid2api \
-p 3000:3000 \
-e FACTORY_API_KEY="your_factory_api_key_here" \
droid2api:latest
# 方式2使用refresh token
docker run -d \ docker run -d \
--name droid2api \ --name droid2api \
-p 3000:3000 \ -p 3000:3000 \
@@ -75,8 +89,9 @@ docker rm droid2api
- **Environment**: Docker - **Environment**: Docker
- **Branch**: docker-deploy - **Branch**: docker-deploy
- **Port**: 3000 - **Port**: 3000
4. 添加环境变量: 4. 添加环境变量(选择其一)
- `DROID_REFRESH_KEY`: 你的 refresh token - `FACTORY_API_KEY`: 固定API密钥推荐
- `DROID_REFRESH_KEY`: refresh token
5. 点击 "Create Web Service" 5. 点击 "Create Web Service"
### Railway 部署 ### Railway 部署
@@ -85,8 +100,9 @@ docker rm droid2api
2. 选择 "Deploy from GitHub repo" 2. 选择 "Deploy from GitHub repo"
3. 选择分支docker-deploy 3. 选择分支docker-deploy
4. Railway 会自动检测 Dockerfile 4. Railway 会自动检测 Dockerfile
5. 添加环境变量: 5. 添加环境变量(选择其一)
- `DROID_REFRESH_KEY`: 你的 refresh token - `FACTORY_API_KEY`: 固定API密钥推荐
- `DROID_REFRESH_KEY`: refresh token
6. 部署完成后会自动分配域名 6. 部署完成后会自动分配域名
### Fly.io 部署 ### Fly.io 部署
@@ -106,8 +122,12 @@ docker rm droid2api
fly launch fly launch
``` ```
4. 设置环境变量: 4. 设置环境变量(选择其一)
```bash ```bash
# 使用固定API密钥推荐
fly secrets set FACTORY_API_KEY="your_factory_api_key_here"
# 或使用refresh token
fly secrets set DROID_REFRESH_KEY="your_refresh_token_here" fly secrets set DROID_REFRESH_KEY="your_refresh_token_here"
``` ```
@@ -125,6 +145,16 @@ docker rm droid2api
2. 部署到 Cloud Run 2. 部署到 Cloud Run
```bash ```bash
# 使用固定API密钥推荐
gcloud run deploy droid2api \
--image gcr.io/YOUR_PROJECT_ID/droid2api \
--platform managed \
--region us-central1 \
--allow-unauthenticated \
--set-env-vars FACTORY_API_KEY="your_factory_api_key_here" \
--port 3000
# 或使用refresh token
gcloud run deploy droid2api \ gcloud run deploy droid2api \
--image gcr.io/YOUR_PROJECT_ID/droid2api \ --image gcr.io/YOUR_PROJECT_ID/droid2api \
--platform managed \ --platform managed \
@@ -139,7 +169,8 @@ docker rm droid2api
1. 创建 ECR 仓库 1. 创建 ECR 仓库
2. 推送镜像到 ECR 2. 推送镜像到 ECR
3. 创建 ECS 任务定义 3. 创建 ECS 任务定义
4. 配置环境变量: 4. 配置环境变量(选择其一)
- `FACTORY_API_KEY`(推荐)
- `DROID_REFRESH_KEY` - `DROID_REFRESH_KEY`
5. 创建 ECS 服务 5. 创建 ECS 服务
@@ -166,6 +197,15 @@ volumes:
```bash ```bash
docker volume create droid2api-data docker volume create droid2api-data
# 使用固定API密钥
docker run -d \
--name droid2api \
-p 3000:3000 \
-e FACTORY_API_KEY="your_factory_api_key_here" \
-v droid2api-data:/app \
droid2api:latest
# 或使用refresh token
docker run -d \ docker run -d \
--name droid2api \ --name droid2api \
-p 3000:3000 \ -p 3000:3000 \
@@ -185,10 +225,13 @@ curl http://localhost:3000/v1/models
## 环境变量说明 ## 环境变量说明
| 变量名 | 必需 | 说明 | | 变量名 | 必需 | 优先级 | 说明 |
|--------|------|------| |--------|------|--------|------|
| `DROID_REFRESH_KEY` | | Factory refresh token用于自动刷新 API key | | `FACTORY_API_KEY` | | 最高 | 固定API密钥跳过自动刷新推荐生产环境 |
| `NODE_ENV` | 否 | 运行环境,默认 production | | `DROID_REFRESH_KEY` | 否 | 次高 | Factory refresh token用于自动刷新 API key |
| `NODE_ENV` | 否 | - | 运行环境,默认 production |
**注意**`FACTORY_API_KEY` 和 `DROID_REFRESH_KEY` 至少配置一个
## 故障排查 ## 故障排查
@@ -200,18 +243,19 @@ docker logs droid2api
``` ```
常见问题: 常见问题:
- 缺少 `DROID_REFRESH_KEY` 环境变量 - 缺少认证配置(`FACTORY_API_KEY` 或 `DROID_REFRESH_KEY`
- refresh token 无效或过期 - API密钥或refresh token 无效或过期
- 端口 3000 已被占用 - 端口 3000 已被占用
### API 请求返回 401 ### API 请求返回 401
**原因**refresh token 过期或无效 **原因**API密钥或refresh token 过期或无效
**解决** **解决**
1. 获取新的 refresh token 1. 如果使用 `FACTORY_API_KEY`:检查密钥是否有效
2. 更新环境变量 2. 如果使用 `DROID_REFRESH_KEY`:获取新的 refresh token
3. 重启容器 3. 更新环境变量
4. 重启容器
### 容器频繁重启 ### 容器频繁重启
@@ -224,9 +268,10 @@ docker logs droid2api
1. **不要将 `.env` 文件提交到 Git** 1. **不要将 `.env` 文件提交到 Git**
2. **使用 secrets 管理敏感信息**(如 GitHub Secrets、Docker Secrets 2. **使用 secrets 管理敏感信息**(如 GitHub Secrets、Docker Secrets
3. **定期更新 refresh token** 3. **生产环境推荐使用 `FACTORY_API_KEY`**(更稳定,无需刷新)
4. **启用 HTTPS**(云平台通常自动提供) 4. **定期更新 API 密钥和 refresh token**
5. **限制访问来源**(通过防火墙或云平台配置 5. **启用 HTTPS**(云平台通常自动提供
6. **限制访问来源**(通过防火墙或云平台配置)
## 性能优化 ## 性能优化

View File

@@ -7,7 +7,10 @@ services:
ports: ports:
- "3000:3000" - "3000:3000"
environment: environment:
# 必需设置refresh token # 认证配置(按优先级选择其一):
# 最高优先级固定API密钥推荐用于生产环境
- FACTORY_API_KEY=${FACTORY_API_KEY}
# 次优先级refresh token自动刷新机制
- DROID_REFRESH_KEY=${DROID_REFRESH_KEY} - DROID_REFRESH_KEY=${DROID_REFRESH_KEY}
# 可选如果需要修改端口在config.json中配置 # 可选如果需要修改端口在config.json中配置
volumes: volumes:

View File

@@ -1,6 +1,6 @@
{ {
"name": "droid2api", "name": "droid2api",
"version": "1.3.1", "version": "1.3.2",
"description": "OpenAI Compatible API Proxy", "description": "OpenAI Compatible API Proxy",
"main": "server.js", "main": "server.js",
"type": "module", "type": "module",