88API88API
使用指南API 文档AI 应用帮助支持

环境变量配置指南

本文档提供了88API支持的所有环境变量及其配置说明。您可以通过设置这些环境变量来自定义系统的行为。

提示

88API 支持从 .env 文件中读取环境变量,请参照 .env.example 文件,使用时请将其重命名为 .env

基本配置

环境变量说明默认值示例
PORT服务监听端口3000PORT=8080
TZ时区设置Asia/ShanghaiTZ=America/New_York

数据库配置

环境变量说明默认值示例
SQL_DSN数据库连接字符串SQLite (data/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空闲连接池最大连接数100SQL_MAX_IDLE_CONNS=50
SQL_MAX_OPEN_CONNS连接池最大打开连接数1000SQL_MAX_OPEN_CONNS=500
SQL_CONN_MAX_LIFETIME连接最大生命周期(分钟)60SQL_CONN_MAX_LIFETIME=120
LOG_SQL_DSN日志表独立数据库连接字符串-LOG_SQL_DSN=root:123456@tcp(localhost:3306)/oneapi_logs
SQLITE_BUSY_TIMEOUTSQLite锁等待超时(毫秒)3000SQLITE_BUSY_TIMEOUT=5000

缓存配置

环境变量说明默认值示例
REDIS_CONN_STRINGRedis连接字符串-REDIS_CONN_STRING=redis://default:redispw@localhost:6379
MEMORY_CACHE_ENABLED是否启用内存缓存falseMEMORY_CACHE_ENABLED=true
REDIS_CONN_POOL_SIZERedis连接池大小-REDIS_CONN_POOL_SIZE=10
REDIS_PASSWORDRedis集群或哨兵模式密码-REDIS_PASSWORD=your_password
REDIS_MASTER_NAMERedis哨兵模式主节点名称-REDIS_MASTER_NAME=mymaster
BATCH_UPDATE_ENABLED启用数据库批量更新聚合falseBATCH_UPDATE_ENABLED=true
BATCH_UPDATE_INTERVAL批量更新聚合时间间隔(秒)5BATCH_UPDATE_INTERVAL=10

多节点与安全配置

环境变量说明默认值示例
SESSION_SECRET会话密钥(多机部署必须)-SESSION_SECRET=random_string
CRYPTO_SECRET加密密钥(加密数据库内容)-CRYPTO_SECRET=your_crypto_secret
FRONTEND_BASE_URL前端基础URL-FRONTEND_BASE_URL=https://your-domain.com
SYNC_FREQUENCY缓存与数据库同步频率(秒)600SYNC_FREQUENCY=60
NODE_TYPE节点类型masterNODE_TYPE=slave
INITIAL_ROOT_TOKEN首次启动时创建的root用户令牌-INITIAL_ROOT_TOKEN=your_token
INITIAL_ROOT_ACCESS_TOKEN首次启动时创建的系统管理令牌-INITIAL_ROOT_ACCESS_TOKEN=your_token

集群部署

关于如何使用这些环境变量构建完整的集群部署,请参考集群部署指南

用户及令牌配置

环境变量说明默认值示例
DEFAULT_QUOTA新用户默认配额0DEFAULT_QUOTA=10
GLOBAL_USER_QUOTA全局用户配额限制-GLOBAL_USER_QUOTA=100
GENERATE_DEFAULT_TOKEN为新注册用户生成初始令牌falseGENERATE_DEFAULT_TOKEN=true
NOTIFICATION_LIMIT_DURATION_MINUTE通知限制的持续时间(分钟)10NOTIFICATION_LIMIT_DURATION_MINUTE=15
NOTIFY_LIMIT_COUNT指定持续时间内的最大通知数量2NOTIFY_LIMIT_COUNT=3

请求限制配置

环境变量说明默认值示例
GLOBAL_API_RATE_LIMIT全局API速率限制(单IP三分钟)180GLOBAL_API_RATE_LIMIT=100
GLOBAL_WEB_RATE_LIMIT全局Web速率限制(单IP三分钟)60GLOBAL_WEB_RATE_LIMIT=30
RELAY_TIMEOUT中继请求超时时间(秒)-RELAY_TIMEOUT=60
USER_CONTENT_REQUEST_TIMEOUT用户内容下载超时时间(秒)-USER_CONTENT_REQUEST_TIMEOUT=30
STREAMING_TIMEOUT流式一次回复的超时时间(秒)60STREAMING_TIMEOUT=120
MAX_FILE_DOWNLOAD_MB最大文件下载大小(MB)20MAX_FILE_DOWNLOAD_MB=50

RELAY_TIMEOUT 设置警告

设置 RELAY_TIMEOUT 环境变量时请谨慎,如果设置过短可能导致以下问题:

  • 上游API已经完成请求并计费,但本地因超时而未完成计费

  • 造成计费不同步,可能导致系统亏损

  • 建议不设置,除非您知道自己在做什么

渠道管理配置

环境变量说明默认值示例
CHANNEL_UPDATE_FREQUENCY定期更新渠道余额(分钟)-CHANNEL_UPDATE_FREQUENCY=1440
CHANNEL_TEST_FREQUENCY定期检查渠道(分钟)-CHANNEL_TEST_FREQUENCY=1440
POLLING_INTERVAL批量更新渠道时请求间隔(秒)0POLLING_INTERVAL=5
ENABLE_METRIC是否根据请求成功率禁用渠道falseENABLE_METRIC=true
METRIC_QUEUE_SIZE请求成功率统计队列大小10METRIC_QUEUE_SIZE=20
METRIC_SUCCESS_RATE_THRESHOLD请求成功率阈值0.8METRIC_SUCCESS_RATE_THRESHOLD=0.7
TEST_PROMPT测试模型时的用户promptPrint your model name exactly...TEST_PROMPT=Hello

代理配置

环境变量说明默认值示例
RELAY_PROXY中继请求使用的代理-RELAY_PROXY=http://127.0.0.1:7890
USER_CONTENT_REQUEST_PROXY用户内容请求使用的代理-USER_CONTENT_REQUEST_PROXY=http://127.0.0.1:7890

模型和请求处理配置

环境变量说明默认值示例
FORCE_STREAM_OPTION覆盖客户端stream_options参数trueFORCE_STREAM_OPTION=false
GET_MEDIA_TOKEN是否统计图片tokentrueGET_MEDIA_TOKEN=false
GET_MEDIA_TOKEN_NOT_STREAM非流模式下是否统计图片tokentrueGET_MEDIA_TOKEN_NOT_STREAM=false
UPDATE_TASK是否更新异步任务(MJ、Suno)trueUPDATE_TASK=false
ENFORCE_INCLUDE_USAGE强制stream模式下返回usagefalseENFORCE_INCLUDE_USAGE=true
TIKTOKEN_CACHE_DIRTiktoken编码器缓存目录,用于存放分词文件避免网络下载-TIKTOKEN_CACHE_DIR=/cache/tiktoken
DATA_GYM_CACHE_DIRDataGym缓存目录-DATA_GYM_CACHE_DIR=/cache/data_gym

Tiktoken文件配置

下载tiktoken文件后,请按照以下方式重命名:

  • cl100k_base.tiktoken 重命名为 9b5ad71b2ce5302211f9c61530b329a4922fc6a4
  • o200k_base.tiktoken 重命名为 fb374d419588a4632f3f557e76b4b70aebbca790

这些文件应放置在TIKTOKEN_CACHE_DIR指定的目录中,以提高token计算性能并减少网络依赖。

Tiktoken配置示例

# Docker环境示例
TIKTOKEN_CACHE_DIR=/app/data/tiktoken

  # 然后将tiktoken文件下载并重命名后放入该目录:

# /app/data/tiktoken/9b5ad71b2ce5302211f9c61530b329a4922fc6a4

# /app/data/tiktoken/fb374d419588a4632f3f557e76b4b70aebbca790

Tiktoken是OpenAI使用的分词器,用于计算文本的token数量。通过本地缓存这些文件,可以避免系统每次启动时从网络下载,提高稳定性和性能,特别是在网络受限环境中。

特定模型配置

环境变量说明默认值示例
AZURE_DEFAULT_API_VERSIONAzure渠道默认API版本2024-12-01-previewAZURE_DEFAULT_API_VERSION=2023-05-15
COHERE_SAFETY_SETTINGCohere模型安全设置NONECOHERE_SAFETY_SETTING=CONTEXTUAL
GEMINI_VISION_MAX_IMAGE_NUMGemini模型最大图片数量16GEMINI_VISION_MAX_IMAGE_NUM=8
GEMINI_VERSIONGemini版本v1GEMINI_VERSION=v1beta
DIFY_DEBUGDify渠道输出工作流和节点信息trueDIFY_DEBUG=false

其他配置

环境变量说明默认值示例
EMAIL_SERVER邮件服务器配置-EMAIL_SERVER=smtp.example.com:25
EMAIL_FROM邮件发送者地址-EMAIL_FROM=noreply@example.com
EMAIL_PASSWORD邮件服务器密码-EMAIL_PASSWORD=yourpassword
ERROR_LOG_ENABLED是否记录并在前端显示错误日志falseERROR_LOG_ENABLED=true

已废弃的环境变量

以下环境变量已被废弃,请使用系统设置界面中的相应选项:

环境变量替代方式
GEMINI_MODEL_MAP请在系统设置-模型相关设置中设置
GEMINI_SAFETY_SETTING请在系统设置-模型相关设置中设置

多机部署示例

在多机部署场景中,必须设置以下环境变量:

主节点配置

# 数据库配置 - 使用远程数据库
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

从节点配置

# 数据库配置 - 使用相同的远程数据库
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://your-domain.com

# 可选:同步频率
SYNC_FREQUENCY=60

完整集群配置

这只是基本的多节点配置示例。完整的集群部署配置、架构说明和最佳实践,请参考集群部署指南

Docker Compose中的环境变量示例

下面是一个在Docker Compose配置文件中设置环境变量的简要示例:

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配置说明文档。