环境变量配置指南
本文档提供了New API支持的所有环境变量及其配置说明。您可以通过设置这些环境变量来自定义系统的行为。
ℹ️提示
ThinkMaaS 支持从 .env 文件中读取环境变量,请参照 .env.example
文件,使用时请将其重命名为 .env。
基本配置
| 环境变量 |
说明 |
默认值 |
示例 |
PORT |
服务监听端口 |
3000 |
PORT=8080 |
TZ |
时区设置 |
- |
TZ=America/New_York |
VERSION |
覆盖运行版本号 |
- |
VERSION=1.2.3 |
数据库配置
| 环境变量 |
说明 |
默认值 |
示例 |
SQL_DSN |
数据库连接字符串 |
SQLite (one-api.db) |
PostgreSQL(推荐): SQL_DSN=postgresql://root:123456@postgres:5432/new-api | MySQL: SQL_DSN=root:123456@tcp(localhost:3306)/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=postgresql://root:123456@postgres:5432/oneapi_logs |
SQLITE_PATH |
SQLite数据库路径 |
one-api.db |
SQLITE_PATH=/var/lib/new-api/new-api.db |
ℹ️提示
生产环境优先推荐 PostgreSQL。MySQL 继续作为兼容选项;不设置 SQL_DSN
时使用的 SQLite 更适合本地开发和测试。
缓存配置
| 环境变量 |
说明 |
默认值 |
示例 |
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 |
缓存同步频率,也是独立 Redis 部署下 Session 缓存的最大陈旧窗口(秒) |
60 |
SYNC_FREQUENCY=60 |
BATCH_UPDATE_ENABLED |
启用数据库批量更新聚合 |
false |
BATCH_UPDATE_ENABLED=true |
BATCH_UPDATE_INTERVAL |
批量更新聚合时间间隔(秒) |
5 |
BATCH_UPDATE_INTERVAL=10 |
REDIS_CONN_STRING 必须指向单一的 Redis 兼容连接端点,认证信息应直接包含在 URI 中。ThinkMaaS 不原生解析 Redis Cluster 或 Sentinel 节点列表;如需 Redis 高可用,请由托管服务或代理提供单一兼容端点。
数据库是面板 Session 状态的唯一权威来源。Redis 中 Session Hash 的 TTL 取 Session 剩余寿命与有效 SYNC_FREQUENCY 的较小值,读取不会续期。延迟完成的 active 缓存回写只使用数据库读取时观察窗口的剩余部分,因此不会在撤销 tombstone 过期后重新获得完整 TTL。
多节点与安全配置
| 环境变量 |
说明 |
默认值 |
示例 |
SESSION_SECRET |
会话密钥(多机部署必须) |
- |
SESSION_SECRET=your_session_secret |
CRYPTO_SECRET |
缓存键 HMAC 密钥;共享 Redis 的节点必须使用相同有效值 |
默认跟随 SESSION_SECRET |
CRYPTO_SECRET=your_crypto_secret |
FRONTEND_BASE_URL |
前端基础URL(从节点使用,将未匹配路由重定向到此地址) |
- |
FRONTEND_BASE_URL=https://<your-newapi-domain> |
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,否则程序将拒绝启动。多机部署时所有节点必须使用相同的密钥。
ℹ️提示
关于如何使用这些环境变量构建完整的集群部署,请参考集群部署指南。
用户及令牌配置
| 环境变量 |
说明 |
默认值 |
示例 |
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 |
请在系统设置-模型相关设置中设置 |
多机部署示例
多机部署必须使用同一个远程数据库和相同的 SESSION_SECRET。Redis 可以由所有节点共享、由每个节点独立部署,或不配置;三种模式的行为差异请参阅集群部署指南。
主节点配置
# 数据库配置 - 使用远程数据库
SQL_DSN=postgresql://newapi:password@db-server:5432/oneapi
# 安全配置
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret
# Redis缓存配置(也可使用本节点 Redis,或省略以禁用 Redis)
REDIS_CONN_STRING=redis://default:password@redis-server:6379
从节点配置
# 数据库配置 - 使用相同的远程数据库
SQL_DSN=postgresql://newapi:password@db-server:5432/oneapi
# 安全配置 - SESSION_SECRET 与主节点相同;共享 Redis 时 CRYPTO_SECRET 也相同
SESSION_SECRET=your_unique_session_secret
CRYPTO_SECRET=your_unique_crypto_secret
# Redis缓存配置 - 可与主节点相同,也可指向本节点独立 Redis
REDIS_CONN_STRING=redis://default:password@redis-slave-node:6379
# 节点类型设置
NODE_TYPE=slave
# 可选:前端基础URL
# FRONTEND_BASE_URL=https://<your-newapi-domain>
# 可选:同步频率
SYNC_FREQUENCY=60
ℹ️提示
本示例展示每节点独立 Redis。共享 Redis 时让两个节点使用相同的 REDIS_CONN_STRING;不配置 Redis 时,Session 校验直接查询共享数据库。完整配置和一致性语义请参考集群部署指南。
Docker Compose中的环境变量示例
下面是一个在Docker Compose配置文件中设置环境变量的简要示例:
services:
new-api:
image: calciumion/new-api:latest
environment:
- TZ=Asia/Shanghai
- SQL_DSN=postgresql://newapi:123456@postgres:5432/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配置说明文档。