環境変数 / 設定一覧
DigitalBase の挙動は .env ファイルの環境変数で設定します。多くの項目は管理画面の 環境変数 タブからも編集できます(「本体を再起動」で反映)。管理画面の一覧と本ページの前半にはよく使う項目、後半の「詳細チューニング」には既定のままで問題ない項目を、管理画面と同じカテゴリ順で載せています。
[機密] が付いた項目(API キー・パスワード・JWT secret など)は秘匿情報です。リポジトリやログに残さず、本番では既定値を必ず変更してください。
既定値が ""(空文字)の項目は 未設定が既定で、空のままでも動作します。空のときに実際にどう振る舞うか(フォールバック先の既定)は、各行の「説明」内の「= 空なら…」を参照してください。既定値のある項目(数値・真偽・文字列)を空にした時は、その既定値として扱います(説明に「空 = …」とある項目を除く)。真偽の項目は 1 / true / yes / on と 0 / false / no / off を受けます。種類に合わない値(数値の項目に文字など)は、設定画面での保存時に弾き、起動時は項目名を出して止まります。<データの置き場> は ~/.local/db(Docker は /app/data、Windows は %LOCALAPPDATA%\db)です。インストーラで入れた機ではファイル(FILES_DIR)だけはインストール先の files に置きます。
設定項目は全 479 件(よく使う項目 119 / 詳細チューニング 360)。既定値はこのページを生成したバージョンのものです。
システム (データベース)
| 変数 | 既定値 | 説明 |
|---|---|---|
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 に自動生成して保持する。本番は長いランダム文字列を固定で設定 |
システム (ファイル / 外部ディレクトリ)
| 変数 | 既定値 | 説明 |
|---|---|---|
DATA_DIR | <データの置き場> | 利用者のデータの置き場 (ファイル・レイク・カスタム MCP・監査ログの退避)。個別の *_DIR を指定しなければこの下に作る。本体・.env・ライセンスはここに含まない |
FILES_DIR | <データの置き場>/files | user file 保存先 (= myfile/shared dir 配置 root) |
DAV_ENABLED | true | 手元の PC から自分の myfile をネットワークドライブとしてつなぐ口 (WebDAV、/dav/)。つなげるのは API キーで「手元の PC から myfile につなぐ」をオンにしたキーだけ。false で口ごと止める |
LAKE_DIR | <データの置き場>/lake | データレイク (大きいデータセット) の Parquet 置き場。複数台で使う時は全機から見える共有フォルダ (NFS 等) にする |
BACKUP_DIR | <データの置き場>/backups | バックアップ (db backup・管理画面) の保存先。DB のダンプと利用者のデータ (ファイル・レイク・カスタム MCP・監査ログの退避) を 1 つの tar にする |
EXTERNAL_DATA_DIRS | "" | 外部 dir アクセス許可 ("label=/path,..." 形式、デフォルト read+write)。末尾 ":ro" で読み取り専用 mount。 (旧名 EXTERNAL_DATA_DIRS_READ も読む) |
システム (文書変換)
| 変数 | 既定値 | 説明 |
|---|---|---|
SOFFICE_PATH | "" | soffice 実行ファイルのパス (空=PATH と ~/.local/db/tools から自動検出) |
システム (ライセンス)
| 変数 | 既定値 | 説明 |
|---|---|---|
LICENSE_FILE_PATH | <データの置き場>/license.lic | ライセンスファイル path (= 通常 OS 別に自動検出) |
LLM (共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
HF_HUB_OFFLINE | "" | 1 で HuggingFace download 禁止 (= air-gapped / オフライン稼働、model 事前 download 必須。vLLM・SGLang・whisper 共通) |
HF_HOME | "" | HuggingFace cache dir 上書き (= 空なら ~/.cache/huggingface。vLLM・SGLang・whisper 共通) |
LLM_BACKEND | ollama | LLM 推論 backend (= ollama | vllm | sglang | none) |
LLM_CONTEXT_LENGTH | "" | LLM の文脈窓 (token)。空 = モデル・起動引数の値 (アプリは接続先 server が名乗る窓に合わせる)。指定するとローカル起動の chat / 画像 server に渡し、アプリが送る量の上限にもなる (server の窓より大きい時は server の窓) (旧名 VLLM_MAX_MODEL_LEN (vLLM) / OLLAMA_CONTEXT_LENGTH (Ollama) も読む) |
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 | "" | max_tokens 未指定時の出力上限の既定 (local / cloud / 画像読み取り共通。明示指定はこの値に縛られない)。空 = 送らない (接続先・モデルの既定)。Anthropic は必須なので空なら CLOUD_MAX_TOKENS_CAP (文脈窓が分かりそれより小さければ窓) (1 以上) |
MAX_OUTPUT_TOKENS | "" | 画面の出力 max_tokens スライダの上限 (送る値の上限ではない)。空 = model ごとの文脈窓 (cloud はカタログ、local は接続先 server が名乗る窓)。「カスタム」に切り替えた時の開始値は DEFAULT_MAX_OUTPUT_TOKENS、空ならこの上限の 1/4 (= 文脈予算が出力に取っておく量と同じ) |
LLM_REQUEST_TIMEOUT | 900 | LLM 1 リクエストの timeout 秒 (pipeline の AI op、chat の画像読み取り、プロンプト提案、RAG の metadata 抽出、AI での SQL・フロー生成、ベンチマーク、Cloud LLM (OpenAI / Anthropic / Gemini) への HTTP、GATEWAY_REQUEST_TIMEOUT が空の時の gateway。大きめ推奨 = ai_agent は長時間動く前提)。空または 0 = 上限なし (旧名 CLOUD_LLM_TIMEOUT も読む) |
LLM (vLLM / SGLang 共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
ENGINE_VISION_BASE_URL | "" | ローカル engine の vision server URL (= 空なら chat server 兼用) (旧名 VLLM_VISION_BASE_URL / SGLANG_VISION_BASE_URL も読む) |
ENGINE_CHAT_MODEL | Qwen/Qwen3-1.7B | ローカル engine の chat model 名 (= HuggingFace ID、default は起動確認用の 1.7B / 32K context / ~4GB VRAM) (旧名 VLLM_CHAT_MODEL / SGLANG_CHAT_MODEL も読む) |
ENGINE_VISION_MODEL | "" | ローカル engine の vision model 名 (= 空なら無効) (旧名 VLLM_VISION_MODEL / SGLANG_VISION_MODEL も読む) |
ENGINE_AUTO_START | false | true で起動時に LLM_BACKEND のローカル engine (vLLM / SGLang) の server も auto-spawn (旧名 VLLM_AUTO_START / SGLANG_AUTO_START も読む) |
ENGINE_TENSOR_PARALLEL | "" | tensor parallel size (= 空なら GPU 数から自動: GPU 数以下の最大 2 の冪、上限 ENGINE_TENSOR_PARALLEL_MAX。明示値が優先)。vLLM は chat / embed / vision 全サーバ共通で、各サーバは gpu_memory_utilization を全 GPU に均等に取る (役割別に変える時は VLLM_EXTRA_ARGS_* に --tensor-parallel-size)。SGLang は chat / vision の --tp-size で、embed は常に 1 (= 同居 GPU で unbalanced 拒否を避ける) (旧名 VLLM_TENSOR_PARALLEL / SGLANG_TENSOR_PARALLEL も読む) |
ENGINE_PYTHON | <データの置き場>/venv/bin/python | ローカル engine (vLLM / SGLang) のサーバを起動する Python 実行パス (= 既定は install dir の venv を自動検出。合わない場合のみ設定) (旧名 VLLM_PYTHON / SGLANG_PYTHON も読む) |
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_EMBED_MODEL | Qwen/Qwen3-Embedding-0.6B | vLLM RAG 用 embedding model 名 (= 既定は SGLang・Docker と同じ。変えると既存の索引は作り直しが要る) |
VLLM_GPU_MEMORY_UTILIZATION_CHAT | "" | chat server の GPU memory 利用率 (= 0.0-1.0)。空なら 0.70 (= embed server と同じ GPU に載せる前提の値。chat だけなら上げてよい) |
VLLM_GPU_MEMORY_UTILIZATION_EMBED | "" | embed server の GPU memory 利用率 (全 GPU に均等)。空なら 0.10 (= 0.6B 級の embedding はこれで足りる) |
VLLM_GPU_MEMORY_UTILIZATION_VISION | "" | vision server の GPU memory 利用率 (= 0.0-1.0)。空 = 渡さず vLLM の既定 (0.9 = 1 server 前提)。chat / embed と同じ GPU に載せる時は必ず入れる (合計が 1 を超えると後から起動する側が落ちる) |
VLLM_REASONING_PARSER | "" | chat model の思考 (reasoning) を本文と分けて返す parser 名 (= vLLM の --reasoning-parser)。chat model の系統に合わせる (例: Qwen3 → qwen3、gpt-oss → openai_gptoss、DeepSeek-R1 → deepseek_r1。思考を出さない Llama・Mistral などは空)。空 = 渡さない (思考する model では思考が本文に混ざる)。設定すると chat server と vision server に渡す |
VLLM_TOOL_CALL_PARSER | "" | chat model の出力から tool call を取り出す parser 名 (= vLLM の --tool-call-parser。--enable-auto-tool-choice と、template が要る parser (deepseek_v3 等) の同梱 chat template も自動で付ける)。chat model に合わせる (例: Qwen3 → hermes、gpt-oss → openai、Llama → llama3_json、Mistral → mistral。model card の値を管理画面の「vLLM設定」から取り込むのが確実)。空 = 渡さない: この app が起動した chat server では tool を使う依頼 (チャットの Tools・MCP・Assistant・API の tools) がエラーになる (LLM_CHAT_BASE_URL など外部の推論 server には tools をそのまま送る) |
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_HOST | "" | この機の全サーバ共通の追加引数 (= 機の事情に合わせた対策。例: nvcc の無い機で --attention-backend TRITON_ATTN、統合メモリ機で --max-num-seqs 32)。app の既定値より優先し、専用 env / VLLM_EXTRA_ARGS_CHAT 等で同じ flag を明示すればそちらが優先。model 取込で書き換わらない。--max-model-len / --gpu-memory-utilization / --tensor-parallel-size は生成 model の大きさに合わせる flag なので embed server には渡さない (= embed に効かせる時は VLLM_EXTRA_ARGS_EMBED) |
VLLM_EXTRA_ARGS_CHAT | "" | chat server 起動の追加引数 (スペース区切り。例: --max-num-seqs 4 で同時処理数)。tool calling の parser は VLLM_TOOL_CALL_PARSER で指定 (ここに --tool-call-parser を書けばそちらが優先) |
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_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_DATA_PARALLEL | "" | SGLang data parallel size (= --dp-size、小型 model を GPU 数だけ複製して同時実行数を稼ぐ。空 = 送らず SGLang の既定 (1 = 無効)) |
SGLANG_MEM_FRACTION_CHAT | "" | chat server の GPU memory 利用率 (= --mem-fraction-static、0.0-1.0)。空なら 0.70 (= embed server と同じ GPU に載せる前提の値。chat だけなら上げてよい) |
SGLANG_MEM_FRACTION_EMBED | "" | embed server の GPU memory 利用率 (= vLLM と意味論が違い空きメモリ基準。chat 同居時に小さすぎると KV 確保不可で起動失敗、実測では 0.45 以上が必要)。空なら 0.50 |
SGLANG_MEM_FRACTION_VISION | "" | vision server の GPU memory 利用率 (= --mem-fraction-static)。空 = 渡さず SGLang の自動 (1 server 前提)。chat / embed と同じ GPU に載せる時は必ず入れる |
SGLANG_REASONING_PARSER | "" | chat model の思考 (reasoning) を本文と分けて返す parser 名 (= SGLang の --reasoning-parser)。chat model の系統に合わせる (例: Qwen3 → qwen3、gpt-oss → gpt-oss、DeepSeek-R1 → deepseek-r1。思考を出さない Llama・Mistral などは空)。空 = 渡さない (思考する model では思考が本文に混ざる)。設定すると chat server と vision server に渡す |
SGLANG_TOOL_CALL_PARSER | "" | chat model の出力から tool call を取り出す parser 名 (= SGLang の --tool-call-parser)。chat model に合わせる (例: Qwen3 → qwen (Coder 系は qwen3_coder)、gpt-oss → gpt-oss、Llama → llama3、Mistral → mistral、DeepSeek-V3.1 → deepseekv31)。空 = 渡さない: この app が起動した chat server では tool を使う依頼 (チャットの Tools・MCP・Assistant・API の tools) がエラーになる (LLM_CHAT_BASE_URL など外部の推論 server には tools をそのまま送る) |
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_HOST | "" | この機の全サーバ共通の追加引数 (= 機の事情に合わせた対策)。app の既定値より優先し、専用 env / SGLANG_EXTRA_ARGS_CHAT 等で同じ flag を明示すればそちらが優先。model 取込で書き換わらない。--context-length / --tp-size / --mem-fraction-static は生成 model の大きさに合わせる flag なので embed server には渡さない (= embed に効かせる時は SGLANG_EXTRA_ARGS_EMBED) |
SGLANG_EXTRA_ARGS_CHAT | "" | chat server 起動の追加引数 (スペース区切り)。speculative decoding (--speculative-algorithm 等) もここに書く |
LLM (Ollama)
| 変数 | 既定値 | 説明 |
|---|---|---|
OLLAMA_BASE_URL | http://localhost:11434 | Ollama サーバの base URL |
OLLAMA_API_KEY | "" | [機密] proxy 経由認証時のみ設定 (= 通常空) |
OLLAMA_EMBED_MODEL | embeddinggemma | RAG 用 embedding model 名 (= Ollama tag)。LLM_BACKEND=none でも embedding はこの model を OLLAMA_BASE_URL に頼む (Ollama を使わない時は LLM_EMBED_BASE_URL + LLM_EMBED_MODEL で外部へ向けるか、ユーザー設定で cloud の embedding を選ぶ) |
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 を有効化 (= 要 RERANK_BASE_URL) |
RERANK_TOP_N | 30 | rerank の前に集める候補の数 (2 段の検索の 1 段目。取得件数 RAG_TOP_K の方が大きければそちら)。reranker は候補ごとに文を読むので、増やすと拾い漏れが減り応答は遅くなる。既定 30 は独自の値 (評価の記録は無い) |
RERANK_BASE_URL | "" | reranker server (/v1/rerank、NVIDIA NIM は /v1/ranking) の base URL (= 空なら rerank 無効) (旧名 VLLM_RERANK_BASE_URL も読む) |
RERANK_MODEL | BAAI/bge-reranker-v2-m3 | reranker モデル (cross-encoder, 多言語) (旧名 VLLM_RERANK_MODEL も読む) |
RERANK_API_KEY | "" | [機密] reranker server 用 API key (= 通常空) (旧名 VLLM_RERANK_API_KEY も読む) |
RERANK_TIMEOUT | 30 | reranker の応答を待つ秒数。超えたら hybrid 検索の順に戻して回答を続け、止まった reranker で会話を待たせないため 30 秒。空または 0 = 上限なし |
認証 (セッション)
| 変数 | 既定値 | 説明 |
|---|---|---|
AUTH_MODE | local | ログイン方式: local = この製品のユーザー管理 / ldap = Active Directory・LDAP / oidc = Microsoft Entra ID (SSO) |
認証 (LDAP / AD 連携)
| 変数 | 既定値 | 説明 |
|---|---|---|
LDAP_HOST | "" | Active Directory / LDAP サーバーのホスト名または IP |
LDAP_PORT | "" | LDAP のポート番号。空 = ldap3 の既定 (LDAP_USE_SSL が false なら 389、true なら 636) |
LDAP_USE_SSL | false | true で暗号化接続 (LDAPS) を使う。StartTLS には対応していない |
LDAP_BASE_DN | "" | ユーザーを検索する起点 (Base DN、例: DC=company,DC=local) |
LDAP_USER_DN_FORMAT | "" | ログイン時にユーザーを特定する DN の形式 (AUTH_MODE=ldap の時は必須)。{username} が入力されたユーザー名に置き換わる (例: Active Directory は {username}@company.local、OpenLDAP は 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 | true | chat の Web 検索を使えるようにする (既定 true。false で管理者が止める)。検索するのは、チャットの Tools で「Web検索」にチェックした時だけ (既定のチェックはユーザー設定の Tools) |
WEB_SEARCH_ENGINE | duckduckgo | duckduckgo | searxng | brave | serper | tavily。duckduckgo はキー不要の試用向け (検索画面の HTML を読むので、件数が多いと止められることがある)。本番は自前の searxng か、キーを入れた brave / serper (Google の結果) / tavily |
WEB_SEARCH_SEARXNG_URL | http://localhost:8888 | SearXNG instance URL (= WEB_SEARCH_ENGINE=searxng 時。settings.yml の search.formats に json が要る) |
WEB_SEARCH_BRAVE_API_KEY | "" | [機密] Brave Search API のキー (= WEB_SEARCH_ENGINE=brave 時) |
WEB_SEARCH_SERPER_API_KEY | "" | [機密] Serper (Google 検索結果の API) のキー (= WEB_SEARCH_ENGINE=serper 時) |
WEB_SEARCH_TAVILY_API_KEY | "" | [機密] Tavily のキー (= WEB_SEARCH_ENGINE=tavily 時) |
WEB_SEARCH_MAX_RESULTS | 5 | 検索語 1 つあたりに受け取る結果数 (= 各エンジンに件数として送る。結果ごとに本文の取得・chunk の埋め込みと reranker が掛かるので、エンジンの既定 (Brave 20・Serper 10) でなく少なめにして応答の時間と計算を抑える。Tavily の既定と同じ 5) |
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 連携用) |
MS_OAUTH_TENANT | common | Microsoft OAuth (OneDrive / SharePoint) のテナント。common = 個人 + 法人の両方、organizations = 法人のみ、テナント ID / ドメイン = その組織だけ (旧名 AZURE_AD_TENANT も読む) |
画像生成
| 変数 | 既定値 | 説明 |
|---|---|---|
IMAGE_GEN_MODEL | "" | 画像を作るモデル。空なら画像生成は無効 (IMAGE_GEN_BASE_URL の自前サーバーを除く)。自前サーバーでは省略可 (= サーバーが名乗るモデル、a1111 は読込中のモデルを使う) |
IMAGE_GEN_BASE_URL | "" | 自前の画像サーバーの URL (= 製品の外で起動したサーバー。製品は応答を見るだけ)。入れるとこちらが最優先。例: http://gpu-box:8092/v1。クラウド API をそのまま使うなら空 |
動画生成
| 変数 | 既定値 | 説明 |
|---|---|---|
VIDEO_GEN_MODEL | "" | 動画を作るモデル。空なら動画生成は無効 (VIDEO_GEN_BASE_URL の自前サーバーを除く)。自前サーバーでは省略可 (= サーバーが名乗るモデルを使う) |
VIDEO_GEN_BASE_URL | "" | 自前の動画サーバーや中継サーバーの URL (= 製品の外で起動したサーバー。製品は応答を見るだけ)。入れるとこちらが最優先。例: http://gpu-box:8093/v1。クラウド API をそのまま使うなら空 |
音声 / 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-1 | TTS_ENGINE=openai で指定するモデル名 (例: tts-1、kokoro) |
TTS_VOICE | "" | 既定の声 (openai は voice 名、voicevox は style ID)。利用者は設定画面で変更できる |
リソース上限
| 変数 | 既定値 | 説明 |
|---|---|---|
EXECUTE_PYTHON_TIMEOUT | 300 | Python 実行・シェル実行 1 回の制限時間 (秒)。チャットの Python 実行とシェル実行の tool・ノートブック・pipeline のコード step (step で未指定の時)・テーブルの「AIで編集」の python 変換に効く。子プロセスは既定で時間の上限が無く、終わらないコードが動き続けるので 300 秒。空または 0 = 上限なし (旧名 TABLE_AI_PYTHON_TIMEOUT も読む) |
詳細チューニング
既定のままで問題ない詳細設定です。管理画面には既定で表示されませんが、必要時に .env に書けば上書きできます。
システム (データベース)
| 変数 | 既定値 | 説明 |
|---|---|---|
SQL_DATALAKE_URL | "" | [機密] 内蔵 Data Lake 接続用の DB URL (空 = DATABASE_URL を使う、最小権限ロール推奨) |
システム (サーバー)
| 変数 | 既定値 | 説明 |
|---|---|---|
MAX_TOOL_ROUNDS | 30 | 1 回の応答で LLM が tool を呼んで考え直す回数の上限。既定 30 は承認する人がいない経路 (API・pipeline・サブタスク) で呼び出しが止まらない時の歯止め (LangGraph の recursion_limit 25、OpenAI Agents SDK の max_turns 10 と同じ役割) |
DB_POOL_SIZE | 10 | 本体の DB の connection pool の常設数。def の API は FastAPI の threadpool (既定 40 本) で同時に動き、それぞれ接続を使うので SQLAlchemy の既定 (5 + 超過 10) より大きくしている (10 + 超過 20) |
DB_POOL_MAX_OVERFLOW | 20 | 本体の DB の connection pool が DB_POOL_SIZE を超えて開ける数 (理由は DB_POOL_SIZE と同じ) |
DB_POOL_RECYCLE | 1800 | メイン DB engine の connection 再生成間隔秒 (= stale 接続対策)。0 = 作り直さない |
CONV_MEMORY_MAX_SESSIONS | 500 | in-memory 会話キャッシュの最大セッション数 (= 超過時は古い順に破棄) |
SQL_ENGINE_CACHE_MAX | 20 | 外部 SQL 接続 engine キャッシュの上限数 (= 超過時は古い engine を dispose) |
MCP_DISCOVERY_TIMEOUT | 10 | MCP server の tool 一覧の取得を待つ秒数。届かない server でチャットの開始を長く待たせないため 10 秒。空または 0 = 上限なし |
MCP_TOOL_TIMEOUT | 300 | MCP の tool 1 回の実行を待つ秒数。長い処理の tool もあるので httpx の既定 5 秒より長く、返らない server で会話を止め続けないよう 300 秒。空または 0 = 上限なし |
GATEWAY_IMAGE_MAX_MB | 512 | gateway chat の外部画像 URL 取得の最大サイズ (MB、既定は OpenAI の 1 リクエスト上限に合わせる)。超過は画像を捨てて続行 |
INTERNAL_API_BASE | "" | 本体が自分自身の API を呼ぶ時の接続先 (空 = http://localhost:API_PORT)。リバースプロキシ / コンテナで localhost が本体を指さない時だけ設定 |
OUTBOUND_ALLOW_LOOPBACK | true | server が取りに行くユーザ指定 URL (HTTP リクエスト・Webhook・通知の operator、外部 MCP、画像 URL。リダイレクト先も同じ) に loopback 宛を許すか (既定 true = 同一ホストの受け側を許す。link-local は常に拒否) |
SQL_SQLITE_DIR | "" | SQL 接続で SQLite ファイルを開ける親ディレクトリ (空 = SQLite 接続を無効化) |
TOOL_APPROVAL_WAIT_SEC | 600 | tool の実行の承認を待つ最大秒数 (超えたら拒否として扱う)。待つ間は会話の stream と tool の処理が残り続けるので、放置された承認を 10 分で片付ける。空または 0 = 上限なし |
TOOL_KEEPALIVE_INTERVAL | 10 | chat stream の keepalive 間隔秒 (= 承認待ち/LLM 無音/tool 実行中の heartbeat) (1 以上) |
TOOL_LOOP_GUARD_MAX_REPEATS | 4 | 同じ tool を同じ引数で呼んだ回数がこれに達したら打ち切る (3 回までは再試行として通す)。小さいモデルが同じ呼び出しを繰り返してMAX_TOOL_ROUNDS を使い切るのを、承認する人がいない経路でも止めるため。空 = 打ち切らない |
CLOUD_OP_MAX_ATTEMPTS | 3 | 外部 HTTP (cloud 系 pipeline operator・OAuth の接続フォルダ) の試行回数 (429 / 5xx・通信エラーでやり直す。Retry-After に従い最大 60 秒待つ)。1 でやり直さない (1 以上) |
UPLOAD_PROGRESS_TTL_SEC | 3600 | RAG 取込進捗エントリの保持秒数 (= ポーリング用 in-memory レジストリの TTL) |
TOOL_TASK_TIMEOUT_SEC | 上限なし | サブタスク (run_task) 1 件の回答を待つ最大秒数 (超えたらそこまでで打ち切って親に伝える) |
TOOL_TASK_MAX_PARALLEL | 4 | 親が同時に出したサブタスク (run_task) を並列に走らせる上限 (超えた分は空きを待って順に)。手元の 1 台の LLM サーバーで他の利用者の会話の生成を詰まらせないため 4 (Claude Code は 10) |
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 | 上限なし | gateway chat の会話履歴保持ターン数 (超えた分は要約に畳む) |
GATEWAY_IMAGE_FETCH_ALLOW_PRIVATE | 1 | gateway chat の外部画像 URL 取得で private (社内) アドレスを許可する。1=許可 (既定、社内 API 基盤なので) / 0=グローバルのみ。link-local (cloud metadata) は常に拒否、loopback は OUTBOUND_ALLOW_LOOPBACK に従う |
FORWARDED_ALLOW_IPS | "" | X-Forwarded-* ヘッダを信頼するプロキシの IP (',' 区切り、'*' で全て)。リバースプロキシ配下ではそのプロキシの IP を指定する。空 = uvicorn の既定 (127.0.0.1) |
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。空 = 無効。変更は再起動で反映)。Linux の systemd ではサービスの異常終了も知らせる (止まった時だけ。繰り返しは ALERT_SERVICE_EXIT_REPEAT_SEC) |
ALERT_SERVICE_EXIT_REPEAT_SEC | 14400 | サービスが落ち続けて起こし直しを繰り返す間に、異常終了の通知を再送する間隔 (秒)。既定は Alertmanager の repeat_interval と同じ 4 時間。0 = 落ちるたびに送る |
ALERT_KEY_BUDGET_REPEAT_SEC | 86400 | API キーの月次トークン上限 (80% / 100%) の通知を、同じキーに再送する間隔 (秒)。月の上限は 1 日で大きく変わらないので 1 日。0 = 評価のたびに送る |
ALERT_MCP_ERROR_REPEAT_SEC | 14400 | カスタム MCP server のエラーの通知を、エラーが続く間に再送する間隔 (秒)。既定は Alertmanager の repeat_interval と同じ 4 時間。0 = 評価のたびに送る |
ALERT_LLM_DOWN_REPEAT_SEC | 3600 | ローカル LLM に届かない通知を、届かない間に再送する間隔 (秒)。全員のチャットが止まる障害なので Alertmanager の 4 時間より短く 1 時間。0 = 評価のたびに送る |
ALERT_PIPELINE_QUEUE_REPEAT_SEC | 3600 | pipeline の実行待ちの滞留の通知を、滞留が続く間に再送する間隔 (秒)。全部の自動処理が止まる障害なので Alertmanager の 4 時間より短く 1 時間。0 = 評価のたびに送る |
ALERT_EVENT_OUTBOX_REPEAT_SEC | 3600 | 未配送イベントの滞留の通知を、滞留が続く間に再送する間隔 (秒)。イベントで動く処理が全部止まる障害なので Alertmanager の 4 時間より短く 1 時間。0 = 評価のたびに送る |
ALERT_CHECK_INTERVAL_SEC | 900 | アラート条件の評価間隔 (秒) (1 以上) |
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)。既定は空 = 付けない。埋め込みの許可先は FRAME_ANCESTORS (CSP frame-ancestors) が決め、対応ブラウザではそちらが優先される |
REQUEST_MAX_BODY_MB | 上限なし | 通常 API のリクエスト body 上限 (MB)。設定すると Content-Length の超過を 413 で断る。ファイルアップロード系 path は対象外 |
REQUEST_BODY_LIMIT_EXEMPT_PREFIXES | /api/files,/api/rag,/api/upload,/api/chat,/api/transcribe,/api/audio,/api/connectors/upload,/api/admin/backups/upload,/api/admin/models/import,/api/admin/license,/v1/files,/v1/audio,/v1/images,/dav | body 上限を適用しない path prefix (',' 区切り、= アップロードや添付を運ぶ経路) |
BACKUP_TIMEOUT_SEC | 1800 | DB のバックアップ (pg_dump) の制限時間 (秒)。pg_dump は既定で時間の上限が無く、固まった時に画面の処理が返らないため 30 分。大きい DB は引き上げる。空または 0 = 上限なし (旧名 ADMIN_BACKUP_TIMEOUT も読む) |
BACKUP_DOWNLOAD_LINK_TTL_SEC | 60 | バックアップのダウンロード用リンクの有効秒数 (画面のボタンで作り、1 回だけ使える。ブラウザが直接ディスクに保存するので大きいバックアップでもメモリに載せない) |
RESTORE_TIMEOUT_SEC | 900 | DB の復元 (pg_restore) の制限時間 (秒)。pg_restore は既定で時間の上限が無く、固まった時に処理が返らないため 15 分。大きい DB は引き上げる。空または 0 = 上限なし (旧名 ADMIN_RESTORE_TIMEOUT も読む) |
TRANSCRIBE_FFMPEG_TIMEOUT | 600 | ffmpeg / ffprobe 1 回の制限時間 (秒。文字起こし前の音声の変換、動画の情報取得・フレーム抽出・変換)。子プロセスは既定で時間の上限が無く、壊れたファイルで止まらないため 10 分。長時間の録音・動画は引き上げる。空または 0 = 上限なし |
UPDATE_LOG_TAIL_LINES | 上限なし | update/status が返す update.log 末尾の行数。空 = 全行 |
UPDATE_STATUS_PROBE_TIMEOUT | "" | update/status が自分の /api/ready (無ければ /api/health) を叩いて migration 失敗を拾う timeout 秒。空 = 送らず httpx の既定 (5 秒) |
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 / Microsoft 365 (クリックジャッキング対策。社内ポータルに埋め込む時はその origin を足す)。空 = 制限しない、'none' = 埋め込み禁止 |
PIPELINE_WORKER_POOL | default | この process の worker が claim する pool 名。本体は内蔵 worker に渡し、digitalbase worker は自分の pool として使う。pipeline 側の実行先 (workerPool、ADMIN が設定) と一致した run だけを取る |
PIPELINE_SCHEDULE_CATCHUP | 0 | 起動時に停止中に逃した cron tick があれば 1 回だけ実行する。1=有効 / 0=無効 |
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 venv / uv pip install) 1 回の制限時間 (秒)。子プロセスは既定で時間の上限が無く、依存の取得が固まった時に作成が終わらないため 10 分。空または 0 = 上限なし |
MCP_STARTUP_TIMEOUT | 60 | カスタム MCP server の起動 (tools/list に応える) を待つ秒数。起動しない server を待ち続けずエラーにするため 60 秒。空または 0 = 上限なし |
MCP_HEALTH_TIMEOUT | 3 | カスタム MCP server の health (tools/list) 応答待ち秒 (1 以上) |
MCP_STOP_GRACE | 5 | カスタム MCP server 停止時に SIGTERM 後 SIGKILL するまでの猶予秒 |
MCP_MONITOR_INTERVAL | 5 | カスタム MCP server のプロセス監視 (異常終了検知・再起動) の間隔秒 (1 以上) |
MCP_RESTART_LIMIT | 3 | カスタム MCP server が異常終了した時の自動再起動の上限回数 (10 分あたり、超えるとエラー状態で停止)。壊れた server が起動と異常終了を繰り返して CPU とログを使い続けないため 3。0 = 自動で再起動しない |
MCP_MEMORY_LIMIT_MB | 上限なし | カスタム MCP server 1 プロセスの仮想メモリ上限 MB (Linux / macOS のみ。torch 等の大きな依存は仮想空間を多く取るので余裕を持たせる) |
MCP_LOG_MAX_MB | 5 | カスタム MCP server の server.log の上限 MB (起動時に末尾だけ残して切り詰め、画面で読むのも末尾のこの量まで)。server が出し続けるログでディスクを埋めないため 5MB (旧名 MCP_LOG_MAX_BYTES も読む) |
MCP_PORT_BASE | 8800 | カスタム MCP server に自動採番する localhost port の開始値 |
システム (ファイル / 外部ディレクトリ)
| 変数 | 既定値 | 説明 |
|---|---|---|
LAKE_EXTENSION_DIR | "" | DuckDB 拡張 (ducklake / postgres) の置き場 (空 = DuckDB の既定。閉域では配布物に同梱した場所を指す) |
FS_WATCH_ENABLED | 1 | 外部 dir (EXTERNAL_DATA_DIRS) の変更を監視し file.uploaded/file.deleted を発火する。1=有効 / 0=無効 |
FS_WATCH_SETTLE_SEC | 2 | 外部 dir 監視: size/mtime がこの秒数変化しなければ書込完了とみなす (旧名 FS_WATCH_SETTLE_SECONDS も読む) |
FS_WATCH_POLLING | 0 | 外部 dir 監視を polling 方式にする (NFS/SMB mount など OS 通知が届かない場所向け)。1=polling / 0=OS 通知 |
FS_WATCH_CATCHUP | 0 | 外部 dir 監視: 起動時に停止中に置かれた/更新されたファイルを走査して file.uploaded を発火する。1=有効 / 0=無効 |
FS_WATCH_CATCHUP_MAX_FILES | 上限なし | 外部 dir 監視: 起動時の追いつき走査で発火する件数の上限 (超過分は warning のみ) |
FS_WATCH_EMITTED_MEMORY | 4096 | 外部 dir 監視: 重複通知を防ぐために覚えておく通知済みファイルの件数 (古い順に忘れる) |
FS_WATCH_POLL_INTERVAL | 5 | 外部 dir 監視 (polling 方式) の走査間隔 (秒) (1 以上) |
FILE_STREAM_CHUNK_BYTES | 65536 | file connector streaming 読込の chunk バイト数 (1 以上) |
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_GDRIVE_CHUNK_SIZE_MB | 8 | Google Drive の分割アップロード (5MB を超えるファイル) で 1 回に送る大きさ (MiB)。既定は rclone と同じ 8。アップロード 1 件ごとにこの 2 倍程度のメモリを使う (一時ファイルには書かない) (1 以上) |
CONNECTOR_DROPBOX_CHUNK_SIZE_MB | 48 | Dropbox でこの大きさを超えるファイルを分割アップロードする時の 1 回の大きさ (MiB、150 以下)。既定は rclone と同じ 48。アップロード 1 件ごとにこの 2 倍程度のメモリを使う (一時ファイルには書かない) (1 以上) |
CONNECTOR_BOX_UPLOAD_CUTOFF_MB | 50 | Box でこの大きさを超えるファイルを分割アップロードにする境目 (MiB。Box は 20MB 未満のファイルを分割できない)。既定は rclone と同じ 50。分割の 1 回の大きさは Box が決める (part_size)。大きさの分からない流れは、この大きさまではメモリ (アップロード 1 件ごとに最大この大きさ)、超えた分は OS の一時フォルダ (TMPDIR) に書き出してから送るので、そこにファイル全体が入る空きが要る (1 以上) |
CONNECTOR_ONEDRIVE_CHUNK_SIZE_MB | 10 | OneDrive / SharePoint の分割アップロード (4MiB を超えるファイル) で 1 回に送る大きさ (MiB、320KiB の倍数に切り捨て、SharePoint は 250 以下)。既定は rclone と同じ 10。アップロード 1 件ごとにこの大きさのメモリを使う。大きさの分からない流れは 4MiB を超えた分を OS の一時フォルダ (TMPDIR) に書き出してから送るので、そこにファイル全体が入る空きが要る (1 以上) |
CONNECTOR_LIST_MAX_ITEMS | 上限なし | OAuth 接続 (Drive/OneDrive/SharePoint/Box/Dropbox) の 1 フォルダ取得件数上限 |
CONNECTOR_NET_TIMEOUT | 10 | 外部接続の待ち時間 (秒。接続フォルダ・通知・メール送信・MQTT・接続テスト・Web 検索と本文取得・API (gateway) の画像 URL 取得・アップデート確認・LDAP サーバーへの接続と応答)。ライブラリの既定は上限なしや数分のものがあり、届かない接続先で画面や pipeline が固まるため 10 秒。DB (SQL 画面・pipeline の SQL を含む) / 検索エンジンへのクエリは接続にだけ掛け、応答の待ちは接続先の設定に任せる。空または 0 = 上限なし (接続フォルダはライブラリの既定のまま) (旧名 WEB_SEARCH_TIMEOUT / GATEWAY_IMAGE_FETCH_TIMEOUT / UPDATE_CHECK_TIMEOUT / SQL_CONNECT_TIMEOUT / LDAP_TIMEOUT も読む) |
CONNECTOR_PARTIAL_SWEEP_HOURS | 0 | 接続フォルダ (SFTP / SMB / FTP / WebDAV) への書き込みで切断して残った書き込み途中の一時ファイル (.名前.part-xxxx) を、更新からこの時間 (時間) を過ぎたら次の書き込みの時に消す (書いたフォルダの中だけ、同じフォルダは 1 時間に 1 回)。0 で消さない (一覧には出ない) |
CONNECTOR_FTP_MDTM_RECENT_HOURS | 48 | FTP の一覧で、更新がこの時間 (時間) 以内のファイルだけ MDTM で秒単位の更新時刻を引き直す (LIST は分単位・サーバーの地方時のことがある)。書き込み中の判定と 1 日 1 回の監視に要る範囲。0 で引き直さない |
AUDIT_ARCHIVE_DIR | <データの置き場>/audit-archive | 監査ログを削除前に退避する JSONL の保存先ディレクトリ |
システム (文書変換)
| 変数 | 既定値 | 説明 |
|---|---|---|
SOFFICE_TIMEOUT | 180 | Office 文書→PDF 変換 1 回の timeout 秒 (= 壊れた文書で固まった soffice が取込を止め続けない) |
システム (ライセンス)
| 変数 | 既定値 | 説明 |
|---|---|---|
PURCHASE_URL | https://digital-base.co.jp | ライセンスの画面に出す購入・更新の問い合わせ先 URL (販売店経由で買う場合はその窓口に変えられる) |
PUBLIC_KEY_PATH | "" | ライセンス署名検証用 RSA 公開鍵 path。空 = 製品に埋め込まれた鍵を使う (通常設定不要) |
LICENSE_RECHECK_INTERVAL_SEC | 3600 | ライセンスの再評価間隔 (秒)。使われた時に前回の評価からこの秒数が過ぎていれば裏で再評価する (= 期限切れ・差し替えを再起動なしに反映。使われていない間は評価しない) |
LICENSE_WARN_DAYS | 0 | ライセンス期限のこの日数前から管理画面 / health に警告を出す (0=期限前の警告を出さない) |
LLM (共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
TRANSFORMERS_OFFLINE | "" | 1 で transformers lib もオフライン化 (= HF_HUB_OFFLINE と併用推奨) |
TORCHINDUCTOR_CACHE_DIR | "" | torch.compile (inductor) の cache dir (= 空なら <VLLM_CACHE_ROOT>/torchinductor。既定の /tmp は再起動で消え毎回 compile し直す。vLLM・SGLang 共通) |
LLM_EMBED_API_KEY | "" | [機密] embedding エンドポイントだけ別 key の場合に設定 |
LLM_CHARS_PER_TOKEN | 1.2 | 文脈予算 (添付/RAG/web をどこまで prompt に入れるか) の文字→token 換算係数。日本語主体 1.2 (既定) / 英語主体 3.0 程度。小さいほど安全側 |
CHAT_HISTORY_LIMIT | 20 | chat で LLM に渡す直近履歴 (メッセージ数) の既定 (= ユーザー設定の初期値。request / 設定で上書き可) |
LLM_MODELS_TTL_SEC | 30 | 接続先が名乗る served model 一覧のキャッシュ秒数 (= この間は /v1/models を聞き直さない。画面の model 一覧と API (gateway) の model 名の確認で共通) (旧名 VLLM_MODELS_TTL / GATEWAY_MODEL_LIST_TTL_SEC も読む) |
CLOUD_MAX_TOKENS_CAP | 64000 | Anthropic に送る max_tokens の上限 (= モデルの出力上限を超えると 400 になる。既定 64000 は出力上限 64K のモデルでも通る値。出力上限が大きいモデルで長い出力が要る時だけ上げる) |
LLM_MIN_OUTPUT_TOKENS | 256 | 送る前に確保する最小の出力 token 数。入力だけで窓がこれ未満しか残らない時は送らずに文脈超過のエラーにする (= server に送っても数 token で打ち切られるだけなので)。文脈予算は出力長が分からない時に窓の 1/4 を出力に取っておき、それがこれより小さければこの値 |
LLM_CONTEXT_MARGIN_TOKENS | 64 | max_tokens と文脈予算を窓に収める時に残す余白 token (= /tokenize が使えず見積で数えた時の誤差と、chat template が足す token の分) |
EMBED_REQUEST_TIMEOUT_SEC | 60 | embedding 1 リクエストの HTTP timeout 秒 (ローカル / OpenAI 互換 / Cloud 共通) (旧名 CLOUD_EMBED_TIMEOUT も読む) |
SQL_AI_SAMPLE_CELL_MAX_CHARS | "" | AI SQL 生成 prompt のサンプル行のセル 1 個の上限文字数 (= embedding 等の巨大セルで文脈を使い切らない)。空 (既定) = model の文脈予算をサンプルのセル数で割った値 |
CHAT_ATTACH_INJECT_MAX_CHARS | "" | chat 添付テキストを全文 prompt 注入する上限文字数。空 (既定) = model の文脈予算 (接続先 server の窓・LLM_CONTEXT_LENGTH、どちらも不明なら RAG_CONTEXT_BUDGET_CHARS) から自動。超過時は session RAG 検索参照に自動切替 (先頭は予算の半分まで注入) |
CHAT_CONNECT_TIMEOUT_SEC | 10 | ローカル / OpenAI 互換の LLM server と reranker への接続の timeout 秒 (chat・AI での生成 (emit)・ベンチマーク・reranker。chat は送信 (write) と接続待ち (pool) にも使い、応答の read は無制限のまま)。止まった server を即エラーにする |
CHAT_PROMPT_MAX_CHARS | 上限なし | chat 1 リクエストの prompt 文字数上限 (超過は 413) |
CHAT_MAX_IMAGES | 上限なし | chat 1 リクエストの画像枚数上限 (直接添付の images が超過なら 413。PDF ページ画像は残り枠に切り詰めて warning) |
CHAT_ATTACHMENTS_MAX_MB | 上限なし | chat 1 リクエストの添付 (attachments + images) 合計 MB 上限 (超過は 413) |
TABLE_AI_MAX_CELLS | 上限なし | テーブルの「AIで編集」で全行を prompt に載せてよいセル数 (行×列) の上限。超えたら列とサンプルだけ。上限なしでは全行が文脈予算 (TABLE_AI_MAX_CHARS) に収まるかだけで決める |
TABLE_AI_SAMPLE_ROWS | 上限なし | テーブルの「AIで編集」で全行を載せない時のサンプルの行数の上限。空 = 文脈予算 (TABLE_AI_MAX_CHARS) に収まるだけ先頭から |
TABLE_AI_MAX_CHARS | "" | table / 文書の AI 編集で 1 回の prompt に入れる本文文字数の上限。空 (既定) = 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 監督 (死活確認と自動再起動) の間隔秒 (1 以上) |
ENGINE_HEALTH_FAIL_THRESHOLD | 3 | 連続で health check に失敗したら engine を再起動する回数 (= process が生きていても応答しない hang 対策) |
ENGINE_RESTART_BACKOFF_MAX_SEC | 600 | 自動再起動の指数 backoff 上限秒 (= この秒数だけ健全に動けば backoff を初期値へ戻す) |
ENGINE_TENSOR_PARALLEL_MAX | 8 | tensor parallel 自動決定 (ENGINE_TENSOR_PARALLEL が空) の上限 (= GPU 数以下の最大 2 の冪を採用) |
LLM (vLLM / SGLang 共通)
| 変数 | 既定値 | 説明 |
|---|---|---|
ENGINE_CHAT_ENDPOINTS | "" | chat の endpoint pool (= カンマ区切り URL、空なら VLLM_BASE_URL / SGLANG_BASE_URL) (旧名 VLLM_CHAT_ENDPOINTS / SGLANG_CHAT_ENDPOINTS も読む) |
ENGINE_EMBED_ENDPOINTS | "" | embed の endpoint pool (= カンマ区切り URL、空なら VLLM_EMBED_BASE_URL / SGLANG_EMBED_BASE_URL) (旧名 VLLM_EMBED_ENDPOINTS / SGLANG_EMBED_ENDPOINTS も読む) |
ENGINE_VISION_ENDPOINTS | "" | vision の endpoint pool (= カンマ区切り URL、空なら ENGINE_VISION_BASE_URL) (旧名 VLLM_VISION_ENDPOINTS / SGLANG_VISION_ENDPOINTS も読む) |
ENGINE_API_KEY | "" | [機密] ローカル engine へ proxy 経由で認証する時だけ設定 (= 通常空) (旧名 VLLM_API_KEY / SGLANG_API_KEY も読む) |
ENGINE_EMBED_API_KEY | "" | [機密] ローカル engine の embed server 用 API key (旧名 VLLM_EMBED_API_KEY / SGLANG_EMBED_API_KEY も読む) |
ENGINE_START_MAX_RETRIES | 3 | auto-start 時のローカル engine 起動 retry 回数 (旧名 VLLM_START_MAX_RETRIES / SGLANG_START_MAX_RETRIES も読む) |
ENGINE_START_RETRY_DELAY | 10 | ローカル engine 起動 retry の待機秒 (旧名 VLLM_START_RETRY_DELAY / SGLANG_START_RETRY_DELAY も読む) |
ENGINE_STARTUP_TIMEOUT | 3600 | ローカル engine の server の ready 待ち timeout 秒 (= 大型 model / torch compile は load が長い) (旧名 VLLM_STARTUP_TIMEOUT / SGLANG_STARTUP_TIMEOUT も読む) (1 以上) |
ENGINE_SHUTDOWN_JOIN_TIMEOUT | 30 | 停止時にローカル engine の起動 thread の終了を待つ上限秒 (= load 途中の停止でぶら下がらせない、最大 120) (旧名 VLLM_SHUTDOWN_JOIN_TIMEOUT / SGLANG_SHUTDOWN_JOIN_TIMEOUT も読む) (1 以上) |
ENGINE_EMBED_PROBE_RETRY_INTERVAL | 30 | embedding server 不在判定を再確認するまでの秒数 (= load 中の判定を引きずらない) (旧名 VLLM_EMBED_PROBE_RETRY_INTERVAL / SGLANG_EMBED_PROBE_RETRY_INTERVAL も読む) |
LLM (vLLM)
| 変数 | 既定値 | 説明 |
|---|---|---|
DCGM_PORT | 9400 | DCGM exporter port (= host は endpoint から導出、best-effort で温度/電力 overlay) |
VLLM_EXTRA_ARGS_EMBED | "" | embed server 起動の追加引数 (スペース区切り) |
VLLM_EXTRA_ARGS_VISION | "" | vision server 起動の追加引数 (スペース区切り) |
VLLM_CACHE_ROOT | "" | vLLM の cache root (= 空なら HF_HOME の隣 <HF_HOME の親>/vllm、HF_HOME 未設定なら ~/.cache/vllm) |
LLM (SGLang)
| 変数 | 既定値 | 説明 |
|---|---|---|
SGLANG_ATTENTION_BACKEND | "" | attention backend 指定 (= --attention-backend。例: flashinfer, triton。空なら SGLang 既定) |
SGLANG_EXTRA_ARGS_EMBED | "" | embed server 起動の追加引数 (スペース区切り) |
SGLANG_EXTRA_ARGS_VISION | "" | vision server 起動の追加引数 (スペース区切り) |
LLM (Ollama)
| 変数 | 既定値 | 説明 |
|---|---|---|
OLLAMA_NUM_PARALLEL | "" | Ollama 同時並列実行数 (= 空ならデフォルト) |
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 互換エンドポイント) |
ANTHROPIC_BASE_URL | https://api.anthropic.com | Anthropic API の base URL (= 社内の LLM gateway や proxy 経由なら変更。/v1/messages はこの後ろに付く) |
GEMINI_BASE_URL | https://generativelanguage.googleapis.com/v1beta | Gemini API の base URL (= proxy 経由なら変更。OpenAI 互換の口はこの後ろの /openai) |
RAG 設定
| 変数 | 既定値 | 説明 |
|---|---|---|
RAG_QUERY_REWRITE | true | RAG検索前に会話履歴で質問を自己完結クエリへ書き換え (= 「その表の詳細は?」等の追い質問対応) |
RAG_AUTO_FILTER | true | ナレッジにメタデータ項目が定義されていれば、質問中の条件 (案件 ID・期間 等) を LLM で抽出して検索を絞り込む (= 0 件なら絞り込み無しで再検索) |
RAG_QUERY_REWRITE_TIMEOUT | 20 | 検索の前に質問を理解する LLM 呼び出し (質問の書き換え・絞り込み条件の抽出・Web 検索の語の決定) を待つ秒数。超えたら原文のまま検索して回答を続け、利用者を長く待たせないため 20 秒。空または 0 = 上限なし |
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 検索でベクトル・キーワードそれぞれから集める候補の倍率 (取得件数 × この値)。統合 (RRF) の後に上位を選ぶので、取得件数より広く集めて片方だけの一致を落とさないため。既定 6 は独自の値 (評価の記録は無い) |
RAG_HYBRID_CANDIDATE_MIN | 30 | hybrid 検索で集める候補の最小数 (取得件数が少ない時も、統合の前にこれだけは集める)。既定 30 は RERANK_TOP_N と同じ |
RAG_RRF_K | 60 | RRF 融合の rank 平滑化定数 (= 大きいほど上位偏重が緩む) |
RAG_METADATA_AI_MAX_CHARS | 上限なし | metadata AI 自動抽出に渡す文書冒頭の最大文字数 |
RAG_MAX_PAGES | 上限なし | RAG 取込 / vision 抽出で画像化 (Vision・OCR) する PDF の最大ページ数。text 層の抽出は PDF_TEXT_MAX_PAGES |
PDF_TEXT_MAX_PAGES | 上限なし | PDF の text 層を抽出する最大ページ数 (画像化しないので RAG_MAX_PAGES より多く読める) |
RAG_EMBED_FLUSH_CHUNKS | 200 | RAG取込でembed→DB保存をflushするchunk数 (= 巨大文書でも全vectorを貯めずメモリ一定) (1 以上) |
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 の下限 (実際は候補数との大きい方、pgvector の上限 1000 まで)。pgvector の既定 40 より大きい 100 にして、ナレッジ・メタデータで絞った検索でも取りこぼしを減らす (大きいほど recall が上がり遅くなる) |
HNSW_ITERATIVE_SCAN | relaxed_order | pgvector 0.8+ の iterative_scan (off|relaxed_order|strict_order。共有テーブルの過剰除外を回避。0.8 では自動で有効、GUC 非対応(0.6/版ズレ)環境は SAVEPOINT で自動 skip=無害) |
HNSW_MAX_SCAN_TUPLES | "" | pgvector 0.8+ の max_scan_tuples (= iterative_scan で読み進める行数の上限)。空 = 送らず pgvector の既定 (20000) のまま。共有索引で絞った検索の件数が足りない時に 100000 などを指定 |
HNSW_SCAN_MEM_MULTIPLIER | "" | pgvector 0.8+ の scan_mem_multiplier (= iterative_scan が使うメモリの上限を work_mem の何倍にするか)。空 = 送らず pgvector の既定 (1) のまま。HNSW_MAX_SCAN_TUPLES を上げても件数が足りない時に 2〜4 などを指定 |
HNSW_MAINTENANCE_WORK_MEM | "" | HNSW 索引を作る時の maintenance_work_mem (例 1GB)。空 = 送らず DB の設定 (Postgres 既定 64MB) のまま。索引が収まらないと作成が大きく遅れるので、大きいナレッジに後から索引を作る時に指定。並列で作る時はこの量の共有メモリを使うので、Docker の Postgres (既定 64MB) では shm_size もこの値以上にする (足りないと索引の作成に失敗し、ログに出る) |
RAG_EMBED_RETRY | 1 | RAG取込で chunk の embed 失敗時の再試行回数 (= 0 で再試行なし。部分失敗は結果に chunks_embed_failed で明示) |
RAG_HYBRID_KEYWORD_WEIGHT | 1.0 | hybrid 検索でキーワード一致のみ (vector 候補に無い) chunk の RRF 重み (既定 1.0 = vector 候補と同格。Elasticsearch などの RRF と同じ。下げるとキーワードだけの一致が候補に入りにくくなる) |
RAG_HYBRID_MIN_ALNUM_CHARS | 3 | hybrid 検索のキーワードに使う英数字の語の最短の長さ (英数字の文字数)。既定 3 = pg_trgm の索引が効く長さ。2 にすると図面の D1・X1 のような 2 文字の記号も拾うが、索引が効かずナレッジの全件を読むので遅くなる |
RAG_HYBRID_MIN_JAPANESE_CHARS | 3 | hybrid 検索のキーワードに使う日本語の語の最短の長さ (漢字・カタカナが続く文字数)。既定 3 = pg_trgm の索引が効く長さ。2 にすると「温度」のような 2 文字の語も拾うが、索引が効かずナレッジの全件を読むので遅くなる |
RAG_HYBRID_MAX_TERMS | 8 | hybrid 検索のキーワードに使う語の最大数 (英数字の語・日本語の語を合わせて。英数字の語が先、質問の前から。0 = キーワード検索を使わない)。語ごとに索引を引くので、増やすと拾い漏れが減り検索は遅くなる |
RAG_CONTEXT_BUDGET_CHARS | 120000 | chat に注入する参照文脈 (添付+RAG+web) の合計文字数上限 (= 文脈窓が分からない時 (接続先 server が窓を名乗らず LLM_CONTEXT_LENGTH も未設定) の既定。超過は類似度の低い chunk から落とす) |
RAG_GROUNDING_MODE | prefer | 参照文脈 (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 | 上限なし | RAG に取り込むファイル数の上限: ファイル/フォルダ指定の一括取込 (POST /api/upload/from-files) の 1 job (= フォルダ展開後に適用、超過分は打ち切り) と、pipeline の load_files_to_rag の 1 run (超過は error) (旧名 PIPELINE_RAG_FILES_MAX も読む) |
RAG_EXPORT_MAX_CHUNKS | 上限なし | RAG export で 1 回に書き出せる chunk 数上限 (全量をメモリに載せるので、小さい機で入れる。超過は 413) |
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 モードでも、パスワードを持つローカルアカウントのパスワードログインを許可する。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_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_LANGUAGE | ja | 検索結果の言語・地域 (ISO 639-1、例 ja / en)。既定 ja は日本向けの製品の既定 (decisions.md)。各エンジンの形式に直して渡す (DuckDuckGo の kl、SearXNG の language、Brave の search_lang・country、Serper の hl・gl、Tavily の country)。空 = 送らずエンジンの既定 |
WEB_SEARCH_DOMAIN_FILTER | "" | 検索結果のドメインの絞り込み (',' 区切り)。example.com は許可 (1 つでも書くと許可したドメインだけ)、-example.com は除外。サブドメインも含む。空 = 絞らない |
WEB_SEARCH_MAX_QUERIES | 3 | 1 回の質問で作る検索語の最大数 (モデルが要否と検索語を決め、不要と判断すれば検索しない) |
WEB_SEARCH_SNIPPET_MAX_CHARS | 上限なし | Web 検索結果 snippet の最大文字数 |
WEB_SEARCH_FETCH_PAGES | 5 | 検索結果から本文を読むページ数 (全検索語の合計、上位から。0 = 本文を読まず snippet だけ) |
WEB_SEARCH_PAGE_MAX_CHARS | 上限なし | 1 ページから読む本文の最大文字数 (この中から質問に近い部分を選んで渡す) |
WEB_SEARCH_PAGE_MAX_MB | 10 | 1 ページ (HTML / PDF) をダウンロードする上限 MB (= 巨大なファイルを全部メモリに載せない。超えた HTML はそこまで、PDF は読まない) |
WEB_SEARCH_TOP_K | 8 | 読んだ本文を chunk に分け、質問に近い順 (reranker があれば並べ替え後) に LLM へ渡す chunk 数 |
OAuth
| 変数 | 既定値 | 説明 |
|---|---|---|
OAUTH_UI_REDIRECT | /connections?tab=api | OAuth 完了後の UI redirect path |
SECRET_ENCRYPTION_KEY | "" | [機密] secret 暗号化 key (OAuth token / API 接続 / API key)。Fernet 形式 (url-safe base64 32B) ならそのまま、他の文字列は HKDF で鍵に派生。空なら JWT_SECRET から派生。変えると保存済みの秘密を復号できなくなる (旧名 OAUTH_ENCRYPTION_KEY も読む) |
OAUTH_REFRESH_THRESHOLD | 300 | OAuth token の期限前 refresh 開始秒 |
OAUTH_HTTP_TIMEOUT | 30 | OAuth のトークン取得・交換・更新の待ち時間 (秒。接続の OAuth、REST の client_credentials、ログインの IdP)。httpx の既定 5 秒では混んだ IdP で失敗するため 30 秒。空または 0 = 上限なし |
OAUTH_STATE_TTL_SEC | 600 | 外部サービスの認可画面で操作を待つ秒数 |
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 | 上限なし | タイル分割 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 系の既定サンプルレートに合わせる) |
画像生成
| 変数 | 既定値 | 説明 |
|---|---|---|
IMAGE_GEN_API | "" | つなぎ先の種類。空ならモデル名から自動判定。指定する時は openai / xai / gemini / a1111 (= Stable Diffusion WebUI 形) |
IMAGE_GEN_API_KEY | "" | [機密] 画像用に別の API キーを使う時だけ入れる。空ならつなぎ先のクラウド API キーを使う。IMAGE_GEN_BASE_URL の自前サーバーには、このキーを入れた時だけ送る (a1111 の --api-auth は user:pass の形) |
IMAGE_GEN_TIMEOUT_SEC | 600 | 画像 1 回を待つ上限 (秒)。既定は OpenAI の SDK と同じ 600 秒 (= 生成は数十秒〜数分かかる) |
IMAGE_ATTACHED_PER_CHAT | 0 | 会話ごとに残す添付画像の数 (超えたら古い番号から消す。0=全部残す) |
動画生成
| 変数 | 既定値 | 説明 |
|---|---|---|
VIDEO_GEN_API | "" | つなぎ先の種類。空ならモデル名と URL から自動判定。指定する時は xai / gemini / openai (= /v1/videos の形のサーバー) |
VIDEO_GEN_API_KEY | "" | [機密] 動画用に別の API キーを使う時だけ入れる。空ならつなぎ先のクラウド API キーを使う。VIDEO_GEN_BASE_URL の自前サーバーには、このキーを入れた時だけ送る |
VIDEO_GEN_RESOLUTION | "" | 動画の画質。480p / 720p / 1080p (対応モデルのみ)。空 = 送らない (接続先・モデルの既定) |
VIDEO_GEN_TIMEOUT_SEC | 3600 | 動画 1 本の完成を待つ上限 (秒)。超えたら失敗として扱う (= 接続先が完成も失敗も返さないジョブを生成中のまま残さない。生成は通常数分〜十数分) |
VIDEO_ATTACHED_PER_CHAT | 0 | 会話ごとに残す添付動画の数 (超えたら古い番号から消す。0=全部残す) |
音声 / 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 回の読み上げ要求の最大文字数 (= OpenAI の /audio/speech の上限 4096 字。VOICEVOX にも同じ値を使う。画面は文単位で送るので通常は届かない) |
CAD
| 変数 | 既定値 | 説明 |
|---|---|---|
CAD_ENGINE_DIR | <データの置き場>/cad-engine | CAD エンジン (build123d / OpenCascade と依存、約 600MB) を入れる場所。管理画面の CAD の欄の「インストール」で uv がここに環境を作る |
CAD_BUILD_TIMEOUT_SEC | 120 | 形を作る・書き出す 1 回の制限時間 (秒)。OpenCascade は途中で止められないので、超えたらエンジンのプロセスを止めて作り直す。最初の 1 回はエンジンの読み込み (数秒) を含む |
CAD_INSTALL_TIMEOUT_SEC | 900 | CAD エンジンを入れる (uv venv / uv pip install) 1 回の制限時間 (秒)。依存の取得が固まった時に終わらないため 15 分 |
CAD_MAX_FEATURES | 300 | 1 つのモデルに置けるフィーチャの数の上限 (形を作る時間とメモリを守る) |
CAD_MAX_PARAMS | 100 | 1 つのモデルに置けるパラメータの数の上限 |
CAD_MAX_POINTS | 400 | 輪郭・穴の位置・経路の点の数の上限 (1 つのフィーチャあたり)。図面から読んだ輪郭もこの数までにする |
CAD_MESH_TOLERANCE | 0.05 | 3D 表示の面を三角形に分ける細かさ (mm、曲面と三角形のずれの許容)。小さいほど滑らかで重い |
CAD_MESH_ANGULAR_TOLERANCE | 0.2 | 3D 表示の曲面を分ける角度の許容 (ラジアン)。小さいほど滑らかで重い |
CAD_WORKER_CACHE | 4 | エンジンのプロセスが覚えておく作った形の数 (同じモデルの図面・書き出しで作り直さない。多いほどメモリを使う) |
CAD_DRAWING_MAX_ENTITIES | 5000 | 図面 (DXF) を図ごとに分けて読む時に見る線・円・弧の数の上限 (大きな図面で時間とメモリを守る) |
CAD_DRAWING_MAX_VIEWS | 12 | 図面から AI に渡す図 (正面図・側面図・断面など) の数の上限 |
CAD_DRAWING_MAX_CIRCLES | 60 | 図面の 1 つの図から AI に渡す円 (穴) の数の上限 |
CAD_DRAWING_MAX_TEXTS | 400 | 図面から読む文字と寸法の数の上限 (それぞれ)。RAG の取込と AI に渡す文章の長さを守る |
CAD_DRAWING_IMAGE_PX | 1600 | 画像を読めるモデルに渡す図面の画像の幅 (px) |
CAD_STRETCH_STEPS | 40 | 面を動かす (move_face) 時に、立体を切る位置を探す断面の数 (面から奥までを等分。多いほど細かく探せて遅い) |
CAD_TOOL_MAX_FEATURES_SHOWN | 60 | CAD の tool の結果で AI に見せるフィーチャの数の上限 (それより後ろは数だけ) |
CAD_TOOL_MAX_FACES_SHOWN | 40 | AI に見せる面の一覧・画面で選んだ面と辺の数の上限 |
CAD_DRAFTING_MAX_ITEMS_SHOWN | 300 | 図面 (DXF) を AI で直す時に AI に見せる要素の数の上限 (選んだ要素 → 文字 → そのほかの順。それより後ろは数だけ) |
リソース上限
| 変数 | 既定値 | 説明 |
|---|---|---|
TOOL_SHELL_SANDBOX | true | シェル実行ツールのファイル隔離 (Linux 5.13 以降: 読めるのはシステム領域とマシン全体の情報、書けるのは個人フォルダと選んだ共有・外部フォルダ (本人の権限どおり) だけ。false でも環境変数は渡さず、背景プロセスは止める) |
TOOL_SHELL_REQUIRE_SANDBOX | false | ファイル隔離が使えない環境 (古いカーネルなど) でシェル実行を失敗にする。false は警告だけで隔離なしに実行 |
TOOL_SHELL_NETWORK | false | シェル実行ツールから外部へ TCP 接続できるか (遮断は Linux 6.7 以降で効く) |
TOOL_SHELL_PASS_ENV | "" | シェル実行ツールに渡す環境変数の名前 (カンマ区切り。既定は何も渡さない。プロキシ設定など、管理者が渡してよいものだけ。PATH は本体の PATH を前に足す) |
TOOL_SHELL_EXTRA_READ_PATHS | "" | シェル実行ツールに追加で読ませる path (カンマ区切り。標準の場所に無いコマンドや設定を使う時) |
TOOL_SHELL_EXTRA_WRITE_PATHS | "" | シェル実行ツールに追加で書かせる path (カンマ区切り。個人フォルダと選んだ共有・外部フォルダ以外に出力が要る時) |
TOOL_RESULT_MAX_CHARS | 上限なし | tool が LLM に返す文字数の上限 (read_file / 共有フォルダの read・execute_shell と execute_python の出力・run_task の答え・run_workflow の結果。超過分は切り捨て)。上限なしでは model の文脈予算で切る (旧名 TOOL_FILE_READ_MAX_CHARS / PYTHON_OUTPUT_MAX_CHARS / TOOL_WORKFLOW_RESULT_MAX_CHARS も読む) |
FILE_READ_MAX_MB | 上限なし | ファイル 1 件をメモリに読む上限 MB (tool のリモート (S3 / Drive / SharePoint 等) とローカルの読込・vision 解析 (describe_file / pipeline の画像・動画 operator)・pipeline の source_file・ai_agent の添付。超過は読まずに明記) (旧名 TOOL_REMOTE_MAX_BYTES / TOOL_LOCAL_INLINE_MAX_BYTES / TOOL_DESCRIBE_MAX_BYTES / PIPELINE_FILE_SOURCE_MAX_MB / PIPELINE_AI_ATTACHMENT_MAX_MB も読む) |
TOOL_SEARCH_MAX_MATCHES | 上限なし | ファイル検索の tool (search_files / glob / grep) が返す match の最大数 (旧名 TOOL_SEARCH_FILES_MAX_MATCHES / TOOL_GLOB_MAX_MATCHES / TOOL_GREP_MAX_MATCHES も読む) |
TOOL_SEARCH_SNIPPET_MAX_CHARS | 上限なし | search_files / grep の match 行 snippet 最大文字数 |
TOOL_LIST_FILES_MAX_ENTRIES | 上限なし | list_files が返す件数の上限 (共有フォルダの一覧も同じ) |
TOOL_VECTOR_SEARCH_MAX_TOP_K | 上限なし | vector_search tool の top_k 上限 (画面の RAG top_k スライダーの上限も同じ) |
TOOL_DESC_SCOPE_MAX_ITEMS | 上限なし | tool description に埋め込む scope 内項目数の上限 (vector_search/query_dataset 等、超過分は件数のみ) |
TOOL_RESULT_MAX_ROWS | 上限なし | tool が LLM・画面に返す表の行数上限 (query_dataset / query_sql の結果 (tool が limit を指定しない時の行数も同じ)・call_api_operator の行・execute_python の DataFrame プレビュー・chat の SQL 結果テーブル) (旧名 TOOL_QUERY_DATASET_MAX_ROWS / TOOL_QUERY_SQL_MAX_ROWS / TOOL_PREVIEW_ROWS / PYTHON_DF_PREVIEW_ROWS / CHAT_TABLE_MAX_ROWS も読む) |
TOOL_DESCRIBE_HEAD_BYTES | 65536 | describe_file が CSV / TSV の列名と先頭の数行を見るために読む先頭のバイト数 (ファイル全体は読まない) |
PYTHON_SESSION_TTL | 1800 | execute_python session の保持 TTL 秒 |
PYTHON_SESSION_MAX | 30 | execute_python session の同時保持数上限 |
PIPELINE_AI_TEXT_MAX_CHARS | "" | AI op (transform_ai の reduce 等) が 1 回の prompt に入れるデータ文字数の上限。空 (既定) = model の文脈予算から自動 |
PIPELINE_PREVIEW_ROWS | 10 | 実行履歴に残す各 step の出力プレビューの行数 (run の記録が DB で膨らまないよう既定は先頭 10 行) |
PIPELINE_PREVIEW_CELL_CHARS | 2000 | 実行履歴の出力プレビューで 1 セルに残す最大文字数 (ファイル本文・LLM の出力で run の記録が膨らまないよう超過は切り詰め)。空 = 切らない |
PIPELINE_MAX_RETRIES | 上限なし | step の retry_on_fail で許す再試行回数の上限 (step の設定値はここで頭打ち) |
PIPELINE_RETRY_WAIT_MAX_MS | 上限なし | step の再試行待ち (指数 backoff) の 1 回あたりの上限ミリ秒 |
PIPELINE_PREVIEW_TIMEOUT_SEC | 上限なし | ワークフロー編集画面のステップ実行 (プレビュー) の上限秒。超えると中断して 504 |
PIPELINE_MAX_ITERATIONS | 10000 | 1 回の実行 (本線・loop の本体ごと) で動かす step 数の上限 (閉路は保存時に拒むが、loop の制御の誤りで止まらない時の guard) |
PIPELINE_AI_AGENT_MAX_CONCURRENCY | 上限なし | ai_agent op の行ごとの並列数の上限 (step の concurrency をここで頭打ちにする。LLM サーバー・DB の接続が足りない機で指定) |
EVENT_CHAIN_MAX_DEPTH | 3 | イベントで起動した pipeline が出したイベントで、さらに pipeline を起動する連鎖の段数の上限 (同じ pipeline へ戻る連鎖を止める guard。超えた分は起動せず警告ログ)。上限なしでは戻る連鎖も止まらない |
GATEWAY_QUERY_MAX_ROWS | 10000 | BI キーの REST (/v1/data/query) が 1 回に返す行数の上限 (応答の大きさとメモリを抑える。続きは offset で取る)。limit を省いた時の行数は SQL_TABLE_MAX_ROWS |
PIPELINE_SQL_STATEMENT_TIMEOUT_MS | "" | pipeline SQL operator の1文タイムアウト (ms、空=送らず接続先の既定。pg=statement_timeout。MySQL系は非対応) |
SQL_POOL_SIZE | "" | 外部 DB 接続 (SQL 画面・pipeline の SQL) の connection pool size (接続先ごと)。空 = 送らず SQLAlchemy の既定 (5) (旧名 PIPELINE_SQL_POOL_SIZE も読む) |
SQL_POOL_MAX_OVERFLOW | "" | 外部 DB 接続 (SQL 画面・pipeline の SQL) の pool overflow 上限 (接続先ごと)。空 = 送らず SQLAlchemy の既定 (10) (旧名 PIPELINE_SQL_MAX_OVERFLOW も読む) |
SQL_POOL_TIMEOUT | "" | 外部 DB 接続 (SQL 画面・pipeline の SQL) の pool から接続を取る待ち秒。空 = 送らず SQLAlchemy の既定 (30) |
SQL_POOL_RECYCLE | 300 | 外部 DB 接続 (SQL 画面・pipeline の SQL) を作り直す間隔秒。SQLAlchemy の既定 (-1 = 作り直さない) では DB・途中の機器が切った接続を掴み続けるので自前の値を持つ。0 = 作り直さない |
SQL_STATEMENT_TIMEOUT_MS | "" | SQL 画面の外部 DB 接続に掛ける 1 文のタイムアウト (ms、pg 系の statement_timeout。MySQL 系は非対応。非同期実行 (キャンセル可) も同じ)。空 = 送らず接続先の既定 (旧名 SQL_JOB_TIMEOUT_MS も読む) |
DUCKDB_MAX_MEMORY_MB | 4096 | DuckDB の SQL 1 本あたりのメモリ上限 (MB。ワークフローの transform_sql とデータレイクの SQL)。超える集計はディスクへ退避して続ける (遅くなるが落ちない)。pipeline の worker・LAKE_QUERY_WORKERS 本ごとに同時に動くので、DuckDB の既定 (RAM の 80%) のままだと並ぶと OOM になる。空 = 送らず DuckDB の既定 (旧名 LAKE_QUERY_MEMORY_MB も読む) |
DUCKDB_THREADS | "" | DuckDB 1 回あたりの並列スレッド数。空 = 送らず DuckDB の既定 (コア数)。ほかの処理と CPU を分けたい時に指定 |
LAKE_QUERY_THREADS | "" | データレイクの SQL 1 本あたりのスレッド数 (日次の保守も同じ)。空 = コア数の半分 (LAKE_QUERY_WORKERS 本が同時に動くので、DuckDB の既定 = コア数 ずつだと CPU を取り合う) |
LAKE_QUERY_WORKERS | 2 | データレイクの SQL を同時に実行する worker プロセス数 (超えた分は待つ。メモリ上限 × この数が同時に使われうる) (1 以上) |
LAKE_QUERY_TIMEOUT_SEC | 上限なし | データレイクの SQL 1 本の時間上限 (秒、SQL 画面の非同期実行も含む)。超えると worker を止める |
LAKE_TEMP_MAX_GB | "" | データレイクの SQL がディスクへ退避する一時ファイルの上限 (GB)。空 = 送らず DuckDB の既定 (一時ディレクトリのあるディスクの空きの 90%) |
SQL_EXACT_COUNT_MAX | 100000 | 行数を実COUNT(*)で数える上限 (= これ超は統計からの概算に切替え、大テーブルのフルスキャン回避) |
SQL_JOB_MAX_PER_USER | 上限なし | SQL 画面の非同期実行を 1 人が同時に走らせられる本数 (超えた分は拒否) |
SQL_HISTORY_MAX | 上限なし | SQL 実行履歴を 1 人あたり残す件数 (超えた古い履歴は削除) |
SQL_JOB_KEEP_SEC | 600 | SQL 画面の非同期実行の結果を memory に残す秒数 (終わってからこの時間で消える。本体のメモリを守る)。空 = 時間では消さない |
SQL_JOB_KEEP_FINISHED | 10 | SQL 画面の非同期実行の終わった結果を 1 人あたり memory に残す件数 (超えたら古いものから消す。本体のメモリを守る)。空 = 件数では消さない |
SQL_NOTEBOOK_KEEP | 50 | ノートブック実行の結果を memory に残す件数 (超えたら古いものから消す。本体のメモリを守る)。空 = 件数では消さない |
BACKGROUND_THREADS | 40 | 裏で動く同期処理 (フォルダ同期・バックアップの作成・SQL ジョブ・エンジンの操作など) を回す thread の本数。超えた分は順番を待つ。既定は Starlette の thread pool と同じ 40。0 = 上限なし (仕事ごとに thread を起こす) |
FILE_SYNC_JOBS_MAX | 200 | フォルダ同期の実行状況を memory に残す件数 (超えたら終わったものから消す。本体のメモリを守る)。空 = 件数では消さない |
SQL_NOTEBOOK_SESSION_MAX_ROWS | 300000 | ノートブックの後段セルが参照できるよう memory に置く前段結果の合計行数 (超えたら古いセルから捨てる。本体のメモリを守る) |
SQL_EXECUTE_MAX_ROWS | 上限なし | SQL 生実行 / AI SQL 実行の SELECT 取得行数上限 (超過は切詰めてメッセージ明記)。外部 DWH への問い合わせは PIPELINE_SOURCE_MAX_ROWS が効く |
SQL_TABLE_MAX_ROWS | 1000 | SQL テーブル閲覧の 1 回の取得行数 (既定は pgAdmin と同じ 1000 行。画面はページングで続きを取得)。BI キーの REST で limit を省いた時の行数も同じ |
PYTHON_SANDBOX_MAX_MEMORY_MB | 2048 | 利用者・LLM が書いた Python を動かす subprocess のメモリ上限 MB (RLIMIT_AS、POSIX のみ。誤ったコードがホストのメモリを食い尽くして本体ごと落ちないようにする) (旧名 PY_SANDBOX_MAX_MEMORY_MB も読む) |
PIPELINE_MAX_CONCURRENT_RUNS | 3 | pipeline run の常駐 worker process 数 (= 同時実行数。超過分は queue で待機)。1 本ごとに常駐 process のメモリを使う (1 以上) |
PIPELINE_WORKER_HEARTBEAT_SEC | 60 | 外部 worker (digitalbase worker) が生存を DB (PipelineWorker) に書く間隔 (秒)。この 3 倍を超えて更新が無い外部 worker は「居ない」扱いになり、抱えていた run は回収される。本体内蔵の worker は本体が監督するので書かない (1 以上) |
PIPELINE_MAX_QUEUED_RUNS | 50 | 同一 pipeline の待機 (queued) run の上限。event / webhook は実行中でも積まれ順に走り、超えた分は webhook は 429、event は配送のやり直しに回す (送り元の再送の暴走で待ちが際限なく積まれ、DB と後続の実行が詰まるのを防ぐ) |
PIPELINE_LOCK_TIMEOUT_SEC | 5 | ワークフローの起動・削除を直列化するロックの最大待ち秒数。超えると 503 (Retry-After) で返し、待ちが積み上がって全体が止まるのを防ぐ。0 = 上限なし (PostgreSQL の lock_timeout と同じ) (旧名 PIPELINE_LOCK_TIMEOUT_SECONDS も読む) |
PIPELINE_RUN_MAX_HOURS | 12 | pipeline run の上限時間 (固まった run を自動で failed に倒し再実行を可能にする) |
PIPELINE_RUN_MAX_ATTEMPTS | 1 | worker 停止/再起動で中断された run を自動で再 queue する回数の上限 (1=再実行しない) |
PIPELINE_AUTO_PAUSE_AFTER_FAILURES | 0 | pipeline がこの回数連続で失敗したら自動起動 (event/cron/webhook) を一時停止する (手動実行で解除、0=無効) |
PIPELINE_SCHEDULE_MISFIRE_GRACE_SEC | 300 | cron tick が遅れてもこの秒数以内なら実行する (= 一時的な高負荷で tick を捨てない)。0 = 上限なし (どれだけ遅れても実行する) |
PIPELINE_SCHEDULE_MIN_INTERVAL_SEC | 上限なし | スケジュールの @every で指定できる最短間隔 (秒)。短いほど scheduler と DB の負荷が増える (PLC などを数秒ごとに読む時に下げる)。空 = 制限なし (最短 1 秒) |
EVENT_OUTBOX_MAX_ATTEMPTS | 8 | イベント配送 (EventOutbox) の再試行回数上限。超えた行は dead letter (failedAt) として残す (0 = 再試行しない) |
EVENT_OUTBOX_GIVE_UP_MIN | 60 | イベント配送の再試行を諦めるまでの分数 (超過は dead letter) |
PIPELINE_WORKER_POLL_SEC | 5 | pipeline worker / outbox consumer の polling 間隔秒。LISTEN/NOTIFY が使えない DB でだけ使う (通常は NOTIFY で即起きる) (1 以上) |
PIPELINE_IDLE_WAKE_SEC | 300 | NOTIFY が生きている時の保険の目覚まし (秒)。この間隔で 1 回だけ queue を見る = LISTEN 接続が黙って切れても最悪この秒数で拾う。アイドル時の DB アクセスはこれだけ (1 以上) |
PIPELINE_CANCEL_KILL_GRACE_SEC | 15 | pipeline cancel後、協調停止 (step境界) を待つ猶予秒。超過でworker processをterminate/kill |
PIPELINE_SOURCE_MAX_ROWS | 上限なし | pipeline の読み込み step が取る行数の上限: SQL 系 (source_sql・sql_query・Postgres / レイクのデータセット・Databricks・Snowflake・BigQuery) と SQL 画面から外部 DWH への問い合わせ、source_elasticsearch の総 document 数、source_logs / source_pipeline_metrics が DB から読む行数 (超過分は切詰めて明記)。step で件数を指定した時はその値が優先 (旧名 PIPELINE_SQL_SOURCE_MAX_ROWS / ELASTICSEARCH_SOURCE_MAX_ROWS / SYSTEM_LOGS_MAX_ROWS も読む) |
LAKE_LOCK_TIMEOUT_SEC | 30 | データセットの書き込み (表の作り直し・追記) と BI キーの PostgreSQL 互換の口の catalog の作り直しがロックを待つ上限秒 (他の処理が表を握ったままでも固まらず error にする) (旧名 DATALAKE_LOCK_TIMEOUT_SEC も読む) |
SQL_SNAPSHOT_MAX_ROWS | 上限なし | source_sql の snapshot 差分 (主キー + 行ハッシュの台帳) で扱える行数の上限。超えたら error (= 欠けた台帳を確定して残りを「削除」にしない)。大きい表は cursor 方式を使う |
FILE_UPLOAD_MAX_MB | 上限なし | ファイル 1 件の上限 MB (files / connector upload・base64 save・RAG 取込の upload・chat と API の音声 / 動画の添付・pipeline の画像 AI が読む動画、超過は 413) (旧名 RAG_UPLOAD_MAX_MB / CHAT_AUDIO_ATTACH_MAX_MB / CHAT_VIDEO_ATTACH_MAX_MB も読む) |
LOG_DB_QUEUE_SIZE | 5000 | DB log handler の queue 上限 |
LOG_DB_BATCH_SIZE | 100 | DB log handler の batch insert 件数 (1 以上) |
LOG_DB_FLUSH_INTERVAL | 1.0 | DB log handler の flush 間隔秒 (1 以上) |
LAKE_SNAPSHOT_RETENTION_DAYS | 0 | データレイクの古い版 (スナップショット) を残す日数。過ぎた版と、削除・置換で不要になった Parquet を日次の保守で消す。小さいファイルの結合も同時に行う。0=消さない |
LOG_RETENTION_DAYS | 0 | AppLog (WARNING 以上) をこの日数より古いものは削除。0=無期限 |
AUDIT_RETENTION_DAYS | 0 | 監査ログ (AuditLog) の保持日数。削除前に JSONL へ退避する。0=無期限 |
SQL_AUDIT_MAX_CHARS | 4000 | 監査に残す本文の最大文字数 (SQL 実行の SQL 本文とパラメータ値、tool の引数、pipeline の書き込み操作の詳細、ノートブックの Python コード)。監査ログの大きさと、本文に入った個人情報などが丸ごと残るのを抑える。空 = 全文 |
CONNECTION_TOUCH_INTERVAL_SEC | 60 | 接続 lastUsedAt の更新間引き間隔 (秒)。連続利用時の UPDATE を抑える |
USAGE_RETENTION_DAYS | 0 | API 使用量 (ApiKeyUsage) の生データ保持日数。0=無期限 |
RETENTION_SWEEP_HOUR | 3 | 保持期限 sweep を実行する時刻 (0-23、既定は負荷の低い深夜3時) |
RETENTION_DELETE_BATCH | 5000 | 保持期限 sweep の 1 回の DELETE 行数 (大テーブルのロック回避) (1 以上) |
PIPELINE_RUN_RETENTION_DAYS | 0 | pipeline 実行履歴 (PipelineRun、完了/失敗/取消) の保持日数。pipeline ごとの直近分は日数に関わらず残す。0=無期限 |
PIPELINE_RUN_RETENTION_KEEP | 20 | PipelineRun sweep で pipeline ごとに必ず残す直近 run 数 |
EVENT_OUTBOX_RETENTION_DAYS | 0 | 配送済 EventOutbox 行の保持日数 (未配送行は削除しない)。0=無期限 |
FILE_LANDED_DIFF_DETAIL_LIMIT | 上限なし | source_file_landed の実行履歴に残す差分根拠 (added/modified/deleted) の合計件数上限 (超過分は truncated 件数のみ) |
FILE_LANDED_HASH_MAX_MB | 上限なし | source_file_landed content_hash=true 時に sha256 を取る 1 ファイル上限 MB (超過ファイルは size/mtime 比較のみ) |
LOAD_TO_RAG_MAX_STALE_DELETE_RATIO | 0 | load_to_rag mode=sync の削除伝播で、既存 key のうちこの比率を超えて消えそうな場合は削除を skip する (0=無効) |
EXECUTE_COMMAND_MAX_OUTPUT_MB | 上限なし | コマンドの stdout / stderr を取り込む上限 MB (transform_execute_command・コード step の行、チャットの execute_shell が memory に溜める量。超過は切詰めて明記)。上限なしでも execute_shell は model の文脈予算に入る分だけ読む (旧名 EXECUTE_COMMAND_MAX_OUTPUT_BYTES も読む) |
PIPELINE_WAIT_MAX_SEC | 上限なし | transform_wait の 1 step あたり待機秒数の上限 (超える設定は step error) (旧名 PIPELINE_WAIT_MAX_SECONDS も読む) |
PYTHON_SANDBOX_MAX_OUTPUT_MB | 256 | 利用者の Python 実行 subprocess が親へ返す結果 (JSON) の上限 MB (one-shot / session 共通。超過は error。巨大な結果で本体のメモリを使い切らない) (旧名 PY_SANDBOX_MAX_OUTPUT_BYTES も読む) |
ELASTICSEARCH_BULK_BATCH_SIZE | 500 | load_elasticsearch の _bulk 1 リクエストあたりの document 数 (既定は elasticsearch-py の bulk helper と同じ 500) (1 以上) |
SNOWFLAKE_POLL_MAX_SEC | 上限なし | Snowflake SQL API の非同期 statement (202) 完了待ちの上限秒。上限なしでは Snowflake の STATEMENT_TIMEOUT_IN_SECONDS と PIPELINE_RUN_MAX_HOURS に任せる |
CLICKHOUSE_LOAD_BATCH_ROWS | 5000 | load_clickhouse の 1 INSERT あたりの行数 (ClickHouse の推奨は 1 回 1,000 行以上のまとめ書き) (1 以上) |
SNOWFLAKE_LOAD_BATCH_ROWS | 100 | load_snowflake の 1 INSERT (複数行 VALUES) あたりの行数 (Snowflake の VALUES は 16,384 行まで)。1 文の大きさを抑えて、失敗した時にやり直す範囲を小さくする (1 以上) |
PIPELINE_LOAD_ERROR_DETAIL_LIMIT | 上限なし | load_elasticsearch / load_bigquery が errors に残す行単位エラーの件数上限 (超過分は件数のみ) |
CHAT_HISTORY_MAX | 上限なし | chat で LLM に渡す履歴数として request / ユーザー設定で指定できる最大 |
TOOL_READ_JSON_MAX_ITEMS | 上限なし | read_file が JSON 配列・JSONL を LLM に見せる件数 (超過は総件数を明記。文字数は TOOL_RESULT_MAX_CHARS)。空 = 全件 (旧名 TOOL_READ_JSONL_MAX_RECORDS も読む) |
PIPELINE_HTTP_BODY_MAX_CHARS | 上限なし | http_request が行に入れる JSON 以外の応答本文の上限文字数 (超過は切詰めて warnings に明記) |
PIPELINE_HTTP_RESPONSE_LOG_MAX_CHARS | 上限なし | webhook / REST operator が実行結果 (response_body) に残す応答本文の上限文字数 |
AI_SCHEMA_MAX_COLUMNS | 上限なし | AI に渡す列一覧の上限 (ワークフロー AI・データセット schema・query_dataset の tool 説明。超過は件数のみ) (旧名 TOOL_QUERY_DATASET_DESC_MAX_COLUMNS も読む) |
SQL_AI_SAMPLE_ROWS | 3 | SQL AI に見せるテーブルごとのサンプル行数 (既定は LangChain の SQLDatabase と同じ 3。0 = 見せない) |
DATASET_SAMPLE_ROWS | 20 | データセット詳細 (カタログ) に出す先頭行数 (列の中身の見本。全行は SQL 画面・テーブルで見る) |
CHAT_TOOL_STEP_DETAIL_MAX_CHARS | 上限なし | チャットの「使ったツール」で開ける入力・結果の最大文字数 (会話履歴にも保存される) |
改名・廃止した設定キー
次のキーは読み込まれません(値は引き継がないので、.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 に改名 |
TOOL_ASSISTANT_TIMEOUT_SEC | TOOL_TASK_TIMEOUT_SEC に改名 |
PY_SANDBOX_MODE | 廃止(ユーザ Python の実行は subprocess だけ (thread 方式は時間切れでも止められないため削除、2026-10-22)) |
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)) |
TOOL_SHARED_DIR_READ_MAX_BYTES | 廃止(共有 dir の read tool も TOOL_RESULT_MAX_CHARS に統一したため削除) |
PIPELINE_SUBWORKFLOW_MAX_DEPTH | 廃止(サブワークフローは深さでなく呼び出しの循環で止めるため削除) |
WEB_SEARCH_REGION | 廃止(WEB_SEARCH_LANGUAGE (ja / en …) に統合。エンジンごとの形式 (DuckDuckGo の jp-jp など) には自動で直す) |
WEB_SEARCH_SEARXNG_LANGUAGE | 廃止(WEB_SEARCH_LANGUAGE に統合 (全エンジン共通)) |
VISION_MAX_TOKENS | 廃止(DEFAULT_MAX_OUTPUT_TOKENS に従う) |
SQL_LLM_TIMEOUT | 廃止(LLM の待ち時間は LLM_REQUEST_TIMEOUT に統合 (AI での SQL・フロー生成も同じ値)) |
TOOL_CSV_MAX_ROWS | 廃止(登録のみで未使用だったため削除 (CSV は read_file と同じ TOOL_RESULT_MAX_CHARS)) |
TOOL_RETRY_ATTEMPTS | 廃止(外部 API のやり直しは接続ごとの処理の中の 1 か所 (CLOUD_OP_MAX_ATTEMPTS) だけにしたため削除 (重ねると回数が掛け算になった)) |
セキュリティ強化設定(任意)
既定値は「まず動く」側に寄せてあり、運用ポリシーは環境変数で有効化する方式です(ユーザー・権限管理)。厳格な運用が必要な場合は、次のブロックを .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 # 環境変数エディタで秘密値を *** 表示
監査ログ・パスワードの暗号化保存・ロールと共有の制御は既定で有効です(セキュリティ、監査ログ)。