主要な環境変数
このページでは、サービス監視、データベース、キー、制限、外部サービスの接続、Compose ランキング レイヤーおよび サンドボックス sidecar が実行されている環境変数を記録します。 システム内部の動作(並行、再試行、バンドサイズ、読み取りサイクルリズムなど)を制御する利点は、このページでは見られません。優れた環境変数。
公式使用Docker Compose デプロイ変数の大半が compose ファイルで正当な値を記入した場合、通常は.env3つの必須条件を提供する:POSTGRES_PASSWORD、REDIS_PASSWORD、JWT_SECRETこのページの残りの変数は、必要に応じて確認できます。
各種変数(たとえば、ACCESS_TTL、REFRESH_TTL) Go duration フォーマットを使用: 数字と単位の補填、サポートs(秒)、m(数分)、h組み合わせ(たとえば、1h30m(●)なしd(天)単位**、30日間で書く720h。
1.サービスの基礎
| 変数 | デフォルト値 | 説明 |
|---|---|---|
AIVORY_LISTEN | :8787 | サービス アドレス スカウト すべてのネットワーク カードの 8787 ポートをデフォルトでスカウトします; ネイティブ コンピュータを結び付けたいときにのみ書き込むことができます127.0.0.1:8787。 |
AIVORY_ENV | development | 環境マーク:設定productiondev 以外の値を待つとデプロイレベルのセキュリティ検査が起動します(以下を参照)。JWT_SECRETスタートルール)。 |
STATIC_DIR | (空) | 作成済みの SPA フロントエンド ディレクトリを参照すると、API プロセスは同じポートで同じソースでフロントエンド ページをサーバーします。 生産鏡像はこのディレクトリに組み込まれており、設定は不要です。 |
よくある穴を選ぶ方法生産配備は必須AIVORY_ENV設立為productionそうでなければ、デプロイ環境でのみ有効なセキュリティ検査の一部が有効にならない。STATIC_DIRフロントエンドを自分で構築し、API プロセスが静的ファイルを直接ホスティングしたい場合にのみ必要です。公式の鏡像でそれを動かさないでください。フロントエンドは API 同源(単一コンテナが同時に SPA と/api)は、推奨形態であり、跨領域配置を省くことができます。
2.データベースとキャッシュ
| 変数 | デフォルト値 | 説明 |
|---|---|---|
DATABASE_URL | ./data/aivory.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000) | データベース接続シリーズ デフォルトは SQLite ファイルパス (WAL と busy_timeout パラメータを含む) です。postgres://最初に PostgreSQL に切り替えました。 |
REDIS_URL | (空) | Redis 接続シリーズ 空き時にはプロセス内のキャッシュとコアを使用し、セットアップ後には Redis キャッシュ、タスクコア、ストリーム復元を有効にします。 |
QDRANT_URL | (空) | Qdrant ベクトル ライブラリ アドレス. 空のときにベクトル リクエストを無効にし、RAG を完全に注入して戻します。 |
QDRANT_API_KEY | (空) | Qdrant の API キーにアクセスして、Qdrant サーバー側の構成に一致します。 |
DATABASE_URL2つの形態の例:
# SQLite(单机小规模,详见 SQLite 模式文档)
DATABASE_URL="./data/aivory.db?_pragma=journal_mode(WAL)&_pragma=busy_timeout(5000)"
# PostgreSQL(compose 部署默认形态)
DATABASE_URL="postgres://aivory:你的密码@postgres:5432/aivory"
DATABASE_URLもしかして、postgres://プレビューも「デプロイ環境かどうか」を判断する入力の一つです: PostgreSQL が接続されると、起動時に強制要求されます。JWT_SECRETさらに、SQLite と PostgreSQL 間の自動データ移行はありません。バックアップと移行データを輸出する。
よくある穴を選ぶ方法単独または小グループで利用できます。SQLite モデル外部依存をゼロにし、マルチユーザ生産環境では、PostgreSQL + Redis + Qdrant の完全なセットを推奨します。REDIS_URLスペースタイムストリーム復旧などの依存コレクションの能力がプロセス内で実現するように劣化し、複数のコピーの展開にはRedisを設定する必要があります。QDRANT_URL空きは影響しません ナレッジベース機能は利用可能ですが、検索品質が全文の注入に劣化し、ドキュメントの大量効果とトークン消費が悪化します。
3.セッションとセッション
| 変数 | デフォルト値 | 説明 |
|---|---|---|
JWT_SECRET | (空) | アクセス/トークンの更新のキーを発行します。チェックルールを開始するには、以下の警告をご覧ください。 |
ACCESS_TTL | 30m | アクセストークンの有効期限、Go duration 形式。 |
REFRESH_TTL | 720h | トークンの有効期限は、デフォルトでは720時間、つまり30日です。 |
ALLOWED_ORIGINS | http://localhost:5173,http://127.0.0.1:5173 | API の origin ホワイトリストを複数のドメインにアクセスすることを許可します。前後分離のデプロイだけが必要です。単一コンテナ同源デプロイは設定する必要はありません。 |
開発環境に設定されていないJWT_SECRETこの場合、サービスは自動的にランダムな臨時鍵を生成します。**毎回再起動すると、すべてのログインセッションが無効になります。**システムが「デプロイ環境」のように見える場合AIVORY_ENV非 dev 値、またはDATABASE_URLPostgreSQL の場合、少なくとも 32 文字のキーを明示的に設定する必要がありますが、サービスが起動を拒否します。
openssl rand -base64 48
キーを生産後に任意に交換しないでください:交換後、すべてのユーザーのログイン状態は即座に失効します。
よくある穴を選ぶ方法:ACCESS_TTLトークンの漏洩を減らすウィンドウを短縮するが、更新頻度を増やす。REFRESH_TTLユーザーが「どのくらいの期間、再度ログインする必要があるか」を決定します。ALLOWED_ORIGINS初心者がよく踏み出す穴:同源配布(推奨)は全く配属しない;前端を別々に別のドメインに配布する場合にのみ、前端の origin を追加し、完全に書き込む必要があります。scheme://host[:port]道のりや道のりや道のりや道のりや道のりはしないでください。
4. 貯蔵および制限
| 変数 | デフォルト値 | 説明 |
|---|---|---|
UPLOAD_DIR | ./data/uploads | ユーザーがファイルをアップロードするストレージディレクトリ。 |
ARTIFACT_DIR | ./data/artifacts | 生成製品(コード実行出力ファイルなど)のストレージディレクトリ。 |
BACKUP_DIR | ./data/backups | バックアップ文書の保存カタログ。 |
MAX_UPLOAD_BYTES | 52428800 | デフォルトでは、単一ファイルのハードロード上限は 50 MB です。 管理者はこの上限内に画像/ファイルを個別にスッキリさせることもできます。 |
MAX_BACKUP_BYTES | 21474836480 | バックアップの輸入サイズの上限は、既定で 20GiB です。 |
DAILY_MESSAGE_LIMIT | 200 | ユーザー毎日のメッセージ数の上限。 |
IMAGE_DAILY_LIMIT | 30 | ユーザーごとに1日当たりの画像生成回数が制限されます。 |
よくある穴を選ぶ方法3つのカテゴリが存在します。./data次に、compose を配布する際にホスト機に対応する。DATA_DIRバックアップボリュームは、十分なディスクスペースがあることを確認し、バックアップポリシーが含まれています。MAX_UPLOAD_BYTESサーバー側のハード上限であり、コンソールの画像/ファイルの制限はそれより小さく、拡大することはできません;ここで拡大する場合は、リバースプロキシのリクエスト上限を同期することもできます。client_max_body_size要請は、先に代理人から止められ、見てください。リバースプロキシ。DAILY_MESSAGE_LIMIT 与 IMAGE_DAILY_LIMITグローバルデフォルトで、個々のユーザーのクォータを調整ユーザーとクォーター里の操作。
5.外部サービス
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SEARCH_PROVIDER | (空) | ネット検索の裏側は、serper管理コンソールで設定することもできます。 |
SEARCH_API_KEY | (空) | 裏側の API キーを検索します。 |
SEARCH_BASE_URL | (空) | バックエンドで検索するためのカスタマイズされたアドレス(自社または代理ゲートウェイの作成時に使用)。 |
EMBEDDING_BASE_URL | (空) | 埋め込みサービスの API アドレス、OpenAI 互換インターフェイス。 |
EMBEDDING_API_KEY | (空) | サービスに組み込まれた API キー。 |
EMBEDDING_MODEL | text-embedding-3-small | モデル名を入力します。 |
EMBEDDING_DIM | 1536 | ベクトルサイズを組み込む。 |
MINERU_API_URL | (空) | スキャン PDF の OCR 解像度のための MinerU サービス アドレス。compose リ デフォルトで記入https://mineru.net。 |
MINERU_API_KEY | (空) | MinerU の API キー |
SANDBOX_BASE_URL | (空) | コード サンドボックス sidecar のアドレス.compose デフォルトhttp://sandbox:8000。 |
SANDBOX_API_KEY | (空) | サンドボックス sidecar とのコミュニケーションの共有キー.compose ではデフォルトで共有値を使用しますaivory-bundled-sandbox。 |
ENABLE_MOCK_PROVIDER | false | compose から入力し、組み込まれたデモモデルを有効にします(リアルモデル API なしでインターフェイスを体験できます)。 |
集計は固定次元で構成され、EMBEDDING_DIM 与 EMBEDDING_MODEL実際の出力次元が一致しない場合、ベータの書き込みと取得は間違います。 埋め込まれたモデルを置き換えるときは値を同期して変更する必要がありますし、既存のベータが新しい次元と互換性がないため、ナレッジベースのインデックスを再構築する必要があります。text-embedding-3-small合計 1536 ビット。
よくある穴を選ぶ方法検索および埋め込みサービスは不可欠で、コンフィギュレーションされないときに対応する機能(ネットワーク検索、ベータ検索)が自動的にダウンロードまたは利用できません。SEARCH_*管理コンソールの構成、環境変数とバックグラウンドの両方でサポートされ、バックグラウンドの構成の利点は、コンテナを再起動する必要がなく変更することです。コンソール管理概要サンドボックスの 2 つの変数が空の場合、コード実行機能は利用できません; 公式な compose で sidecar がパッケージとともに起動した場合、手動で設定する必要はありませんが** サンドボックスが非インネット環境にさらされている場合は、必ずSANDBOX_API_KEY共有のデフォルト値からランダムの強力キーに変更します** (sidecar サイド同期の変更、セクション 8 を参照)。コード サンドボックス 展開。ENABLE_MOCK_PROVIDERデモおよび検証デプロイにのみ使用し、生産環境の維持false。
OAuth 複数のドメイン
| 変数 | デフォルト値 | 説明 |
|---|---|---|
OAUTH_CALLBACK_BASE_URL | (空) | 複数のドメイン名のデプロイ時に、OAuth リコードが使用される唯一の固定scheme://host。 |
OAUTH_RETURN_ORIGINS | (空) | クロスドメインログインが完了すると、オリジナルのホワイトリストにジャンプすることを許可します。 |
よくある穴を選ぶ方法: 単一ドメイン名のデプロイも設定を必要としません。 同じサービスが複数のドメイン名でアクセスされ、OAuthプロバイダー(GitHub/Googleなど)が固有のリクエストアドレスのみを登録することを許可している場合、OAUTH_CALLBACK_BASE_URLあなたがプロバイダーに登録したドメイン名に設定し、ユーザーは他のドメイン名からログインした後、元のドメイン名に戻り、そのドメイン名を追加します。OAUTH_RETURN_ORIGINSホワイトリスト以外の origin はジャンプされません、これはオープンリダイレクトを防ぐセキュリティの設計であり、漏れ配列は「ログインは成功しましたが、元のページに戻りません」と表現します。
Compose 構成層変数(.env)
次の変数は compose プロジェクト ルート ディレクトリに記載されています。.env文書では、由docker-compose.ymlAivory プロセスが直接読み取ったコンテナではなく、各コンテナを注入します。
| 変数 | デフォルト値 | 説明 |
|---|---|---|
IMAGE_OWNER | hjxwz123 | 鏡の持ち主は、ghcr.io/<IMAGE_OWNER>/aivory-app鏡の名前など、自家製の鏡の倉庫を使用して変更します。 |
IMAGE_TAG | latest | 生産環境は、特定のバージョン番号をロックすることを推奨します(例えば、2.2.0)ではなくlatest。 |
POSTGRES_USER | aivory | PostgreSQL ユーザ名 |
POSTGRES_PASSWORD | (必須) | PostgreSQL パスワードは、デフォルト値なしで、最初のデプロイに記入する必要があります。 |
POSTGRES_DB | aivory | PostgreSQL データベースの名前 |
REDIS_PASSWORD | (必須) | Redis パスワードは、デフォルト値なしで、最初のデプロイに記入する必要があります。 |
QDRANT_API_KEY | aivory-internal-qdrant | Qdrant の API キーは、app コンテナと qdrant コンテナが同じ値を共有します。 |
JWT_SECRET | (必須) | App コンテナに直接送信するには、規則はセクション 3 を参照してください。 |
DATA_DIR | ./data | ホストデータディレクトリは、各コンテナに持続的なデータを載せます。 |
よくある穴を選ぶ方法:POSTGRES_PASSWORD、REDIS_PASSWORD、JWT_SECRET3 既定値がないこと.env内漏填のいずれかは、起動失敗につながり、これは意図的な防設計です。POSTGRES_*compose を変更すると、それらを使って app コンテナをスパイスします。DATABASE_URLもう、手動でコネクタを書く必要はありません。QDRANT_API_KEYデフォルト値は存在しますが、Qdrant ポートが compose ネットワークの外部に曝露されない限り安全です; Qdrant を個別に外部に曝露する場合は、強力なランダム値に変更します。DATA_DIR指向するディレクトリは、すべての永続状態(データベース、アップロード、ベータ、バックアップ)であり、ホストを移行する際にディレクトリ全体をコピーすることができます。Docker Compose デプロイ。
8. サンドボックス sidecar オペレーティング変数
以下の変数は、aivory-sandbox-sidecarコンテナ(コード サンドボックスのコントロール)と、セクション5のアプリ側SANDBOX_BASE_URL/SANDBOX_API_KEY両端構成です.sidecar は Docker を介して各セッションのための隔離コンテナを実行するコードを引っ張り、全体的な構造が表示されます。コード サンドボックス 展開ユーザー側の機能が見えます。Python サンドボックス。
鏡とコンテナ資源
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_IMAGE | aivory-sandbox:latest | セッションコンテナで使用される実行時刻の映像。 |
SANDBOX_NETWORK | none | セッションコンテナのネットワークモード デフォルトで完全にネットワーク切断; 設定bridge実行時ネットワーク(pip インストール パッケージなど)を有効にします。 |
SANDBOX_MEMORY | 2g | 単一セッションコンテナのメモリ上限 ドキュメントレンダリングのタスクはメモリを摂り、デフォルト値より低くは推奨されません。 |
SANDBOX_CPUS | 1 | 単一セッションコンテナの CPU クォータ。 |
SANDBOX_PIDS_LIMIT | 256 | 単一セッションコンテナのプロセス数の上限、フォーク爆弾を防ぐ。 |
SANDBOX_NOFILE_ULIMIT | 1024:1024 | セッションコンテナのファイル記述子 ulimit(ソフト:ハード)。 |
SANDBOX_PULL_ON_START | (空、閉鎖) | 空っぽでない0/falsesidecar を起動する前にdocker pull新しいサーバーの最初のセッションがミラーの欠如のために失敗するのを防ぐために、一度のタイムライブラリを実行します。トラッキングは最善を尽くし、失敗のログは起動をブロックしません。 |
認定
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_API_KEY | (空) | sidecar は、すべてのリクエストに一致する Bearer キーを必要とし、検証が失敗すると拒否されます。キーが空っぽで明示的に免除されない場合、sidecar は直接起動を拒否します。(fail-closed)。 |
SANDBOX_ALLOW_NO_AUTH | (空、閉鎖) | 明示的な免除は、キーなしで起動し、信頼できる localhost 開発機のみです。1/true/yes/on4 書類の書き方(その他)False/no/off)は免除されていない。 |
sidecar はホストの Docker を直接駆動し、ホストの root 権限に相当します。SANDBOX_ALLOW_NO_AUTH完全に非対外的な本機開発環境にのみ現れるべきであり、生産環境は強くランダムに設定されなければならない。SANDBOX_API_KEYそして、アプリ側(セクション5)と一致します。
超過時間とセッションの回収
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_EXEC_TIMEOUT_CAP_MS | 600000 | 超過時間を1回実行するハードウェアの上限(10 分) 管理コンソールの設定の毎回の呼び出し超過時間は、この値の範囲内で制限されます。 |
SANDBOX_DEFAULT_EXEC_TIMEOUT_MS | 120000 | 呼び出し当事者は、デフォルトの単一実行時間(120秒)を指定していない場合、10分のハード上限を静かに継承しません。 |
SANDBOX_IDLE_TTL_SECONDS | 1800 | セッションの休憩時間は、既定で30分後にリサイクルされます。 |
SANDBOX_IDLE_TTL_CAP_SECONDS | 86400 | リサイクル TTL のオペレーティングハードウェア上限 (24 時間) 管理コンソール リサイクルウィンドウを短縮できますが、上限を超えてはいけません。 |
SANDBOX_MAX_SESSIONS | 16 | 同時に生存するセッションコンテナ数の上限。 |
SANDBOX_MAX_CONCURRENT_EXECS | 4 | 同時に実行されるコードの実行数の上限。 |
SANDBOX_MAX_CONCURRENT_CREATES | 2 | 同時に実行されるセッションの数の上限を作成します。 |
SANDBOX_QUEUE_TIMEOUT_SECONDS | 150 | リクエストは並列列の最長の待機時間であり、超タイムエラーが返されます。 |
ファイルシステムとディスクの保護
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_READ_ONLY_ROOTFS | 1 | セッション コンテナ ルート ファイル システム 読み込みのみ (ディスク セキュリティ 攻撃)。/workspace、/tmp、$HOMEサイズの上限の tmpfs が設定されています。0 或 false閉鎖可能、お勧めしません。 |
SANDBOX_TMPFS_SIZE | 256m | /tmptmpfs のサイズの上限を設定します。 |
SANDBOX_WORKSPACE_SIZE | 512m | 書く作業スペース/workspacetmpfs のサイズの上限. 古い名前SANDBOX_WORKSPACE_TMPFS_SIZE互換性別名として有効である。 |
SANDBOX_DISK_SIZE | (空、閉鎖) | セッションコンテナの書き込み可能なレイヤーディスク クォータ (たとえば1gDocker overlay2 ストレージ ドライブが必要で、pquota/prjquota が有効でない場合docker runエラーが報告され、選択肢として最善の方法で適用されます(失敗した場合、パラメータを自動的に削除します)。 |
SANDBOX_SECCOMP_PROFILE | (空、閉鎖) | セッションコンテナに固定された seccomp profile ファイルパスを指定します(パスは sidecar コンテナで読み取れる必要があります)。docker run。 |
輸出および製品制限
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_MAX_OUTPUT_BYTES | 32768 | stdout/stderr の切断の上限(32KB)を実行します。 |
SANDBOX_MAX_ARTIFACT_BYTES | 20971520 | 個々のプロダクトファイルのサイズの上限(20MiB)。 |
SANDBOX_MAX_TOTAL_ARTIFACT_BYTES | 52428800 | すべての製品の合計サイズの上限(50 MiB)を1回実行します。 |
SANDBOX_MAX_FILES_PER_EXEC | 20 | 一度にアップロードできるファイル数の上限を実行します。 |
SANDBOX_MAX_UPLOAD_BYTES | 20971520 | サンドボックスに個々のファイルのサイズの上限(20MiB)をアップロードします。 |
SANDBOX_MAX_ARCHIVE_BYTES | 209715200 | ワークスペースアーカイブ tar パッケージの最大サイズ(200 MiB)/workspaceこの値を超えてアーカイブ(ログ)をジャンプすると、セッション自体は正常にリサイクルされます。 |
職場の持続性
| 変数 | デフォルト値 | 説明 |
|---|---|---|
SANDBOX_LOCAL_STORAGE_DIR | (空、閉鎖) | ローカル ディスク アーカイブ バックエンド ディレクトリ、S3/OSS 以外のゼロ依存の代替。 設定後、ワークスペースの tar パッケージがディレクトリに書き込まれており、リセットを sidecar で再起動するにはボリュームとして貼り付けなければなりません。localバックエンドは有効で、セッションはリサイクルされ、ワークスペースが失われます。このパスは、環境変数を通じてオペレーションによって指定され、リモート呼び出しの入力は受け入れられません。 |
よくある穴を選ぶ方法: オフィシャル compose は sidecar で利用可能なデフォルト値を記入し、ほとんどのシーンでは注意が必要です。SANDBOX_API_KEY(App側と一致)および解除するかSANDBOX_NETWORKネットワーク(bridgeリスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには、リスクを評価するには(SANDBOX_MEMORY/SANDBOX_MAX_SESSIONS/SANDBOX_MAX_CONCURRENT_EXECS) 「ホストメモリ ≥ セッション数 × シングルセッションメモリ」の推定で、デフォルトの16セッション × 2gの理論ピークが小型マシンの容量を超え、小型メモリマシンが先に低下するSANDBOX_MAX_SESSIONS次に、S3、S3、S3、S3、S3、S3、S3、S3、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4、S4SANDBOX_S3_*、SANDBOX_MAX_BODY_BYTES等)入り優れた環境変数。
9.前端構築期間の変数
| 変数 | デフォルト値 | 説明 |
|---|---|---|
VITE_API_BASE | /api | 先端に API を呼び出し、建設時注入 フロント・バックエンドの分離部署のみ(フロント・エンドの静的ホスティングは他の場所にあります)で API サービスの完全なアドレスに変更します。 |
よくある穴を選ぶ方法: これは構築期変数ではなく、実行時間変数です:変更すると、前端の製品を再構築する必要があり、構築された公式な鏡の設定には何の効果もありません。/api前端を独立したドメイン名/CDNにデプロイする場合にのみ変更https://api.example.com/apiこのような完全なアドレスは、前端の origin をサービス側に追加することを覚えておくALLOWED_ORIGINS(第3節)
次のステップ
- 初配布から早速スタート与初めての運用標準的な流れを繰り返します。
- ドメイン名とHTTPSアクセスリバースプロキシ与 Cloudflare。
- すべての内部優位指数を見る優れた環境変数。