# 環境変数設定ガイド このドキュメントでは、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)ドキュメントを参照してください。