# 環境変数設定ガイド
このドキュメントでは、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` に設定することはできません。設定するとプログラムは起動を拒否します。マルチマシンデプロイの場合、すべてのノードで同じキーを使用する必要があります。
これらの環境変数を使用して完全なクラスターデプロイを構築する方法については、[クラスターデプロイガイド](/ja/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` | ローカルトークンカウントを有効にするか | `true` | `CountToken=false` |
| `GET_MEDIA_TOKEN` | ストリーミングモードで画像/音声トークンをカウントするか | `true` | `GET_MEDIA_TOKEN=false` |
| `GET_MEDIA_TOKEN_NOT_STREAM` | 非ストリーミングモードで画像/音声トークンをカウントするか | `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
```
これは基本的なマルチノード設定の例にすぎません。完全なクラスターデプロイ設定、アーキテクチャの説明、およびベストプラクティスについては、[クラスターデプロイガイド](/ja/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設定説明](/ja/docs/installation/config-maintenance/docker-compose-yml)ドキュメントを参照してください。