環境變數配置指南
本文件提供了88API支援的所有環境變數及其配置說明。您可以透過設定這些環境變數來自定義系統的行為。
提示
88API 支援從 .env 檔案中讀取環境變數,請參照 .env.example
檔案,使用時請將其重新命名為 .env。
基本配置
| 環境變數 | 說明 | 預設值 | 示例 |
|---|---|---|---|
PORT | 服務監聽埠 | 3000 | PORT=8080 |
TZ | 時區設定 | Asia/Shanghai | TZ=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 | 空閒連線池最大連線數 | 100 | SQL_MAX_IDLE_CONNS=50 |
SQL_MAX_OPEN_CONNS | 連線池最大開啟連線數 | 1000 | SQL_MAX_OPEN_CONNS=500 |
SQL_CONN_MAX_LIFETIME | 連線最大生命週期(分鐘) | 60 | SQL_CONN_MAX_LIFETIME=120 |
LOG_SQL_DSN | 日誌表獨立資料庫連線字串 | - | LOG_SQL_DSN=root:123456@tcp(localhost:3306)/oneapi_logs |
SQLITE_BUSY_TIMEOUT | SQLite鎖等待超時(毫秒) | 3000 | SQLITE_BUSY_TIMEOUT=5000 |
快取配置
| 環境變數 | 說明 | 預設值 | 示例 |
|---|---|---|---|
REDIS_CONN_STRING | Redis連線字串 | - | REDIS_CONN_STRING=redis://default:redispw@localhost:6379 |
MEMORY_CACHE_ENABLED | 是否啟用記憶體快取 | false | MEMORY_CACHE_ENABLED=true |
REDIS_CONN_POOL_SIZE | Redis連線池大小 | - | REDIS_CONN_POOL_SIZE=10 |
REDIS_PASSWORD | Redis叢集或哨兵模式密碼 | - | REDIS_PASSWORD=your_password |
REDIS_MASTER_NAME | Redis哨兵模式主節點名稱 | - | REDIS_MASTER_NAME=mymaster |
BATCH_UPDATE_ENABLED | 啟用資料庫批次更新聚合 | false | BATCH_UPDATE_ENABLED=true |
BATCH_UPDATE_INTERVAL | 批次更新聚合時間間隔(秒) | 5 | BATCH_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 | 快取與資料庫同步頻率(秒) | 600 | SYNC_FREQUENCY=60 |
NODE_TYPE | 節點型別 | master | NODE_TYPE=slave |
INITIAL_ROOT_TOKEN | 首次啟動時建立的root使用者令牌 | - | INITIAL_ROOT_TOKEN=your_token |
INITIAL_ROOT_ACCESS_TOKEN | 首次啟動時建立的系統管理令牌 | - | INITIAL_ROOT_ACCESS_TOKEN=your_token |
叢集部署
關於如何使用這些環境變數構建完整的叢集部署,請參考叢集部署指南。
使用者及令牌配置
| 環境變數 | 說明 | 預設值 | 示例 |
|---|---|---|---|
DEFAULT_QUOTA | 新使用者預設配額 | 0 | DEFAULT_QUOTA=10 |
GLOBAL_USER_QUOTA | 全域性使用者配額限制 | - | GLOBAL_USER_QUOTA=100 |
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 | 全域性API速率限制(單IP三分鐘) | 180 | GLOBAL_API_RATE_LIMIT=100 |
GLOBAL_WEB_RATE_LIMIT | 全域性Web速率限制(單IP三分鐘) | 60 | GLOBAL_WEB_RATE_LIMIT=30 |
RELAY_TIMEOUT | 中繼請求超時時間(秒) | - | RELAY_TIMEOUT=60 |
USER_CONTENT_REQUEST_TIMEOUT | 使用者內容下載超時時間(秒) | - | USER_CONTENT_REQUEST_TIMEOUT=30 |
STREAMING_TIMEOUT | 流式一次回覆的超時時間(秒) | 60 | STREAMING_TIMEOUT=120 |
MAX_FILE_DOWNLOAD_MB | 最大檔案下載大小(MB) | 20 | MAX_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 | 批次更新渠道時請求間隔(秒) | 0 | POLLING_INTERVAL=5 |
ENABLE_METRIC | 是否根據請求成功率禁用渠道 | false | ENABLE_METRIC=true |
METRIC_QUEUE_SIZE | 請求成功率統計佇列大小 | 10 | METRIC_QUEUE_SIZE=20 |
METRIC_SUCCESS_RATE_THRESHOLD | 請求成功率閾值 | 0.8 | METRIC_SUCCESS_RATE_THRESHOLD=0.7 |
TEST_PROMPT | 測試模型時的使用者prompt | Print 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引數 | true | FORCE_STREAM_OPTION=false |
GET_MEDIA_TOKEN | 是否統計圖片token | true | GET_MEDIA_TOKEN=false |
GET_MEDIA_TOKEN_NOT_STREAM | 非流模式下是否統計圖片token | true | GET_MEDIA_TOKEN_NOT_STREAM=false |
UPDATE_TASK | 是否更新非同步任務(MJ、Suno) | true | UPDATE_TASK=false |
ENFORCE_INCLUDE_USAGE | 強制stream模式下返回usage | false | ENFORCE_INCLUDE_USAGE=true |
TIKTOKEN_CACHE_DIR | Tiktoken編碼器快取目錄,用於存放分詞檔案避免網路下載 | - | TIKTOKEN_CACHE_DIR=/cache/tiktoken |
DATA_GYM_CACHE_DIR | DataGym快取目錄 | - | DATA_GYM_CACHE_DIR=/cache/data_gym |
Tiktoken檔案配置
下載tiktoken檔案後,請按照以下方式重新命名:
cl100k_base.tiktoken重新命名為9b5ad71b2ce5302211f9c61530b329a4922fc6a4o200k_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_VERSION | Azure渠道預設API版本 | 2024-12-01-preview | AZURE_DEFAULT_API_VERSION=2023-05-15 |
COHERE_SAFETY_SETTING | Cohere模型安全設定 | NONE | COHERE_SAFETY_SETTING=CONTEXTUAL |
GEMINI_VISION_MAX_IMAGE_NUM | Gemini模型最大圖片數量 | 16 | GEMINI_VISION_MAX_IMAGE_NUM=8 |
GEMINI_VERSION | Gemini版本 | v1 | GEMINI_VERSION=v1beta |
DIFY_DEBUG | Dify渠道輸出工作流和節點資訊 | true | DIFY_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 | 是否記錄並在前端顯示錯誤日誌 | false | ERROR_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配置說明文件。