# 环境变量配置指南
本文档提供了New API支持的所有环境变量及其配置说明。您可以通过设置这些环境变量来自定义系统的行为。
New API 支持从 `.env` 文件中读取环境变量,请参照 `.env.example`
文件,使用时请将其重命名为 `.env`。
## 基本配置
| 环境变量 | 说明 | 默认值 | 示例 |
| --------- | ------- | ------ | --------------------- |
| `PORT` | 服务监听端口 | `3000` | `PORT=8080` |
| `TZ` | 时区设置 | - | `TZ=America/New_York` |
| `VERSION` | 覆盖运行版本号 | - | `VERSION=1.2.3` |
## 数据库配置
| 环境变量 | 说明 | 默认值 | 示例 |
| -------------------- | ------------- | --------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `SQL_DSN` | 数据库连接字符串 | SQLite (`one-api.db`) | MySQL: `SQL_DSN=root:123456@tcp(localhost:3306)/new-api` \| PostgreSQL: `SQL_DSN=postgresql://root:123456@postgres:5432/new-api` |
| `SQL_MAX_IDLE_CONNS` | 空闲连接池最大连接数 | `100` | `SQL_MAX_IDLE_CONNS=50` |
| `SQL_MAX_OPEN_CONNS` | 连接池最大打开连接数 | `1000` | `SQL_MAX_OPEN_CONNS=500` |
| `SQL_MAX_LIFETIME` | 连接最大生命周期(秒) | `60` | `SQL_MAX_LIFETIME=120` |
| `LOG_SQL_DSN` | 日志表独立数据库连接字符串 | - | `LOG_SQL_DSN=root:123456@tcp(localhost:3306)/oneapi_logs` |
| `SQLITE_PATH` | SQLite数据库路径 | `one-api.db` | `SQLITE_PATH=/var/lib/new-api/new-api.db` |
## 缓存配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ----------------------- | ---------------------- | ------- | ---------------------------------------------------------- |
| `REDIS_CONN_STRING` | Redis连接字符串 | - | `REDIS_CONN_STRING=redis://default:redispw@localhost:6379` |
| `REDIS_POOL_SIZE` | Redis连接池大小 | `10` | `REDIS_POOL_SIZE=20` |
| `MEMORY_CACHE_ENABLED` | 是否启用内存缓存(启用Redis后自动启用) | `false` | `MEMORY_CACHE_ENABLED=true` |
| `SYNC_FREQUENCY` | 缓存与数据库同步频率(秒) | `60` | `SYNC_FREQUENCY=120` |
| `BATCH_UPDATE_ENABLED` | 启用数据库批量更新聚合 | `false` | `BATCH_UPDATE_ENABLED=true` |
| `BATCH_UPDATE_INTERVAL` | 批量更新聚合时间间隔(秒) | `5` | `BATCH_UPDATE_INTERVAL=10` |
## 多节点与安全配置
| 环境变量 | 说明 | 默认值 | 示例 |
| -------------------------- | ---------------------------------- | -------- | ------------------------------------------------------ |
| `SESSION_SECRET` | 会话密钥(多机部署必须) | - | `SESSION_SECRET=your_session_secret` |
| `CRYPTO_SECRET` | 加密密钥(加密数据库内容,默认回退到SESSION\_SECRET) | - | `CRYPTO_SECRET=your_crypto_secret` |
| `FRONTEND_BASE_URL` | 前端基础URL(从节点使用,将未匹配路由重定向到此地址) | - | `FRONTEND_BASE_URL=https://` |
| `NODE_TYPE` | 节点类型 | `master` | `NODE_TYPE=slave` |
| `TLS_INSECURE_SKIP_VERIFY` | 全局跳过TLS证书验证 | `false` | `TLS_INSECURE_SKIP_VERIFY=true` |
| `TRUSTED_REDIRECT_DOMAINS` | 受信任的重定向域名列表(逗号分隔) | - | `TRUSTED_REDIRECT_DOMAINS=example.com,api.example.com` |
`SESSION_SECRET` 不可设置为 `random_string`,否则程序将拒绝启动。多机部署时所有节点必须使用相同的密钥。
关于如何使用这些环境变量构建完整的集群部署,请参考[集群部署指南](/zh/docs/installation/deployment-methods/cluster-deployment)。
## 用户及令牌配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ------------------------------------ | -------------- | ------- | --------------------------------------- |
| `GENERATE_DEFAULT_TOKEN` | 为新注册用户生成初始令牌 | `false` | `GENERATE_DEFAULT_TOKEN=true` |
| `NOTIFICATION_LIMIT_DURATION_MINUTE` | 通知限制的持续时间(分钟) | `10` | `NOTIFICATION_LIMIT_DURATION_MINUTE=15` |
| `NOTIFY_LIMIT_COUNT` | 指定持续时间内的最大通知数量 | `2` | `NOTIFY_LIMIT_COUNT=3` |
## 请求限制配置
| 环境变量 | 说明 | 默认值 | 示例 |
| -------------------------------- | -------------- | ------ | ------------------------------------ |
| `GLOBAL_API_RATE_LIMIT_ENABLE` | 全局API速率限制开关 | `true` | `GLOBAL_API_RATE_LIMIT_ENABLE=false` |
| `GLOBAL_API_RATE_LIMIT` | 全局API速率限制(单IP) | `180` | `GLOBAL_API_RATE_LIMIT=100` |
| `GLOBAL_API_RATE_LIMIT_DURATION` | 全局API速率限制窗口(秒) | `180` | `GLOBAL_API_RATE_LIMIT_DURATION=120` |
| `GLOBAL_WEB_RATE_LIMIT_ENABLE` | 全局Web速率限制开关 | `true` | `GLOBAL_WEB_RATE_LIMIT_ENABLE=false` |
| `GLOBAL_WEB_RATE_LIMIT` | 全局Web速率限制(单IP) | `60` | `GLOBAL_WEB_RATE_LIMIT=30` |
| `GLOBAL_WEB_RATE_LIMIT_DURATION` | 全局Web速率限制窗口(秒) | `180` | `GLOBAL_WEB_RATE_LIMIT_DURATION=120` |
| `CRITICAL_RATE_LIMIT_ENABLE` | 关键操作速率限制开关 | `true` | `CRITICAL_RATE_LIMIT_ENABLE=false` |
| `CRITICAL_RATE_LIMIT` | 关键操作速率限制次数 | `20` | `CRITICAL_RATE_LIMIT=10` |
| `CRITICAL_RATE_LIMIT_DURATION` | 关键操作速率限制窗口(秒) | `1200` | `CRITICAL_RATE_LIMIT_DURATION=600` |
## 中继与代理配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ------------------------------- | ------------------------------- | ----- | ----------------------------------- |
| `RELAY_TIMEOUT` | 中继请求超时时间(秒),0为不限 | `0` | `RELAY_TIMEOUT=60` |
| `STREAMING_TIMEOUT` | 流式一次回复的超时时间(秒) | `300` | `STREAMING_TIMEOUT=120` |
| `RELAY_MAX_IDLE_CONNS` | 中继HTTP客户端池最大空闲连接数 | `500` | `RELAY_MAX_IDLE_CONNS=1000` |
| `RELAY_MAX_IDLE_CONNS_PER_HOST` | 中继HTTP客户端池每主机最大空闲连接数 | `100` | `RELAY_MAX_IDLE_CONNS_PER_HOST=200` |
| `MAX_FILE_DOWNLOAD_MB` | 最大文件下载大小(MB) | `64` | `MAX_FILE_DOWNLOAD_MB=128` |
| `MAX_REQUEST_BODY_MB` | 最大请求体大小(MB,解压后计;防止zip bomb/OOM) | `128` | `MAX_REQUEST_BODY_MB=256` |
| `STREAM_SCANNER_MAX_BUFFER_MB` | SSE流扫描缓冲区最大大小(MB) | `64` | `STREAM_SCANNER_MAX_BUFFER_MB=128` |
设置 `RELAY_TIMEOUT` 环境变量时请谨慎,如果设置过短可能导致以下问题:
* 上游API已经完成请求并计费,但本地因超时而未完成计费
* 造成计费不同步,可能导致系统亏损
* 建议不设置,除非您知道自己在做什么
## 渠道管理配置
| 环境变量 | 说明 | 默认值 | 示例 |
| -------------------------- | ------------------ | -------------- | ------------------------------- |
| `CHANNEL_UPDATE_FREQUENCY` | 定期更新渠道余额(分钟) | -(不设置则禁用) | `CHANNEL_UPDATE_FREQUENCY=1440` |
| `CHANNEL_TEST_FREQUENCY` | 定期检查渠道(分钟),覆盖数据库设置 | -(不设置则使用数据库设置) | `CHANNEL_TEST_FREQUENCY=1440` |
| `POLLING_INTERVAL` | 请求轮询间隔(秒) | `0` | `POLLING_INTERVAL=5` |
### 渠道上游模型同步
| 环境变量 | 说明 | 默认值 | 示例 |
| ---------------------------------------------------------- | --------------- | ------ | -------------------------------------------------------------- |
| `CHANNEL_UPSTREAM_MODEL_UPDATE_TASK_ENABLED` | 启用定期同步上游供应商模型列表 | `true` | `CHANNEL_UPSTREAM_MODEL_UPDATE_TASK_ENABLED=false` |
| `CHANNEL_UPSTREAM_MODEL_UPDATE_TASK_INTERVAL_MINUTES` | 模型列表同步间隔(分钟) | `30` | `CHANNEL_UPSTREAM_MODEL_UPDATE_TASK_INTERVAL_MINUTES=60` |
| `CHANNEL_UPSTREAM_MODEL_UPDATE_MIN_CHECK_INTERVAL_SECONDS` | 单渠道最小检查间隔(秒) | `300` | `CHANNEL_UPSTREAM_MODEL_UPDATE_MIN_CHECK_INTERVAL_SECONDS=600` |
## 模型和请求处理配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ---------------------------- | --------------------------------- | ------- | --------------------------------- |
| `FORCE_STREAM_OPTION` | 覆盖客户端stream\_options参数,强制获取流式用量信息 | `true` | `FORCE_STREAM_OPTION=false` |
| `CountToken` | 是否启用本地token计数 | `true` | `CountToken=false` |
| `GET_MEDIA_TOKEN` | 流式模式下是否统计图片/音频token | `true` | `GET_MEDIA_TOKEN=false` |
| `GET_MEDIA_TOKEN_NOT_STREAM` | 非流模式下是否统计图片/音频token | `false` | `GET_MEDIA_TOKEN_NOT_STREAM=true` |
## 异步任务配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ---------------------- | ---------------------------- | ------ | ------------------------------------ |
| `UPDATE_TASK` | 是否启用异步任务轮询更新(MJ、Suno等) | `true` | `UPDATE_TASK=false` |
| `TASK_QUERY_LIMIT` | 每次轮询查询的最大任务数 | `1000` | `TASK_QUERY_LIMIT=500` |
| `TASK_TIMEOUT_MINUTES` | 异步任务超时(分钟),超时后标记失败并退款,0为禁用 | `1440` | `TASK_TIMEOUT_MINUTES=720` |
| `TASK_PRICE_PATCH` | 任务价格补丁,设置的模型仅按次计费,模型名用英文逗号隔开 | - | `TASK_PRICE_PATCH=sora-2,sora-2-pro` |
## 特定模型配置
| 环境变量 | 说明 | 默认值 | 示例 |
| --------------------------- | ---------------- | -------------------- | -------------------------------------- |
| `AZURE_DEFAULT_API_VERSION` | Azure渠道默认API版本 | `2025-04-01-preview` | `AZURE_DEFAULT_API_VERSION=2023-05-15` |
| `COHERE_SAFETY_SETTING` | Cohere模型安全设置 | `NONE` | `COHERE_SAFETY_SETTING=CONTEXTUAL` |
| `DIFY_DEBUG` | Dify渠道输出工作流和节点信息 | `true` | `DIFY_DEBUG=false` |
## 订阅缓存配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ---------------------------------- | -------------- | ------- | ---------------------------------------- |
| `SUBSCRIPTION_PLAN_CACHE_TTL` | 订阅计划缓存TTL(秒) | `300` | `SUBSCRIPTION_PLAN_CACHE_TTL=600` |
| `SUBSCRIPTION_PLAN_INFO_CACHE_TTL` | 订阅计划详情缓存TTL(秒) | `120` | `SUBSCRIPTION_PLAN_INFO_CACHE_TTL=300` |
| `SUBSCRIPTION_PLAN_CACHE_CAP` | 订阅计划缓存最大容量 | `5000` | `SUBSCRIPTION_PLAN_CACHE_CAP=10000` |
| `SUBSCRIPTION_PLAN_INFO_CACHE_CAP` | 订阅计划详情缓存最大容量 | `10000` | `SUBSCRIPTION_PLAN_INFO_CACHE_CAP=20000` |
## 其他配置
| 环境变量 | 说明 | 默认值 | 示例 |
| ------------------- | -------------- | ------- | ------------------------ |
| `ERROR_LOG_ENABLED` | 是否记录并在前端显示错误日志 | `false` | `ERROR_LOG_ENABLED=true` |
## 分析统计
| 环境变量 | 说明 | 默认值 | 示例 |
| --------------------- | ---------------------- | -------------------------------------- | ------------------------------------------------------ |
| `UMAMI_WEBSITE_ID` | Umami站点ID | - | `UMAMI_WEBSITE_ID=xxxx-xxxx` |
| `UMAMI_SCRIPT_URL` | Umami脚本地址 | `https://analytics.umami.is/script.js` | `UMAMI_SCRIPT_URL=https://umami.example.com/script.js` |
| `GOOGLE_ANALYTICS_ID` | Google Analytics 4站点ID | - | `GOOGLE_ANALYTICS_ID=G-XXXXXXX` |
## 元数据同步
| 环境变量 | 说明 | 默认值 | 示例 |
| --------------------------- | ------------ | ---------------------------------------- | ------------------------------------------------------------ |
| `SYNC_UPSTREAM_BASE` | 模型/厂商元数据上游地址 | `https://basellm.github.io/llm-metadata` | `SYNC_UPSTREAM_BASE=https://mirror.example.com/llm-metadata` |
| `SYNC_HTTP_TIMEOUT_SECONDS` | 同步HTTP超时(秒) | `10` | `SYNC_HTTP_TIMEOUT_SECONDS=15` |
| `SYNC_HTTP_RETRY` | 同步重试次数 | `3` | `SYNC_HTTP_RETRY=5` |
| `SYNC_HTTP_MAX_MB` | 响应体最大大小(MB) | `10` | `SYNC_HTTP_MAX_MB=20` |
## 前端配置
| 环境变量 | 说明 | 默认值 | 示例 |
| --------------------------- | ------------------ | --- | --------------------------------------------------- |
| `VITE_REACT_APP_SERVER_URL` | 前端请求后端的基础地址(编译时生效) | - | `VITE_REACT_APP_SERVER_URL=https://api.example.com` |
`VITE_REACT_APP_SERVER_URL` 是 Vite 编译时注入的前端变量,仅在构建前端时生效,运行时无法修改。
## Pyroscope 持续性能分析
| 环境变量 | 说明 | 默认值 | 示例 |
| ------------------------------- | ----------------------- | --------- | -------------------------------------- |
| `PYROSCOPE_URL` | Pyroscope服务器地址,留空禁用 | - | `PYROSCOPE_URL=http://pyroscope:4040` |
| `PYROSCOPE_APP_NAME` | 上报的应用名称 | `new-api` | `PYROSCOPE_APP_NAME=my-api` |
| `PYROSCOPE_BASIC_AUTH_USER` | Pyroscope Basic Auth用户名 | - | `PYROSCOPE_BASIC_AUTH_USER=admin` |
| `PYROSCOPE_BASIC_AUTH_PASSWORD` | Pyroscope Basic Auth密码 | - | `PYROSCOPE_BASIC_AUTH_PASSWORD=secret` |
| `HOSTNAME` | 上报的主机名标签 | `new-api` | `HOSTNAME=node-1` |
| `PYROSCOPE_MUTEX_RATE` | 互斥锁分析采样率 | `5` | `PYROSCOPE_MUTEX_RATE=10` |
| `PYROSCOPE_BLOCK_RATE` | 阻塞分析采样率 | `5` | `PYROSCOPE_BLOCK_RATE=10` |
## LinuxDo OAuth
正常情况下无需修改。
| 环境变量 | 说明 | 默认值 | 示例 |
| ------------------------- | ------------ | --------------------------------------- | --------------------------------------------------------------- |
| `LINUX_DO_TOKEN_ENDPOINT` | LinuxDo 令牌端点 | `https://connect.linux.do/oauth2/token` | `LINUX_DO_TOKEN_ENDPOINT=https://connect.linux.do/oauth2/token` |
| `LINUX_DO_USER_ENDPOINT` | LinuxDo 用户端点 | `https://connect.linux.do/api/user` | `LINUX_DO_USER_ENDPOINT=https://connect.linux.do/api/user` |
## 调试相关
| 环境变量 | 说明 | 默认值 | 示例 |
| -------------- | ------------------- | --------- | ------------------- |
| `DEBUG` | 启用调试模式(包括GORM调试输出) | `false` | `DEBUG=true` |
| `GIN_MODE` | Gin运行模式 | `release` | `GIN_MODE=debug` |
| `ENABLE_PPROF` | 启用pprof性能分析(端口8005) | `false` | `ENABLE_PPROF=true` |
## 已废弃的环境变量
以下环境变量已被废弃,请使用系统设置界面中的相应选项:
| 环境变量 | 替代方式 |
| ----------------------------- | ---------------- |
| `GEMINI_MODEL_MAP` | 请在系统设置-模型相关设置中设置 |
| `GEMINI_SAFETY_SETTING` | 请在系统设置-模型相关设置中设置 |
| `GEMINI_VISION_MAX_IMAGE_NUM` | 请在系统设置-模型相关设置中设置 |
## 多机部署示例
在多机部署场景中,必须设置以下环境变量:
### 主节点配置
```bash
# 数据库配置 - 使用远程数据库
SQL_DSN=root:password@tcp(db-server:3306)/oneapi
# 安全配置
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret
# Redis缓存配置
REDIS_CONN_STRING=redis://default:password@redis-server:6379
```
### 从节点配置
```bash
# 数据库配置 - 使用相同的远程数据库
SQL_DSN=root:password@tcp(db-server:3306)/oneapi
# 安全配置 - 与主节点使用相同的密钥
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret
# Redis缓存配置 - 与主节点使用相同的Redis
REDIS_CONN_STRING=redis://default:password@redis-server:6379
# 节点类型设置
NODE_TYPE=slave
# 可选:前端基础URL
# FRONTEND_BASE_URL=https://
# 可选:同步频率
SYNC_FREQUENCY=60
```
这只是基本的多节点配置示例。完整的集群部署配置、架构说明和最佳实践,请参考[集群部署指南](/zh/docs/installation/deployment-methods/cluster-deployment)。
## Docker Compose中的环境变量示例
下面是一个在Docker Compose配置文件中设置环境变量的简要示例:
```yaml
services:
new-api:
image: calciumion/new-api:latest
environment:
- TZ=Asia/Shanghai
- SQL_DSN=root:123456@tcp(mysql:3306)/oneapi
- REDIS_CONN_STRING=redis://default:redispw@redis:6379
- SESSION_SECRET=your_unique_session_secret
- CRYPTO_SECRET=your_unique_crypto_secret
- MEMORY_CACHE_ENABLED=true
- GENERATE_DEFAULT_TOKEN=true
- STREAMING_TIMEOUT=120
- CHANNEL_UPDATE_FREQUENCY=1440
```
有关完整的Docker Compose配置,包括更多环境变量设置选项,请参考[Docker Compose配置说明](/zh/docs/installation/config-maintenance/docker-compose-yml)文档。