環境変数 / 設定一覧
DigitalBase の挙動は .env ファイルの環境変数で設定します。多くの項目は管理画面の 環境変数 タブからも編集できます(「本体を再起動」で反映)。管理画面の一覧と本ページの前半にはよく使う項目、後半の「詳細チューニング」には既定のままで問題ない項目を、管理画面と同じカテゴリ順で載せています。
対象:管理者必要権限:サーバ管理権限
注意
[機密] が付いた項目(API キー・パスワード・JWT secret など)は秘匿情報です。リポジトリやログに残さず、本番では既定値を必ず変更してください。
補足
既定値が ""(空文字)の項目は 未設定が既定で、空のままでも動作します。空のときに実際にどう振る舞うか(フォールバック先の既定)は、各行の「説明」内の「= 空なら…」を参照してください。<インストール先> は通常 ~/.local/db(Docker は /app/data)です。
設定項目は全 425 件(よく使う項目 112 / 詳細チューニング 313)。既定値はこのページを生成した版のものです。
システム (データベース)
| 変数 | 既定値 | 説明 |
|---|---|---|
DATABASE_URL | postgresql://digitalbase:digitalbase@localhost:5432/digitalbase | [機密] PostgreSQL 接続文字列 (= 通常 install スクリプトが自動設定) |
MSSQL_ODBC_DRIVER | ODBC Driver 18 for SQL Server | SQL Server 接続に使う ODBC ドライバ名。サーバー機に Microsoft ODBC Driver 18 for SQL Server の導入が必要 (Ubuntu: Microsoft の apt リポジトリから msodbcsql18、macOS: brew、Windows: winget)。PostgreSQL / MySQL / MariaDB / Oracle は追加導入不要 |
システム (サーバー)
| 変数 | 既定値 | 説明 |
|---|---|---|
API_PORT | 8000 | この製品 (Web 画面と API) が待ち受けるポート番号。ブラウザからは http://<サーバー名>:<この番号>/ で開く |
API_HOST | 0.0.0.0 | 待ち受けるネットワークアドレス。0.0.0.0 = どのネットワークからも接続可 (通常はこれ) / 127.0.0.1 = このサーバー内からのみ (リバースプロキシ配下向け) |
JWT_SECRET | "" | [機密] ログインセッションの署名鍵。空なら .env と同じ場所の .env.jwt_secret に自動生成して保持する。本番は長いランダム文字列を固定で設定 |
システム (ファイル / 外部ディレクトリ)
| 変数 | 既定値 | 説明 |
|---|---|---|
FILES_DIR | <インストール先>/files | user file 保存先 (= myfile/shared dir 配置 root) |
EXTERNAL_DATA_DIRS | "" | 外部 dir アクセス許可 ("label=/path,..." 形式、デフォルト read+write)。末尾 ":ro" で読み取り専用 mount。 |
システム (文書変換)
| 変数 | 既定値 | 説明 |
|---|---|---|
SOFFICE_PATH | "" | soffice 実行ファイルのパス (空=PATH と ~/.local/db/tools から自動検出) |
システム (ライセンス)
| 変数 | 既定値 | 説明 |
|---|---|---|
LICENSE_FILE_PATH | <インストール先>/license.lic | ライセンスファイル path (= 通常 OS 別に自動検出) |
LLM (共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
LLM_BACKEND | ollama | LLM 推論 backend (= ollama | vllm | sglang | none) |
LLM_CONTEXT_LENGTH | "" | LLM context window 上限 (= 両 backend 共通、空ならモデル default) |
LLM_CHAT_BASE_URL | "" | OpenAI 互換エンドポイントの chat 接続先 (= 設定すると LLM_BACKEND の振分より優先) |
LLM_EMBED_BASE_URL | "" | OpenAI 互換エンドポイントの embedding 接続先 (= 要 LLM_EMBED_MODEL) |
LLM_VISION_BASE_URL | "" | OpenAI 互換エンドポイントの vision 接続先 (= 空なら chat 接続先を兼用) |
LLM_OPENAI_API_KEY | "" | [機密] 上記 OpenAI 互換エンドポイント共通の API key (= 認証なしなら空) |
LLM_EMBED_MODEL | "" | embedding モデル名の上書き (= OpenAI 互換エンドポイント接続時は必須) |
DEFAULT_MAX_OUTPUT_TOKENS | 8192 | max_tokens 未指定時の出力上限の既定 (local / cloud / UI のモデル設定の初期値まで共通。明示指定はこの値に縛られない。cloud は CLOUD_MAX_TOKENS_CAP で頭打ち) |
MAX_OUTPUT_TOKENS | 65536 | チャットの出力 max_tokens の上限 (= UI スライダ最大値、両 backend 共通) |
LLM_REQUEST_TIMEOUT | 900 | AI op の LLM 1リクエストの timeout 秒 (大きめ推奨。ai_agent は長時間動く前提) |
LLM (vLLM)
| 変数 | 既定値 | 説明 |
|---|---|---|
VLLM_BASE_URL | http://localhost:8080 | vLLM chat server の base URL |
VLLM_EMBED_BASE_URL | http://localhost:8081 | vLLM embedding server の base URL (= 別 server) |
VLLM_VISION_BASE_URL | "" | vLLM vision server URL (= 空なら chat server 兼用) |
VLLM_CHAT_MODEL | Qwen/Qwen3-1.7B | vLLM chat model 名 (= HuggingFace ID、default は起動確認用の 1.7B / 32K context / ~4GB VRAM) |
VLLM_EMBED_MODEL | intfloat/multilingual-e5-large-instruct | vLLM RAG 用 embedding model 名 |
VLLM_VISION_MODEL | "" | vLLM vision model 名 (= 空なら無効) |
VLLM_AUTO_START | false | true で起動時に vLLM server も auto-spawn |
VLLM_TENSOR_PARALLEL | 0 | vLLM tensor parallel size (= 0 で GPU 数から自動: GPU 数以下の最大 2 の冪、上限 ENGINE_TENSOR_PARALLEL_MAX。明示値が優先)。chat / embed / vision 全サーバ共通で、各サーバは gpu_memory_utilization を全 GPU に均等に取る。役割別に変える時は VLLM_EXTRA_ARGS_* に --tensor-parallel-size |
VLLM_GPU_MEMORY_UTILIZATION_CHAT | "" | chat server の GPU memory 利用率 (= 0.0-1.0) |
VLLM_GPU_MEMORY_UTILIZATION_EMBED | "" | embed server の GPU memory 利用率 (全 GPU に均等。0.6B 級の embedding は 0.10 前後で足りる) |
VLLM_GPU_MEMORY_UTILIZATION_VISION | "" | vision server の GPU memory 利用率 |
VLLM_REASONING_PARSER | qwen3 | reasoning parser 指定 (= 既定は default model の Qwen3 用。他 model に変える時は要変更、空で注入なし) |
VLLM_TOOL_CALL_PARSER | hermes | tool call parser 指定 (= 既定は default model の Qwen3 用。他 model に変える時は要変更 (model card の値を admin の「vLLM設定」から取込むのが確実)、空で注入なし)。--enable-auto-tool-choice と、template 必須 parser (deepseek_v3 等) の同梱 chat template も併せて自動付与 |
VLLM_QUANTIZATION | "" | chat model の量子化方式 (= --quantization。例: modelopt, awq, fp8。空なら vLLM が checkpoint から自動判別) |
VLLM_KV_CACHE_DTYPE | "" | chat server の KV cache 量子化 (= --kv-cache-dtype。例: fp8。空なら model 既定。vision/embed は EXTRA_ARGS で指定) |
VLLM_SPECULATIVE_CONFIG | "" | chat server の speculative decoding 設定 (= --speculative-config に渡す JSON をクォート無しでそのまま。例: {"method":"mtp","num_speculative_tokens":3}。空なら無効) |
VLLM_EXTRA_ARGS_CHAT | "" | chat server 起動の追加引数 (スペース区切り)。tool calling は VLLM_TOOL_CALL_PARSER で既定注入済 (ここに --tool-call-parser を書けばそちらが優先) |
VLLM_PYTHON | <インストール先>/venv/bin/python | vLLM サーバを起動する Python 実行パス (= 既定は venv を自動検出。合わない場合のみ設定) |
HF_HUB_OFFLINE | "" | 1 で HuggingFace download 禁止 (= air-gapped / オフライン稼働、model 事前 download 必須) |
HF_HOME | "" | HuggingFace cache dir 上書き (= 空なら ~/.cache/huggingface) |
LLM (SGLang)
| 変数 | 既定値 | 説明 |
|---|---|---|
SGLANG_BASE_URL | http://localhost:30000 | SGLang chat server の base URL |
SGLANG_EMBED_BASE_URL | http://localhost:30001 | SGLang embedding server の base URL (= 別 server) |
SGLANG_VISION_BASE_URL | "" | SGLang vision server URL (= 空なら chat server 兼用) |
SGLANG_CHAT_MODEL | Qwen/Qwen3-1.7B | SGLang chat model 名 (= HuggingFace ID、default は起動確認用の 1.7B / 32K context / ~4GB VRAM) |
SGLANG_EMBED_MODEL | Qwen/Qwen3-Embedding-0.6B | SGLang RAG 用 embedding model 名 (= --is-embedding で起動。SGLang の embedding 対応 model は vLLM より狭いので非対応 model を指定しないこと。空にすると embed server を起動しない = RAG は LLM_EMBED_BASE_URL で外部に向ける) |
SGLANG_VISION_MODEL | "" | SGLang vision model 名 (= 空なら無効) |
SGLANG_AUTO_START | false | true で起動時に SGLang server も auto-spawn |
SGLANG_TENSOR_PARALLEL | 0 | SGLang tensor parallel size (= --tp-size。0 で GPU 数から自動 (GPU 数以下の最大 2 の冪、上限 ENGINE_TENSOR_PARALLEL_MAX)。chat/vision 用、embed は常に 1 = 同居 GPU で unbalanced 拒否を避ける) |
SGLANG_DATA_PARALLEL | 1 | SGLang data parallel size (= --dp-size、小型 model を GPU 数だけ複製して同時実行数を稼ぐ。1 で無効) |
SGLANG_MEM_FRACTION_CHAT | "" | chat server の GPU memory 利用率 (= --mem-fraction-static、0.0-1.0) |
SGLANG_MEM_FRACTION_EMBED | "" | embed server の GPU memory 利用率 (= vLLM と意味論が違い空きメモリ基準。chat 同居時に小さすぎると KV 確保不可で起動失敗、実測では 0.45 以上が必要。例 0.50) |
SGLANG_MEM_FRACTION_VISION | "" | vision server の GPU memory 利用率 |
SGLANG_REASONING_PARSER | qwen3 | reasoning parser 指定 (= 既定は default model の Qwen3 用。他 model に変える時は要変更、空で注入なし) |
SGLANG_TOOL_CALL_PARSER | qwen | tool call parser 指定 (= SGLang の parser 名。Qwen 系は qwen (Coder 系のみ qwen3_coder)、他は llama3 / mistral / deepseekv31 / pythonic 等。空で注入なし) |
SGLANG_QUANTIZATION | "" | chat model の量子化方式 (= --quantization。例: fp8, awq, modelopt。空なら checkpoint から自動判別) |
SGLANG_KV_CACHE_DTYPE | "" | chat server の KV cache 量子化 (= --kv-cache-dtype。例: fp8_e5m2。空なら model 既定) |
SGLANG_TORCH_COMPILE | false | true で --enable-torch-compile (= 小型 model の decode 速度が伸びる代わりに初回起動が数分伸びる) |
SGLANG_EXTRA_ARGS_CHAT | "" | chat server 起動の追加引数 (スペース区切り)。speculative decoding (--speculative-algorithm 等) もここに書く |
SGLANG_PYTHON | <インストール先>/venv/bin/python | SGLang サーバを起動する Python 実行パス (= 既定は install dir の共有 venv を自動検出。合わない場合のみ設定) |
LLM (Ollama)
| 変数 | 既定値 | 説明 |
|---|---|---|
OLLAMA_BASE_URL | http://localhost:11434 | Ollama サーバの base URL |
OLLAMA_API_KEY | "" | [機密] proxy 経由認証時のみ設定 (= 通常空) |
OLLAMA_EMBED_MODEL | embeddinggemma | RAG 用 embedding model 名 (= Ollama tag) |
OLLAMA_AUTO_START | false | true で起動時に Ollama daemon を host で auto-spawn (= LLM_BACKEND=ollama 時のみ) |
LLM (Cloud)
| 変数 | 既定値 | 説明 |
|---|---|---|
OPENAI_API_KEY | "" | [機密] OpenAI API key (= 設定すると GPT モデルが選択肢に追加) |
OPENAI_BASE_URL | https://api.openai.com/v1 | OpenAI API base URL (= proxy 経由なら変更) |
ANTHROPIC_API_KEY | "" | [機密] Anthropic API key (= Claude モデル有効化) |
GEMINI_API_KEY | "" | [機密] Google Gemini API key |
XAI_API_KEY | "" | [機密] xAI API key (= Grok モデル有効化) |
RAG 設定
| 変数 | 既定値 | 説明 |
|---|---|---|
RERANK_ENABLED | false | RAG reranker を有効化 (= 要 VLLM_RERANK_BASE_URL) |
RERANK_TOP_N | 30 | rerank 前に集める候補数 (= 2段検索の1段目) |
VLLM_RERANK_BASE_URL | "" | vLLM reranker server の base URL (= 空なら rerank 無効) |
VLLM_RERANK_MODEL | BAAI/bge-reranker-v2-m3 | reranker モデル (cross-encoder, 多言語) |
VLLM_RERANK_API_KEY | "" | [機密] reranker server 用 API key (= 通常空) |
RERANK_TIMEOUT | 30 | reranker 呼出の timeout 秒 |
認証 (セッション)
| 変数 | 既定値 | 説明 |
|---|---|---|
AUTH_MODE | local | ログイン方式: local = この製品のユーザー管理 / ldap = Active Directory・LDAP / oidc = Microsoft Entra ID (SSO) |
認証 (LDAP / AD 連携)
| 変数 | 既定値 | 説明 |
|---|---|---|
LDAP_HOST | "" | Active Directory / LDAP サーバーのホスト名または IP |
LDAP_PORT | 389 | LDAP のポート番号 (通常 389、LDAPS なら 636) |
LDAP_USE_SSL | false | true で暗号化接続 (LDAPS / StartTLS) を使う |
LDAP_BASE_DN | "" | ユーザーを検索する起点 (Base DN、例: DC=company,DC=local) |
LDAP_USER_DN_FORMAT | {username}@company.local | ログイン時にユーザーを特定する DN の形式。{username} が入力されたユーザー名に置き換わる (例: cn={username},ou=Users,dc=company,dc=local) |
LDAP_BIND_DN | "" | ユーザー検索に使う接続用アカウントの DN (読み取り権限があれば可) |
LDAP_BIND_PASSWORD | "" | [機密] 上記の接続用アカウントのパスワード |
認証 (OIDC)
| 変数 | 既定値 | 説明 |
|---|---|---|
OIDC_CLIENT_ID | "" | Microsoft Entra ID に登録したアプリのクライアント ID |
OIDC_CLIENT_SECRET | "" | [機密] 同アプリのクライアントシークレット |
OIDC_TENANT_ID | "" | Microsoft Entra ID のテナント ID |
OIDC_ISSUER | "" | ID プロバイダの発行者 URL (空ならテナント ID から自動設定) |
OIDC_REDIRECT_URI | http://localhost:8000/auth/oidc/callback | ログイン後に Entra ID から戻ってくる URL。アプリ登録側にも同じ値を登録する (例: https://<サーバー名>/auth/oidc/callback) |
Web 検索
| 変数 | 既定値 | 説明 |
|---|---|---|
WEB_SEARCH_ENABLED | false | true で chat の Web 検索 tool 有効化 |
WEB_SEARCH_ENGINE | duckduckgo | duckduckgo | searxng |
WEB_SEARCH_SEARXNG_URL | http://localhost:8888 | SearXNG instance URL (= WEB_SEARCH_ENGINE=searxng 時) |
WEB_SEARCH_MAX_RESULTS | 5 | 1 検索あたりの最大結果数 |
OAuth
| 変数 | 既定値 | 説明 |
|---|---|---|
OAUTH_CALLBACK_BASE_URL | "" | OAuth callback の base URL (= 公開 URL に合わせる、空ならリクエスト URL から導出) |
GOOGLE_OAUTH_CLIENT_ID | "" | Google OAuth client ID (= Google Drive 連携用、 Google Cloud Console で発行) |
GOOGLE_OAUTH_CLIENT_SECRET | "" | [機密] Google OAuth client secret (= Google Drive 連携用) |
MS_OAUTH_CLIENT_ID | "" | Microsoft OAuth client ID (= OneDrive / SharePoint 連携用、 Azure AD で発行) |
MS_OAUTH_CLIENT_SECRET | "" | [機密] Microsoft OAuth client secret (= OneDrive / SharePoint 連携用) |
DROPBOX_OAUTH_CLIENT_ID | "" | Dropbox OAuth app key (= Dropbox 連携用、 Dropbox App Console で発行) |
DROPBOX_OAUTH_CLIENT_SECRET | "" | [機密] Dropbox OAuth app secret (= Dropbox 連携用) |
BOX_OAUTH_CLIENT_ID | "" | Box OAuth client ID (= Box 連携用、 Box Developer Console で発行) |
BOX_OAUTH_CLIENT_SECRET | "" | [機密] Box OAuth client secret (= Box 連携用) |
AZURE_AD_TENANT | common | Microsoft OAuth (OneDrive / SharePoint) のテナント。common = 個人 + 法人の両方、organizations = 法人のみ、テナント ID / ドメイン = その組織だけ |
音声 / Whisper
| 変数 | 既定値 | 説明 |
|---|---|---|
WHISPER_LANGUAGE | "" | 文字起こしの既定言語 (ja / en 等の ISO-639-1。空 = 自動判定。短い発話は明示指定が確実) |
WHISPER_INITIAL_PROMPT | "" | 認識を誘導する語彙・文脈 (例: 前進、後退、停止、右、左)。API 呼び出しの prompt で上書き可 |
音声 (STT / TTS)
| 変数 | 既定値 | 説明 |
|---|---|---|
STT_ENGINE | whisper | 文字起こしエンジン: whisper (この環境のローカル whisper) | openai (OpenAI 互換の外部 API。音声がその API に送られる) |
STT_OPENAI_BASE_URL | "" | STT_ENGINE=openai の接続先 (/v1 まで。例: https://api.openai.com/v1、社内の speaches / vLLM) |
STT_OPENAI_API_KEY | "" | [機密] STT_ENGINE=openai の API キー (不要な接続先は空) |
STT_OPENAI_MODEL | whisper-1 | STT_ENGINE=openai で指定するモデル名 |
TTS_ENGINE | browser | 読み上げエンジン: browser (利用者のブラウザ内蔵音声) | openai (OpenAI 互換 /audio/speech。Kokoro 等) | voicevox (VOICEVOX ENGINE) |
TTS_BASE_URL | "" | TTS_ENGINE=openai / voicevox の接続先 (openai は /v1 まで。例: http://127.0.0.1:8880/v1、voicevox は http://127.0.0.1:50021) |
TTS_API_KEY | "" | [機密] TTS_ENGINE=openai の API キー (ローカルの Kokoro 等は空) |
TTS_MODEL | "" | TTS_ENGINE=openai で指定するモデル名 (例: tts-1、kokoro) |
TTS_VOICE | "" | 既定の声 (openai は voice 名、voicevox は style ID)。利用者は設定画面で変更できる |
リソース上限
| 変数 | 既定値 | 説明 |
|---|---|---|
EXECUTE_PYTHON_TIMEOUT | 300 | チャットの Python 実行ツール 1 回あたりの制限時間 (秒) |
詳細チューニング
既定のままで問題ない詳細設定です。管理画面には既定で表示されませんが、必要時に .env に書けば上書きできます。
システム (データベース)
| 変数 | 既定値 | 説明 |
|---|---|---|
SQL_DATALAKE_URL | postgresql://lmlight:lmlight@localhost:5432/lmlight | [機密] 内蔵 Data Lake 接続用の DB URL (= 既定は DATABASE_URL、最小権限ロール推奨) |
システム (サーバー)
| 変数 | 既定値 | 説明 |
|---|---|---|
MAX_TOOL_ROUNDS | 30 | Tool calling の最大 round 数 (= chat/streams.py、LLM 再帰呼出の上限) |
DB_POOL_SIZE | 10 | メイン DB engine の connection pool サイズ |
DB_POOL_MAX_OVERFLOW | 20 | メイン DB engine の pool 超過許容数 |
DB_POOL_RECYCLE | 1800 | メイン DB engine の connection 再生成間隔秒 (= stale 接続対策) |
CONV_MEMORY_MAX_SESSIONS | 500 | in-memory 会話キャッシュの最大セッション数 (= 超過時は古い順に破棄) |
SQL_ENGINE_CACHE_MAX | 20 | 外部 SQL 接続 engine キャッシュの上限数 (= 超過時は古い engine を dispose) |
UPDATE_CHECK_TIMEOUT | 10 | アップデート確認 (R2 latest.json 取得) の HTTP timeout 秒 |
MCP_DISCOVERY_TIMEOUT | 10 | MCP server の tool 一覧取得 timeout 秒 |
MCP_TOOL_TIMEOUT | 30 | MCP tool 実行の timeout 秒 |
GATEWAY_IMAGE_FETCH_TIMEOUT | 10 | gateway chat の外部画像 URL 取得 timeout 秒 |
GATEWAY_IMAGE_MAX_MB | 20 | gateway chat の外部画像 URL 取得の最大サイズ (MB)。超過は画像を捨てて続行 |
INTERNAL_API_BASE | "" | 本体が自分自身の API を呼ぶ時の接続先 (空 = http://localhost:API_PORT)。リバースプロキシ / コンテナで localhost が本体を指さない時だけ設定 |
OUTBOUND_ALLOW_LOOPBACK | true | server が取りに行くユーザ指定 URL (通知 webhook / 画像 URL) に loopback 宛を許すか (既定 true = 同一ホストの受け側を許す。link-local は常に拒否) |
SQL_SQLITE_DIR | "" | SQL 接続で SQLite ファイルを開ける親ディレクトリ (空 = SQLite 接続を無効化) |
TOOL_APPROVAL_WAIT_SEC | 600 | tool 実行承認の最大待ち秒 (= 超過は deny 扱い) |
TOOL_KEEPALIVE_INTERVAL | 10 | chat stream の keepalive 間隔秒 (= 承認待ち/LLM 無音/tool 実行中の heartbeat) |
TOOL_LOOP_GUARD_MAX_REPEATS | 4 | 同一 tool call の反復をこの回数で打ち切る loop guard |
TOOL_RETRY_ATTEMPTS | 3 | call_api_operator の rate-limit retry 回数 (指数バックオフ) |
CLOUD_OP_MAX_ATTEMPTS | 3 | cloud 系 pipeline operator の HTTP retry 回数 |
UPLOAD_PROGRESS_TTL_SEC | 3600 | RAG 取込進捗エントリの保持秒数 (= ポーリング用 in-memory レジストリの TTL) |
TOOL_PIPELINE_RUN_WAIT | 30 | run_pipeline tool が完了を待つ最大秒数 (= 超えたら runId を返して get_pipeline_run でポーリング) |
GATEWAY_REQUEST_TIMEOUT | "" | gateway (OpenAI 互換 API) 1 リクエストの timeout 秒。空 (既定) = LLM_REQUEST_TIMEOUT と同じ (= API 経由だけ先に切れない) |
GATEWAY_HISTORY_LIMIT | 10 | gateway chat の会話履歴保持ターン数 |
GATEWAY_IMAGE_FETCH_ALLOW_PRIVATE | 1 | gateway chat の外部画像 URL 取得で private (社内) アドレスを許可する。1=許可 (既定、社内 API 基盤なので) / 0=グローバルのみ。link-local (cloud metadata) は常に拒否、loopback は OUTBOUND_ALLOW_LOOPBACK に従う |
GATEWAY_MODEL_LIST_TTL_SEC | 30 | gateway が model 名の実在確認に使う served model 一覧のキャッシュ秒数 (= 毎リクエストの discovery を避ける) |
FORWARDED_ALLOW_IPS | 127.0.0.1 | X-Forwarded-* ヘッダを信頼するプロキシの IP (',' 区切り、'*' で全て)。リバースプロキシ配下ではそのプロキシの IP を指定する |
GATEWAY_DOCS_ENABLED | true | gateway の API リファレンス (/v1/docs, /v1/openapi.json) を公開するか (= 認証不要。仕様を外に見せたくない場合 false) |
MODEL_PRICES | "" | モデル別単価 (1K トークンあたり)。'モデル名:入力単価:出力単価' を ',' 区切り。'default:x:y' は未定義モデルの既定。空 = 金額表示なし |
CURRENCY_SYMBOL | ¥ | 金額表示に使う通貨記号 |
ALERT_WEBHOOK_URL | "" | 運用アラート送信先 webhook URL ({text, type, details} JSON を POST。空 = 無効。変更は再起動で反映) |
ALERT_CHECK_INTERVAL_SEC | 900 | アラート条件の評価間隔 (秒) |
ALERT_PIPELINE_CONSECUTIVE_FAILURES | 3 | 同一 pipeline の連続失敗がこの回数に達したらアラート (連続失敗 1 回につき 1 通、成功でリセット) |
ALERT_PIPELINE_QUEUE_AGE_SEC | 900 | queued のまま待つ pipeline run がこの秒数を超えたらアラート (= worker 停止/詰まりの検知) |
ALERT_EVENT_OUTBOX_AGE_SEC | 600 | 未配送の EventOutbox 行がこの秒数を超えて残ったらアラート (= consumer 停止の検知) |
METRICS_ENABLED | 0 | Prometheus 形式の /metrics endpoint を公開する。1=有効 / 0=無効 |
METRICS_TOKEN | "" | /metrics の Bearer token (空 = 認証なし。scrape 側の Authorization ヘッダと一致必須) |
BIKEY_PG_PROXY_ENABLED | 0 | BI tool 直結用 PostgreSQL wire proxy を起動する (bk- で認証)。1=有効 / 0=無効 |
BIKEY_PG_PROXY_PORT | 5434 | BiKey PG proxy の待受ポート |
BIKEY_PG_PROXY_HOST | 0.0.0.0 | BiKey PG proxy の待受アドレス (',' 区切りで複数可) |
CORS_ALLOW_ORIGINS | * | CORS で許可する origin (',' 区切り)。既定 * = 全許可 (互換)。公開 URL が決まっていれば https://<サーバー名> に絞る |
SECURITY_HSTS | 0 | Strict-Transport-Security ヘッダを常に付ける (https 直受けの場合は自動、リバースプロキシで TLS 終端するなら 1) |
ADMIN_ENV_MASK_SECRETS | 0 | 管理画面の環境変数エディタで機微な値 (パスワード / キー) を *** で伏せる。0=そのまま表示 (既定。編集する本人が見る画面のため) / 1=伏せる (*** のまま保存しても値は保持される) |
SECURITY_FRAME_OPTIONS | "" | X-Frame-Options ヘッダの値 (DENY / SAMEORIGIN)。既定は空 = 付けない (= 社内ポータル等の iframe 埋め込みを壊さない) |
REQUEST_MAX_BODY_MB | 64 | 通常 API のリクエスト body 上限 (MB)。超過は 413。ファイルアップロード系 path は対象外 |
REQUEST_BODY_LIMIT_EXEMPT_PREFIXES | /api/files,/api/rag,/api/upload,/api/chat,/api/transcribe,/api/admin/restore,/api/admin/license,/v1/files | body 上限を適用しない path prefix (',' 区切り、= アップロードや添付を運ぶ経路) |
ADMIN_BACKUP_TIMEOUT | 1800 | DB backup (pg_dump) の timeout 秒 (= 大規模 DB は引き上げ) |
ADMIN_RESTORE_TIMEOUT | 900 | DB restore (pg_restore) の timeout 秒 |
TRANSCRIBE_FFMPEG_TIMEOUT | 600 | 音声変換 (ffmpeg) の timeout 秒 (= 長時間録音は引き上げ) |
UPDATE_LOG_TAIL_LINES | 80 | update/status が返す update.log 末尾の行数 |
UPDATE_STATUS_PROBE_TIMEOUT | 5 | update/status が自分の /api/ready (無ければ /api/health) を叩いて migration 失敗を拾う timeout 秒 |
DB_CONNECT_RETRIES | 30 | 起動時に DB 接続を試す回数 (= 間隔は DB_CONNECT_RETRY_DELAY_SEC。全部失敗したら process を終了する) |
DB_CONNECT_RETRY_DELAY_SEC | 2 | 起動時 DB 接続 retry の間隔秒 |
FRAME_ANCESTORS | 'self' https://teams.microsoft.com https://*.teams.microsoft.com https://*.cloud.microsoft https://*.office.com https://*.microsoft365.com | 画面の iframe 埋め込みを許す親 origin (CSP frame-ancestors、空白区切り)。既定は同一 origin + Microsoft Teams。空 = 制限しない、'none' = 埋め込み禁止 |
MCP_MANAGED_DIR | <インストール先>/mcp | カスタム MCP server の配置先 (server ごとに venv / main.py / logs を持つ) |
MCP_PYTHON_VERSION | 3.13 | カスタム MCP server の venv に使う Python (uv が取得。本体・推論 venv と同じ 3.13 に揃える = GPU 機では追加ダウンロードなし。依存パッケージに 3.13 の wheel が無い時だけ 3.12 等に下げる) |
MCP_INSTALL_TIMEOUT | 600 | カスタム MCP server の venv 構築 (uv pip install) の timeout 秒 |
MCP_STARTUP_TIMEOUT | 60 | カスタム MCP server の起動 (tools/list 応答) 待ち timeout 秒 |
MCP_HEALTH_TIMEOUT | 3 | カスタム MCP server の health (tools/list) 応答待ち秒 |
MCP_STOP_GRACE | 5 | カスタム MCP server 停止時に SIGTERM 後 SIGKILL するまでの猶予秒 |
MCP_MONITOR_INTERVAL | 5 | カスタム MCP server のプロセス監視 (異常終了検知・再起動) の間隔秒 |
MCP_RESTART_LIMIT | 3 | カスタム MCP server が異常終了した時の自動再起動の上限回数 (10 分あたり、超えるとエラー状態で停止) |
MCP_MEMORY_LIMIT_MB | 0 | カスタム MCP server 1 プロセスの仮想メモリ上限 MB (0 = 無制限。Linux / macOS のみ。torch 等の大きな依存は仮想空間を多く取るので余裕を持たせる) |
MCP_LOG_MAX_BYTES | 5242880 | カスタム MCP server の server.log の上限バイト (起動時に末尾だけ残して切り詰める。0 = 無制限) |
MCP_PORT_BASE | 8800 | カスタム MCP server に自動採番する localhost port の開始値 |
システム (ファイル / 外部ディレクトリ)
| 変数 | 既定値 | 説明 |
|---|---|---|
FS_WATCH_ENABLED | 1 | 外部 dir (EXTERNAL_DATA_DIRS) の変更を監視し file.uploaded/file.deleted を発火する。1=有効 / 0=無効 |
FS_WATCH_SETTLE_SECONDS | 2 | 外部 dir 監視: size/mtime がこの秒数変化しなければ書込完了とみなす |
FS_WATCH_POLLING | 0 | 外部 dir 監視を polling 方式にする (NFS/SMB mount など OS 通知が届かない場所向け)。1=polling / 0=OS 通知 |
FS_WATCH_CATCHUP | 1 | 外部 dir 監視: 起動時に停止中に置かれた/更新されたファイルを走査して file.uploaded を発火する。1=有効 / 0=無効 |
FS_WATCH_CATCHUP_MAX_FILES | 20000 | 外部 dir 監視: 起動時の追いつき走査で発火する件数の上限 (超過分は warning のみ) |
FS_WATCH_POLL_INTERVAL | 5 | 外部 dir 監視 (polling 方式) の走査間隔 (秒) |
FILE_STREAM_CHUNK_BYTES | 65536 | file connector streaming 読込の chunk バイト数 |
CONNECTOR_PAGE_SIZE_GDRIVE | 1000 | Google Drive 一覧取得の page size |
CONNECTOR_PAGE_SIZE_ONEDRIVE | 200 | OneDrive 一覧取得の page size |
CONNECTOR_PAGE_SIZE_SHAREPOINT | 200 | SharePoint 一覧取得の page size |
CONNECTOR_PAGE_SIZE_BOX | 1000 | Box 一覧取得の page size |
CONNECTOR_LIST_MAX_ITEMS | 0 | OAuth 接続 (Drive/OneDrive/SharePoint/Box/Dropbox) の 1 フォルダ取得件数上限。0 で無制限 (= 継続ページを全て取得) |
CONNECTOR_NET_TIMEOUT | 10 | 接続フォルダ (SFTP/FTP/SMB/WebDAV) の接続・操作 timeout 秒 (= 到達不能ホストでの画面待ち時間。5〜60 に丸められます) |
システム (文書変換)
| 変数 | 既定値 | 説明 |
|---|---|---|
SOFFICE_TIMEOUT | 180 | Office文書→PDF 変換1回のタイムアウト秒 |
システム (ライセンス)
| 変数 | 既定値 | 説明 |
|---|---|---|
PUBLIC_KEY_PATH | "" | ライセンス署名検証用 RSA 公開鍵 path。空 = 製品に埋め込まれた鍵を使う (通常設定不要) |
LICENSE_RECHECK_INTERVAL_SEC | 3600 | ライセンスの再評価間隔 (秒)。使われた時に前回の評価からこの秒数が過ぎていれば裏で再評価する (= 期限切れ・差し替えを再起動なしに反映。使われていない間は評価しない) |
LICENSE_WARN_DAYS | 0 | ライセンス期限のこの日数前から管理画面 / health に警告を出す (0=期限前の警告を出さない。猶予期間中の警告は別) |
LICENSE_GRACE_DAYS | 14 | ライセンス期限切れ後もリクエストを受け付ける猶予日数 (応答に X-DigitalBase-License-Warning ヘッダが付く)。超過で 403 |
LLM (共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
LLM_EMBED_API_KEY | "" | [機密] embedding エンドポイントだけ別 key の場合に設定 |
LLM_CHARS_PER_TOKEN | 1.2 | 文脈予算 (添付/RAG/web をどこまで prompt に入れるか) の文字→token 換算係数。日本語主体 1.2 (既定) / 英語主体 3.0 程度。小さいほど安全側 |
CHAT_HISTORY_LIMIT | 10 | chat で LLM に渡す直近履歴 (メッセージ数) の既定 (= ユーザー設定の初期値。request / 設定で上書き可) |
CLOUD_MAX_TOKENS_CAP | 64000 | Anthropic 呼出の max_tokens 上限 (= 現行 Claude の最大 64K) |
LLM_MIN_OUTPUT_TOKENS | 256 | context 超過エラー判定前に確保する最小出力 token 数 |
LLM_CONTEXT_MARGIN_TOKENS | 64 | max_tokens を context に収める際の安全 margin token 数 |
CLOUD_LLM_TIMEOUT | 300 | Cloud LLM (OpenAI/Anthropic/Gemini) の HTTP timeout 秒 (chat/tool 呼出共通) |
CLOUD_EMBED_TIMEOUT | 60 | Cloud embedding の HTTP timeout 秒 |
SQL_LLM_TIMEOUT | 600 | AI SQL 生成の LLM timeout 秒 (= EOS が出ずハングした時の cap) |
SQL_AI_SAMPLE_CELL_MAX_CHARS | 200 | AI SQL 生成 prompt のサンプル行セル1個の上限文字数 (= embedding 等の巨大セルで context 超過を防ぐ) |
CHAT_ATTACH_INJECT_MAX_CHARS | 0 | chat 添付テキストを全文 prompt 注入する上限文字数。0 (既定) = model の文脈予算 (LLM_CONTEXT_LENGTH または RAG_CONTEXT_BUDGET_CHARS) から自動。超過時は session RAG 検索参照に自動切替 (先頭は予算の半分まで注入) |
CHAT_CONNECT_TIMEOUT_SEC | 10 | chat → local LLM backend の TCP 接続 timeout 秒 (= tools 有無どちらの経路も同じ。read は無制限のまま。接続不能を即 error にする) |
CHAT_PROMPT_MAX_CHARS | 200000 | chat 1 リクエストの prompt 文字数上限 (= 超過は 413) |
CHAT_MAX_IMAGES | 16 | chat 1 リクエストの画像枚数上限 (= 直接添付の images が超過なら 413。PDF ページ画像は残り枠に切り詰めて warning) |
CHAT_ATTACHMENTS_MAX_MB | 50 | chat 1 リクエストの添付 (attachments + images) 合計 MB 上限 (= 超過は 413) |
TABLE_AI_PYTHON_TIMEOUT | 60 | テーブルAI編集の python 変換 (sandbox) の実行 timeout 秒 |
TABLE_AI_MAX_CELLS | 20000 | テーブルAI編集で全行を prompt に載せる上限セル数 (行×列)。超過時は schema+サンプルのみ |
TABLE_AI_SAMPLE_ROWS | 20 | テーブルAI編集で全行を載せない時のサンプル行数 |
TABLE_AI_MAX_CHARS | 0 | table / 文書の AI 編集で 1 回の prompt に入れる本文文字数の上限。0 (既定) = model の文脈予算から自動 (超過分は切詰め) |
ENGINE_LOG_DIR | <インストール先>/logs | local engine (vLLM/SGLang/Ollama) の起動 log 置場 (= 既定は install dir 配下 logs/。size rotation で .1〜.3 を保持) |
ENGINE_LOG_MAX_MB | 50 | engine log 1 file の上限 MB (= 超えたら copy+truncate で .1 へ回す、直近 3 世代保持) |
ENGINE_WATCHDOG_INTERVAL_SEC | 30 | engine 監督 (死活確認と自動再起動) の間隔秒 |
ENGINE_HEALTH_FAIL_THRESHOLD | 3 | 連続で health check に失敗したら engine を再起動する回数 (= process が生きていても応答しない hang 対策) |
ENGINE_RESTART_BACKOFF_MAX_SEC | 600 | 自動再起動の指数 backoff 上限秒 (= この秒数だけ健全に動けば backoff を初期値へ戻す) |
ENGINE_MIN_FREE_GB | 20 | HF cache volume の空き容量がこの GB を下回ると engine status に警告を出す (= model download 途中の disk full 予防) |
ENGINE_TENSOR_PARALLEL_MAX | 8 | tensor parallel 自動決定 (VLLM/SGLANG_TENSOR_PARALLEL=0) の上限 (= GPU 数以下の最大 2 の冪を採用) |
LLM (vLLM)
| 変数 | 既定値 | 説明 |
|---|---|---|
VLLM_CHAT_ENDPOINTS | "" | chat vLLM endpoint pool (= カンマ区切り URL、空なら VLLM_BASE_URL) |
VLLM_EMBED_ENDPOINTS | "" | embed vLLM endpoint pool (= カンマ区切り URL、空なら VLLM_EMBED_BASE_URL) |
VLLM_VISION_ENDPOINTS | "" | vision vLLM endpoint pool (= カンマ区切り URL、空なら VLLM_VISION_BASE_URL) |
DCGM_PORT | 9400 | DCGM exporter port (= host は endpoint から導出、best-effort で温度/電力 overlay) |
VLLM_API_KEY | "" | [機密] proxy 経由認証時のみ設定 (= 通常空) |
VLLM_EMBED_API_KEY | "" | [機密] embed server 用 API key |
VLLM_MAX_MODEL_LEN | "" | vLLM context window 上限 |
VLLM_EXTRA_ARGS_EMBED | "" | embed server 起動の追加引数 (スペース区切り) |
VLLM_EXTRA_ARGS_VISION | "" | vision server 起動の追加引数 (スペース区切り) |
VLLM_MODELS_TTL | 30 | served model 一覧の cache TTL 秒 (= この間は /v1/models を再 probe しない) |
VLLM_START_MAX_RETRIES | 3 | auto-start 時の vLLM 起動 retry 回数 |
VLLM_START_RETRY_DELAY | 10 | vLLM 起動 retry の待機秒 |
VLLM_STARTUP_TIMEOUT | 3600 | vLLM server の ready 待ち timeout 秒 (= 大型 model は load が長い) |
VLLM_SHUTDOWN_JOIN_TIMEOUT | 30 | 停止時に vLLM 起動 thread の終了を待つ上限秒 (= load 途中の停止でぶら下がらせない、最大 120) |
VLLM_EMBED_PROBE_RETRY_INTERVAL | 30 | embedding server 不在判定を再確認するまでの秒数 (= load 中の判定を引きずらない) |
TRANSFORMERS_OFFLINE | "" | 1 で transformers lib もオフライン化 (= HF_HUB_OFFLINE と併用推奨) |
VLLM_CACHE_ROOT | "" | vLLM の cache root (= 空なら HF_HOME の隣 <HF_HOME の親>/vllm、HF_HOME 未設定なら ~/.cache/vllm) |
TORCHINDUCTOR_CACHE_DIR | "" | torch.compile (inductor) の cache dir (= 空なら <VLLM_CACHE_ROOT>/torchinductor。既定の /tmp は再起動で消え毎回 compile し直す) |
LLM (SGLang)
| 変数 | 既定値 | 説明 |
|---|---|---|
SGLANG_CHAT_ENDPOINTS | "" | chat SGLang endpoint pool (= カンマ区切り URL、空なら SGLANG_BASE_URL) |
SGLANG_EMBED_ENDPOINTS | "" | embed SGLang endpoint pool (= カンマ区切り URL、空なら SGLANG_EMBED_BASE_URL) |
SGLANG_VISION_ENDPOINTS | "" | vision SGLang endpoint pool (= カンマ区切り URL、空なら SGLANG_VISION_BASE_URL) |
SGLANG_API_KEY | "" | [機密] proxy 経由認証時のみ設定 (= 通常空) |
SGLANG_EMBED_API_KEY | "" | [機密] embed server 用 API key |
SGLANG_ATTENTION_BACKEND | "" | attention backend 指定 (= --attention-backend。例: flashinfer, triton。空なら SGLang 既定) |
SGLANG_EXTRA_ARGS_EMBED | "" | embed server 起動の追加引数 (スペース区切り) |
SGLANG_EXTRA_ARGS_VISION | "" | vision server 起動の追加引数 (スペース区切り) |
SGLANG_START_MAX_RETRIES | 3 | auto-start 時の SGLang 起動 retry 回数 |
SGLANG_START_RETRY_DELAY | 10 | SGLang 起動 retry の待機秒 |
SGLANG_STARTUP_TIMEOUT | 3600 | SGLang server の ready 待ち timeout 秒 (= 大型 model / torch compile は load が長い) |
SGLANG_SHUTDOWN_JOIN_TIMEOUT | 30 | 停止時に SGLang 起動 thread の終了を待つ上限秒 (最大 120) |
SGLANG_EMBED_PROBE_RETRY_INTERVAL | 30 | embedding server 不在判定を再確認するまでの秒数 (= load 中の判定を引きずらない) |
LLM (Ollama)
| 変数 | 既定値 | 説明 |
|---|---|---|
OLLAMA_NUM_PARALLEL | "" | Ollama 同時並列実行数 (= 空ならデフォルト) |
OLLAMA_CONTEXT_LENGTH | "" | (廃止予定: LLM_CONTEXT_LENGTH を使用) Ollama context window 長 |
LLM (Cloud)
| 変数 | 既定値 | 説明 |
|---|---|---|
CLOUD_PROMPT_CACHE | auto | Anthropic 呼出の prompt caching。auto = client (Claude Code 等) が cache_control を付けた要求だけ system / tools / 直近 user turn に breakpoint を置く、always = 常に置く、off = 置かない。割引の計算はせず、cache の書込 / 読出 token を数量として利用ログに残す |
XAI_BASE_URL | https://api.x.ai/v1 | xAI (Grok) の base URL (= OpenAI 互換エンドポイント) |
RAG 設定
| 変数 | 既定値 | 説明 |
|---|---|---|
RAG_QUERY_REWRITE | true | RAG検索前に会話履歴で質問を自己完結クエリへ書き換え (= 「その表の詳細は?」等の追い質問対応) |
RAG_AUTO_FILTER | true | ナレッジにメタデータ項目が定義されていれば、質問中の条件 (案件 ID・期間 等) を LLM で抽出して検索を絞り込む (= 0 件なら絞り込み無しで再検索) |
RAG_QUERY_REWRITE_TIMEOUT | 20 | クエリ書き換え LLM 呼出の timeout 秒 (= 超過時は原文で検索) |
RAG_TOP_K | 8 | RAG 検索で取得する chunk 数の既定 (chat のナレッジ検索・添付検索・tool の vector_search 共通。request / ユーザー設定で上書き可) |
RAG_MIN_SIMILARITY | 0.35 | RAG 検索の類似度しきい値の既定 (cosine。ハイブリッド検索の候補もこの値で足切り。request / ユーザー設定で上書き可) |
RAG_CHUNK_SIZE | 500 | chunk 文字数の既定 (ナレッジ取込・chat 添付の session RAG 共通。取込時のパラメータ / ユーザー設定で上書き可) |
RAG_CHUNK_OVERLAP | 100 | chunk の重なり文字数の既定 |
SESSION_RAG_MAX_CHUNKS | 5000 | chat 添付 RAG の in-memory 保持 chunk 上限 (= 超過は古い順に破棄) |
RAG_HYBRID_CANDIDATE_FACTOR | 6 | hybrid 検索の候補 pool 倍率 (= top_k × この値) |
RAG_HYBRID_CANDIDATE_MIN | 30 | hybrid 検索の候補 pool 最小数 |
RAG_RRF_K | 60 | RRF 融合の rank 平滑化定数 (= 大きいほど上位偏重が緩む) |
RAG_METADATA_AI_MAX_CHARS | 4000 | metadata AI 自動抽出に渡す文書冒頭の最大文字数 |
RAG_MAX_PAGES | 200 | RAG 取込 / vision 抽出の PDF 最大ページ数 |
RAG_EMBED_FLUSH_CHUNKS | 200 | RAG取込でembed→DB保存をflushするchunk数 (= 巨大文書でも全vectorを貯めずメモリ一定) |
HNSW_M | 16 | pgvector HNSW の m (= ノードあたり最大近傍数。大=recall↑/メモリ↑/構築遅)。変更は新規作成 index のみに効く (既存 index は再構築されない) |
HNSW_EF_CONSTRUCTION | 64 | pgvector HNSW の ef_construction (= 構築時の候補幅。大=索引品質↑/構築遅)。変更は新規作成 index のみに効く |
HNSW_EF_SEARCH | 100 | pgvector HNSW 検索時 ef_search の下限 (= 実効は候補数との max。大=recall↑/遅) |
HNSW_ITERATIVE_SCAN | relaxed_order | pgvector 0.8+ の iterative_scan (off|relaxed_order|strict_order。共有テーブルの過剰除外を回避。0.8 では自動で有効、GUC 非対応(0.6/版ズレ)環境は SAVEPOINT で自動 skip=無害) |
RAG_EMBED_RETRY | 1 | RAG取込で chunk の embed 失敗時の再試行回数 (= 0 で再試行なし。部分失敗は結果に chunks_embed_failed で明示) |
RAG_HYBRID_KEYWORD_WEIGHT | 0.5 | hybrid 検索でキーワード一致のみ (vector 候補に無い) chunk の RRF 重み (= 1.0 で vector 候補と同格) |
RAG_CONTEXT_BUDGET_CHARS | 120000 | chat に注入する参照文脈 (添付+RAG+web) の合計文字数上限 (= LLM_CONTEXT_LENGTH 未設定時の既定。超過は類似度の低い chunk から落とす) |
RAG_GROUNDING_MODE | "" | 参照文脈 (RAG/添付/web) がある時の接地の強さ: prefer=出典を優先しつつ不足は自分の知識で補い、その旨を明示 (既定) / strict=出典のみで答え、無ければ無いと言う / off=接地指示なし (引用指示も既定 off)。Assistant の metadata.digitalbase.grounding、API の metadata.digitalbase.grounding で個別に上書き可 |
RAG_NO_MATCH_WARN | false | 選択ナレッジで 0 件ヒットの時に「No matching content in the selected knowledge base.」を chat の warning として表示する (= 既定 off。参照無しの回答は引用バッジが付かないことで分かる) |
RAG_RERANK_WARN | false | reranker 失敗 (hybrid 順へ fallback) を chat の warning として利用者に通知する |
RAG_INGEST_MAX_FILES | 500 | ファイル/フォルダ指定の一括取込 (POST /api/upload/from-files) で 1 job に含める最大ファイル数 (= フォルダ展開後に適用、超過分は打ち切り) |
RAG_UPLOAD_MAX_MB | 0 | RAG 取込 upload 1 件の上限 MB (= 0 なら FILE_UPLOAD_MAX_MB を流用。超過は 413) |
RAG_EXPORT_MAX_CHUNKS | 200000 | RAG export で 1 回に書き出せる chunk 数上限 (= 全量を memory に載せるため。超過は 413、0=無制限) |
RAG_INGEST_JOB_DB_WRITE_INTERVAL_SEC | 2 | 取込 job 進捗の DB 永続化間隔秒 (= stage 変化と終了時は即時。chunk 毎の書込を間引く) |
認証 (セッション)
| 変数 | 既定値 | 説明 |
|---|---|---|
JWT_EXPIRE_HOURS | 8760 | ログインセッション (JWT) の有効期限 (時間)。既定 8760 (= 1 年、据置き端末前提)。共有端末では短くする (例: 24) |
AUTH_LOCAL_FALLBACK | 1 | ldap / oidc モードでも localAuthAllowed なアカウント (既定 admin@local) のパスワードログインを許可する。1=許可 / 0=拒否 |
LOGIN_MAX_FAILURES | 0 | 同一 (メールアドレス, IP) のログイン失敗をこの回数で一時ロックする (LOGIN_WINDOW_SEC の間)。既定 0 = 無効 (= 運用ポリシーは opt-in) |
LOGIN_WINDOW_SEC | 600 | ログイン失敗回数を数える窓 (秒) = ロック継続時間 |
PASSWORD_MIN_LENGTH | 8 | ローカルアカウントの新規パスワードの最小文字数 (= ユーザー作成・変更時に検査。LDAP/OIDC には関与しない) |
認証 (LDAP / AD 連携)
| 変数 | 既定値 | 説明 |
|---|---|---|
LDAP_TIMEOUT | 10 | LDAP サーバーへの接続・応答の待ち時間 (秒)。応答が遅い環境では引き上げる |
LDAP_TLS_VERIFY | 0 | LDAPS のサーバー証明書を検証する。既定 0 = 検証しない (= 社内 CA / 自己署名の AD をそのまま使える)。1 で検証する (LDAP_CA_FILE で CA を指定) |
LDAP_CA_FILE | "" | LDAP_TLS_VERIFY=1 のとき証明書検証に使う CA 証明書ファイル (PEM)。空なら OS の信頼ストア |
LDAP_DEMOTE_UNMAPPED | 0 | LDAP グループ→role の mapping にどれも該当しないユーザーを USER に降格する。既定 0 = 現在の role を維持 (mapping 該当時の昇格のみ) |
認証 (OIDC)
| 変数 | 既定値 | 説明 |
|---|---|---|
MCP_OAUTH_TENANT_ID | "" | MCP (/mcp) を Entra ID の OAuth で認証する時のテナント ID (空 = OIDC_TENANT_ID を使う。両方空なら OAuth 無効) |
MCP_OAUTH_AUDIENCE | "" | MCP 用に Entra ID で登録した API のアプリケーション ID URI か クライアント ID (トークンの aud と照合。空 = OAuth 無効) |
MCP_OAUTH_ASSISTANT_ID | "" | OAuth で繋いだ MCP クライアントに適用する Assistant の id (asst_... / 内部 id どちらでも可)。API キーの bound_assistant_id と同じ役割 (空 = 何も公開しない) |
MCP_OAUTH_ISSUER | "" | MCP の OAuth で Entra 以外の発行者 (検証用 mock や別 IdP) を使う時の issuer URL (例 http://mock:8091/entra)。空 = テナント ID から Entra の URL を組む |
MCP_OAUTH_SCOPES | "" | 要求するスコープ (',' 区切り、例: mcp.access)。トークンの scp / roles にいずれかが無ければ拒否。空 = 検査しない |
Web 検索
| 変数 | 既定値 | 説明 |
|---|---|---|
WEB_SEARCH_SNIPPET_MAX_CHARS | 300 | Web 検索結果 snippet の最大文字数 |
WEB_SEARCH_REGION | jp-jp | DuckDuckGo の地域指定 (= kl パラメータ。日本語結果を優先) |
WEB_SEARCH_FETCH_PAGES | 3 | 検索上位から本文を取得するページ数 (= 0 で snippet のみの旧挙動) |
WEB_SEARCH_PAGE_MAX_CHARS | 4000 | 取得した本文をコンテキストに渡す最大文字数 (1ページあたり) |
WEB_SEARCH_TIMEOUT | 10 | Web 検索 (DuckDuckGo/SearXNG) の HTTP timeout 秒 |
OAuth
| 変数 | 既定値 | 説明 |
|---|---|---|
OAUTH_UI_REDIRECT | /connections?tab=api | OAuth 完了後の UI redirect path |
OAUTH_ENCRYPTION_KEY | "" | [機密] secret 暗号化 key (OAuth token / API 接続 / API key)。Fernet 形式 (url-safe base64 32B) ならそのまま、他の文字列は HKDF で鍵に派生。空なら JWT_SECRET から派生 |
OAUTH_REFRESH_THRESHOLD | 300 | OAuth token の期限前 refresh 開始秒 |
OAUTH_HTTP_TIMEOUT | 30 | OAuth token 交換/更新の HTTP timeout 秒 |
GRAPH_BASE_URL | https://graph.microsoft.com/v1.0 | Microsoft Graph API の接続先 (= 国内 / 政府向けクラウドや検証用 mock に向ける時だけ変える) |
OAUTH_MOCK_BASE_URL | "" | 検証用の OAuth mock プロバイダの URL (= 設定するとファイル接続に mock が出る。本番では空のまま) |
OAUTH_MOCK_CLIENT_ID | "" | 検証用の OAuth mock プロバイダの client ID |
OAUTH_MOCK_CLIENT_SECRET | "" | [機密] 検証用の OAuth mock プロバイダの client secret |
Vision
| 変数 | 既定値 | 説明 |
|---|---|---|
VISION_TILE_OVERLAP | 0.12 | vision タイル分割のオーバーラップ比率 (= 境界跨ぎの読み落とし防止) |
VISION_TILE_MIN_EDGE | 1000 | vision タイル分割を行う最小短辺 px (= これ未満の画像は分割しない) |
VISION_PDF_DPI | 300 | PDF→画像の解像度(dpi)。大判図面は高め(300-400)、通常文書は200程度 |
VISION_MAX_TILED_PARTS | 17 | タイル分割 vision の 1 リクエスト画像 part 上限 (= token 爆発防止) |
VIDEO_INPUT_MODE | auto | 動画添付の入力方式 (auto | native=video_url 直渡し | frames=フレーム画像列) |
VIDEO_SAMPLE_MODE | uniform | frames 方式のサンプル位置 (uniform=等間隔 | scene=シーン変化点優先。スライド/画面録画向け) |
VIDEO_SAMPLE_FPS | 1.0 | frames 方式の目標サンプルレート (枚/秒)。枚数は VIDEO_MIN/MAX_FRAMES にクランプ |
VIDEO_MIN_FRAMES | 4 | frames 方式の最小フレーム数 (= 短いクリップでも最低限の時間分解能) |
VIDEO_MAX_FRAMES | 32 | frames 方式の最大フレーム数 (= vision token 上限。長尺はこの枚数に間引き) |
VIDEO_SCENE_THRESHOLD | 0.3 | scene サンプリングの変化検出しきい値 (0-1、小さいほど敏感) |
VIDEO_FRAME_MAX_EDGE | 768 | frames 方式のフレーム画像の最大辺 px (= vision token 抑制) |
VIDEO_NATIVE_MAX_MB | 20 | native 方式でこのサイズ MB 超は再エンコードしてから送る |
VIDEO_NATIVE_MAX_EDGE | 720 | native 方式で送る動画の最大辺 px (超過は再エンコード) |
VIDEO_NATIVE_FPS | 2 | native 方式で送る動画の fps (超過は再エンコード。Qwen 系の既定サンプルレートに合わせる) |
VISION_MAX_TOKENS | 8192 | 画像→text 化 (tool/pipeline/RAG) の VLM 出力トークン上限 |
音声 / Whisper
| 変数 | 既定値 | 説明 |
|---|---|---|
WHISPER_MODEL | "" | Whisper モデルの上書き (= 名前で installed モデルを絞る、またはモデルのパス。空なら自動検出が正。通常設定不要) |
WHISPER_VAD_FILTER | 1 | faster-whisper の Silero VAD で無音区間を除いてから認識する (= 無音での幻聴を抑える)。0 で無効 |
WHISPER_SILENCE_RMS | 0.002 | この RMS (0..1) 未満の音声は無音とみなし whisper を呼ばず空文字を返す (= 無音の幻聴と無駄な推論を防ぐ。0 で無効) |
WHISPER_CPP_THREADS | "" | whisper.cpp の推論スレッド数 (空 = CPU コア数、上限 16。既定 4 のままだと多コア機で 2〜3 倍遅い) |
WHISPER_COMPUTE_TYPE | "" | faster-whisper の compute_type (float16 / int8 / int8_float16 等。空 = CUDA は float16、CPU は int8) |
音声 (STT / TTS)
| 変数 | 既定値 | 説明 |
|---|---|---|
AUDIO_HTTP_TIMEOUT | 60 | 外部 STT / TTS への HTTP timeout 秒 |
TTS_MAX_CHARS | 4096 | 1 回の読み上げ要求の最大文字数 (= app は文単位で送るので通常届かない) |
リソース上限
| 変数 | 既定値 | 説明 |
|---|---|---|
TOOL_FILE_READ_MAX_CHARS | 500000 | read_file tool の最大文字数 (= 超過分は切り捨て) |
TOOL_CSV_MAX_ROWS | 100000 | CSV 読込/整形の最大行数 |
TOOL_REMOTE_MAX_BYTES | 209715200 | リモート(S3/Drive/SharePoint等)ファイル取得の最大バイト数 |
TOOL_LOCAL_INLINE_MAX_BYTES | 67108864 | ローカルファイル inline 読込の最大バイト数 |
PYTHON_OUTPUT_MAX_CHARS | 100000 | execute_python の出力テキスト最大文字数 |
PYTHON_DF_PREVIEW_ROWS | 1000 | execute_python の DataFrame プレビュー最大行数 |
TOOL_SEARCH_FILES_MAX_MATCHES | 50 | search_files tool の最大 match 行数 |
TOOL_SEARCH_SNIPPET_MAX_CHARS | 200 | search_files の match 行 snippet 最大文字数 |
TOOL_LIST_FILES_MAX_ENTRIES | 200 | list_files の共有 root 直下 file 列挙上限 |
TOOL_GLOB_MAX_MATCHES | 1000 | glob tool の最大 match 数 |
TOOL_GREP_MAX_MATCHES | 500 | grep tool の最大 match 行数 |
TOOL_SHARED_DIR_READ_MAX_BYTES | 32768 | 共有 dir 専用 read tool の inline 読込上限バイト |
TOOL_PREVIEW_ROWS | 50 | pipeline operator 実行 tool の結果 preview 行数 |
TOOL_VECTOR_SEARCH_MAX_TOP_K | 10 | vector_search tool の top_k 上限 |
TOOL_DESC_SCOPE_MAX_ITEMS | 50 | tool description に埋め込む scope 内項目数の上限 (vector_search/query_dataset 等、超過分は件数のみ) |
TOOL_QUERY_DATASET_MAX_ROWS | 1000 | query_dataset tool の返却行数上限 |
TOOL_QUERY_SQL_MAX_ROWS | 1000 | query_sql tool (保存済み SQL 接続への read-only クエリ) の返却行数上限 |
TOOL_DESCRIBE_MAX_BYTES | 20971520 | vision 解析に渡す最大バイト数 (describe_file / pipeline の画像 operator 共通) |
CHAT_TABLE_MAX_ROWS | 500 | chat の SQL 結果テーブル表示の最大行数 |
PYTHON_SESSION_TTL | 1800 | execute_python session の保持 TTL 秒 |
PYTHON_SESSION_MAX | 30 | execute_python session の同時保持数上限 |
PIPELINE_AI_TEXT_MAX_CHARS | 0 | AI op (transform_ai の reduce 等) が 1 回の prompt に入れるデータ文字数の上限。0 (既定) = model の文脈予算から自動 |
PIPELINE_PREVIEW_CELL_CHARS | 2000 | 実行履歴の出力プレビューで 1 セルに残す最大文字数 (超過は切り詰め) |
PIPELINE_MAX_RETRIES | 10 | step の retry_on_fail で許す再試行回数の上限 (設定値はここで頭打ち) |
PIPELINE_RETRY_WAIT_MAX_MS | 60000 | step の再試行待ち (指数 backoff) の 1 回あたり上限ミリ秒 |
PIPELINE_PREVIEW_TIMEOUT_SEC | 120 | ワークフロー編集画面のステップ実行 (プレビュー) の上限秒。超えると中断して 504 |
PIPELINE_MAX_ITERATIONS | 10000 | pipeline 実行 loop の安全上限 (= 暴走 guard) |
PIPELINE_AI_AGENT_MAX_CONCURRENCY | 8 | ai_agent op の並列実行上限 (= DB pool / vLLM 負荷保護) |
EVENT_CHAIN_MAX_DEPTH | 3 | イベントトリガーの pipeline 連鎖の最大深さ (= 無限連鎖 guard) |
PIPELINE_RAG_FILES_MAX | 500 | load_files_to_rag op の 1 run あたり取込ファイル数上限 |
PIPELINE_AI_ATTACHMENT_MAX_MB | 20 | ai_agent op の添付 1 ファイルあたりサイズ上限 (MB) |
GATEWAY_QUERY_MAX_ROWS | 10000 | gateway data query の返却行数上限 |
PIPELINE_SQL_POOL_SIZE | 5 | pipeline SQL connector の connection pool size |
PIPELINE_SQL_MAX_OVERFLOW | 10 | pipeline SQL connector の pool overflow 上限 |
PIPELINE_SQL_STATEMENT_TIMEOUT_MS | 600000 | pipeline SQL operator の1文タイムアウト(ms、0=無効)。batch 前提なので SQL Query 機能より長め (pg=statement_timeout。MySQL系は非対応) |
SQL_POOL_SIZE | 2 | SQL Query 機能の connection pool size (= 同時利用が多い環境は引き上げ) |
SQL_POOL_MAX_OVERFLOW | 3 | SQL Query 機能の pool overflow 上限 |
SQL_POOL_TIMEOUT | 10 | SQL Query 機能の pool 取得待ち秒 |
SQL_POOL_RECYCLE | 300 | SQL Query 機能の connection 再生成間隔秒 |
SQL_CONNECT_TIMEOUT | 10 | SQL Query 機能の外部DB接続タイムアウト秒 (= 到達不能DBで固まらない上限。pg/mysql系) |
SQL_STATEMENT_TIMEOUT_MS | 30000 | SQL Query 機能の1文タイムアウト(ms、0=無効)。重いクエリを有界化 (pg=statement_timeout。MySQL系は非対応) |
SQL_EXACT_COUNT_MAX | 100000 | 行数を実COUNT(*)で数える上限 (= これ超は統計からの概算に切替え、大テーブルのフルスキャン回避) |
SQL_EXECUTE_MAX_ROWS | 100000 | SQL生実行/AI SQL実行のSELECT取得行数上限 (= LIMITなし巨大クエリのメモリ/転送保護。0=無制限、超過は切詰めてメッセージ明記) |
SQL_TABLE_MAX_ROWS | 1000 | SQL テーブル閲覧の1回の取得行数上限 (= 大きいテーブルを見る時に引き上げ。画面はページングで続きを取得) |
PY_SANDBOX_MODE | subprocess | ユーザPython実行の隔離方式 (subprocess=kill保証+メモリ隔離 / thread=旧方式。環境起因でsubprocessが動かない時の逃げ道) |
PY_SANDBOX_MAX_MEMORY_MB | 2048 | ユーザPython実行subprocessのメモリ上限MB (RLIMIT_AS、POSIXのみ。0=無制限) |
PIPELINE_MAX_CONCURRENT_RUNS | 2 | pipeline runの常駐worker process数 (= 同時実行数。超過分はqueueで待機) |
PIPELINE_WORKER_POOL | default | この process の worker が claim する pool 名。本体は内蔵 worker に渡し、digitalbase worker は自分の pool として使う。pipeline 側の実行先 (workerPool、ADMIN が設定) と一致した run だけを取る |
PIPELINE_WORKER_HEARTBEAT_SEC | 60 | 外部 worker (digitalbase worker) が生存を DB (PipelineWorker) に書く間隔 (秒)。この 3 倍を超えて更新が無い外部 worker は「居ない」扱いになり、抱えていた run は回収される。本体内蔵の worker は本体が監督するので書かない |
PIPELINE_MAX_QUEUED_RUNS | 50 | 同一 pipeline の待機 (queued) run の上限。event/webhook は実行中でも積まれ順に走る (超過分は捨てる/429) |
PIPELINE_LOCK_TIMEOUT_SECONDS | 5 | ワークフローの起動・削除を直列化するロックの最大待ち秒数。超えると 503 (Retry-After) で返し、待ちが積み上がって全体が止まるのを防ぐ |
PIPELINE_RUN_MAX_HOURS | 12 | pipeline run の上限時間 (= 固まったrunを自動failedに倒し再実行を可能にする。0=無制限) |
PIPELINE_RUN_MAX_ATTEMPTS | 2 | worker 停止/再起動で中断された run を自動で再 queue する回数の上限 (1=再実行しない) |
PIPELINE_AUTO_PAUSE_AFTER_FAILURES | 5 | pipeline がこの回数連続で失敗したら自動起動 (event/cron/webhook) を一時停止する (手動実行で解除、0=無効) |
PIPELINE_SCHEDULE_MISFIRE_GRACE_SEC | 300 | cron tick が遅れてもこの秒数以内なら実行する (= 一時的な高負荷で tick を捨てない) |
PIPELINE_SCHEDULE_CATCHUP | 1 | 起動時に停止中に逃した cron tick があれば 1 回だけ実行する。1=有効 / 0=無効 |
EVENT_OUTBOX_MAX_ATTEMPTS | 8 | イベント配送 (EventOutbox) の再試行回数上限。超えた行は dead letter (failedAt) として残す |
EVENT_OUTBOX_GIVE_UP_MIN | 60 | イベント配送の再試行を諦めるまでの分数 (超過は dead letter) |
PIPELINE_WORKER_POLL_SEC | 5 | pipeline worker / outbox consumer の polling 間隔秒。LISTEN/NOTIFY が使えない DB でだけ使う (通常は NOTIFY で即起きる) |
PIPELINE_IDLE_WAKE_SEC | 300 | NOTIFY が生きている時の保険の目覚まし (秒)。この間隔で 1 回だけ queue を見る = LISTEN 接続が黙って切れても最悪この秒数で拾う。アイドル時の DB アクセスはこれだけ |
PIPELINE_CANCEL_KILL_GRACE_SEC | 15 | pipeline cancel後、協調停止 (step境界) を待つ猶予秒。超過でworker processをterminate/kill |
PIPELINE_SQL_SOURCE_MAX_ROWS | 500000 | pipeline source_sql の取得行数上限 (= 無制限SELECTでのメモリ枯渇防止。0=無制限、超過分は切詰めてerrorsに明記) |
SQL_SNAPSHOT_MAX_ROWS | 100000 | source_sql の snapshot 差分 (主キー + 行ハッシュの台帳) で扱える行数の上限。超えたら error (= 欠けた台帳を確定して残りを「削除」にしない)。大きい表は cursor 方式を使う |
PIPELINE_FILE_SOURCE_MAX_MB | 500 | pipeline source_file の1ファイル上限MB (= 巨大ファイルでのメモリ枯渇防止。0=無制限、超過ファイルはerrorsに明記してskip) |
FILE_UPLOAD_MAX_MB | 1024 | ファイルアップロード1件の上限MB (files/connector upload・base64 save共通。0=無制限) |
CHAT_AUDIO_ATTACH_MAX_MB | 100 | chat 添付の音声ファイル1件の上限MB (文字起こし対象) |
CHAT_VIDEO_ATTACH_MAX_MB | 100 | chat 添付の動画ファイル1件の上限MB (映像直渡し + 音声文字起こし対象) |
LOG_DB_QUEUE_SIZE | 5000 | DB log handler の queue 上限 |
LOG_DB_BATCH_SIZE | 100 | DB log handler の batch insert 件数 |
LOG_DB_FLUSH_INTERVAL | 1.0 | DB log handler の flush 間隔秒 |
LOG_RETENTION_DAYS | 30 | AppLog (WARNING 以上) をこの日数より古いものは削除。0=無期限 |
AUDIT_RETENTION_DAYS | 365 | 監査ログ (AuditLog) の保持日数。削除前に JSONL へ退避する。0=無期限 |
AUDIT_ARCHIVE_DIR | <インストール先>/audit-archive | 監査ログを削除前に退避する JSONL の保存先ディレクトリ |
CONNECTION_TOUCH_INTERVAL_SEC | 60 | 接続 lastUsedAt の更新間引き間隔 (秒)。連続利用時の UPDATE を抑える |
USAGE_RETENTION_DAYS | 90 | API 使用量 (ApiKeyUsage) の生データ保持日数。0=無期限 |
RETENTION_SWEEP_HOUR | 3 | 保持期限 sweep を実行する時刻 (0-23、既定は負荷の低い深夜3時) |
RETENTION_DELETE_BATCH | 5000 | 保持期限 sweep の 1 回の DELETE 行数 (大テーブルのロック回避) |
PIPELINE_RUN_RETENTION_DAYS | 90 | pipeline 実行履歴 (PipelineRun、完了/失敗/取消) の保持日数。pipeline ごとの直近分は日数に関わらず残す。0=無期限 |
PIPELINE_RUN_RETENTION_KEEP | 20 | PipelineRun sweep で pipeline ごとに必ず残す直近 run 数 |
EVENT_OUTBOX_RETENTION_DAYS | 14 | 配送済 EventOutbox 行の保持日数 (未配送行は削除しない)。0=無期限 |
FILE_LANDED_DIFF_DETAIL_LIMIT | 200 | source_file_landed の実行履歴に残す差分根拠 (added/modified/deleted) の合計件数上限 (超過分は truncated 件数のみ) |
FILE_LANDED_HASH_MAX_MB | 50 | source_file_landed content_hash=true 時に sha256 を取る 1 ファイル上限 MB (超過ファイルは size/mtime 比較のみ) |
LOAD_TO_RAG_MAX_STALE_DELETE_RATIO | 0.5 | load_to_rag mode=sync の削除伝播で、既存 key のうちこの比率を超えて消えそうな場合は削除を skip する (0=無効) |
EXECUTE_COMMAND_MAX_OUTPUT_BYTES | 1048576 | transform_execute_command が行に取り込む stdout/stderr の上限バイト数 (超過は切詰めて warning に明記) |
PIPELINE_WAIT_MAX_SECONDS | 3600 | transform_wait の 1 step あたり待機秒数の上限 (超過設定は step error) |
PY_SANDBOX_MAX_OUTPUT_BYTES | 268435456 | ユーザPython実行subprocessが親へ返す結果 (JSON) の上限バイト数 (one-shot / session 共通。超過は error) |
ELASTICSEARCH_BULK_BATCH_SIZE | 1000 | load_elasticsearch の _bulk 1 リクエストあたりの document 数 |
ELASTICSEARCH_SOURCE_MAX_ROWS | 100000 | source_elasticsearch が search_after で取得する総 document 数の上限 (0=無制限、超過は warning に明記) |
SNOWFLAKE_POLL_MAX_SEC | 600 | Snowflake SQL API の非同期 statement (202) 完了待ちの上限秒 |
SNOWFLAKE_LOAD_BATCH_ROWS | 100 | load_snowflake の 1 INSERT (複数行 VALUES) あたりの行数 |
SYSTEM_LOGS_MAX_ROWS | 10000 | source_logs / source_pipeline_metrics が DB から読む行数の上限 (超過は warning に明記) |
PIPELINE_LOAD_ERROR_DETAIL_LIMIT | 20 | SaaS/DB load operator が errors に残す行単位エラーの件数上限 (超過分は件数のみ) |
改名・廃止した設定キー
次のキーは読み込まれません(値は引き継がないので、.env に残っていれば新キーに書き直してください)。
| 旧キー | 現在 |
|---|---|
BOT_RAG_TOP_K | RAG_TOP_K に改名 |
RAG_DEFAULT_TOP_K | RAG_TOP_K に改名 |
SESSION_RAG_TOP_K | RAG_TOP_K に改名 |
RAG_DEFAULT_MIN_SIMILARITY | RAG_MIN_SIMILARITY に改名 |
SESSION_RAG_CHUNK_SIZE | RAG_CHUNK_SIZE に改名 |
SESSION_RAG_CHUNK_OVERLAP | RAG_CHUNK_OVERLAP に改名 |
CLOUD_DEFAULT_MAX_TOKENS | DEFAULT_MAX_OUTPUT_TOKENS に改名 |
RAG_GROUNDING_INSTRUCTION | 廃止(接地の強さは RAG_GROUNDING_MODE (off / prefer / strict) に一本化 (false 相当は off)) |
AUTH_LOGIN_RATE_LIMIT_PER_MIN | 廃止(登録のみで未実装だったため削除 (ログイン保護は LOGIN_MAX_FAILURES / LOGIN_WINDOW_SEC)) |
MAX_PDF_PAGES | 廃止(未使用のため削除 (取込ページ数の上限は RAG_MAX_PAGES)) |
TOOL_STREAM_TEXT_THRESHOLD | 廃止(tool ループの stream 判定を統一したため削除 (2026-08-18)) |
セキュリティ強化設定(任意)
既定値は「まず動く」側に寄せてあり、運用ポリシーは環境変数で有効化する方式です(ユーザー・権限管理)。厳格な運用が必要な場合は、次のブロックを .env に足して再起動してください。すべて既存の設定項目で、アップデートで戻ることはありません。
# ログイン保護
LOGIN_MAX_FAILURES=5 # 同一 ID・IP の連続失敗 5 回で一時ロック
LOGIN_WINDOW_SEC=600 # ロック判定の窓と解除までの秒数
PASSWORD_MIN_LENGTH=12 # 新規・変更時のパスワード最小長(既存は影響なし)
JWT_EXPIRE_HOURS=24 # セッション期限(共有端末なら 8 など)
# 通信
LDAP_TLS_VERIFY=1 # LDAPS の証明書検証(社内 CA は LDAP_CA_FILE を指定)
LDAP_CA_FILE=/path/to/ca.pem
# 管理画面
ADMIN_ENV_MASK_SECRETS=1 # 環境変数エディタで秘密値を *** 表示
監査ログ・パスワードの暗号化保存・ロールと共有の制御は既定で有効です(セキュリティ、監査ログ)。