メインコンテンツにスキップ

環境変数

ノート

環境変数を変更するには、Immichコンテナを再作成する必要があります。 コンテナを再起動するだけでは、コンテナ内の環境は置き換えられません!

Docker Composeを使用してコンテナを再作成するには、docker compose up -dを実行してください。 ほとんどの場合、Dockerは.envファイルが変更されたことを認識し、影響を受けたコンテナを再作成します。 これが機能しない場合は、docker compose up -d --force-recreateを試してください。

Docker Compose

変数説明デフォルトコンテナ
IMMICH_VERSIONイメージタグreleaseserver, machine learning
UPLOAD_LOCATIONアップロード用ホストパスserver
DB_DATA_LOCATIONPostgresデータベース用ホストパスdatabase
ヒント

これらの環境変数はdocker-compose.ymlファイルで使用され、コンテナに直接影響を与えるものではありません

全般

変数説明デフォルトコンテナワーカー
TZタイムゾーン*1servermicroservices
IMMICH_ENV環境 (production, development)productionserver, machine learningapi, microservices
IMMICH_LOG_LEVELログレベル (verbose, debug, log, warn, error)logserver, machine learningapi, microservices
IMMICH_MEDIA_LOCATIONコンテナ内のメディアロケーション ⚠️通常設定するべきではありません*2⚠️/usr/src/app/uploadserverapi, microservices
IMMICH_CONFIG_FILE設定ファイルへのパスserverapi, microservices
NO_COLORカラーコードされたログ出力を無効にする場合はtrueと設定falseserver, machine learning
CPU_CORESImmichサーバーで使用可能なコア数自動検出されたCPUコア数server
IMMICH_API_METRICS_PORTOTELメトリクス用ポート8081serverapi
IMMICH_MICROSERVICES_METRICS_PORTOTELメトリクス用ポート8082servermicroservices
IMMICH_PROCESS_INVALID_IMAGEStrueの場合、不正な画像のサムネイルを生成servermicroservices
IMMICH_TRUSTED_PROXIES信頼できるプロキシとして設定されたIPのカンマ区切りリストserverapi
IMMICH_IGNORE_MOUNT_CHECK_ERRORSシステム整合性参照serverapi, microservices

*1: TZこのリストからTZ識別子として設定する必要があります。例: TZ="Etc/UTC"exiftoolが画像メタデータからタイムゾーンを判別できない場合にフォールバックとして使用されます。また、ログファイルのタイムスタンプやcronジョブの実行にも使用されます。

*2: このパスはImmichコードがファイルを検索する内部コンテナのパスです。ホスト上のパスに設定すると確実に問題が発生します。代わりにUPLOAD_LOCATION変数を使用してください。

ワーカー

変数説明デフォルトコンテナ
IMMICH_WORKERS_INCLUDE実行するワーカーのみを指定server
IMMICH_WORKERS_EXCLUDE実行しないワーカーを指定。デフォルトワーカー、またはIMMICH_WORKERS_INCLUDEで指定されたものに一致server
情報

現在のワーカーに関する情報はこちらをご覧ください。

ポート

変数説明デフォルト
IMMICH_HOSTリスニングホスト0.0.0.0
IMMICH_PORTリスニングポート2283 (server), 3003 (machine learning)

データベース

変数説明デフォルトコンテナ
DB_URLデータベースURLserver
DB_HOSTNAMEデータベースホストdatabaseserver
DB_PORTデータベースポート5432server
DB_USERNAMEデータベースユーザーpostgresserver, database*1
DB_PASSWORDデータベースパスワードpostgresserver, database*1
DB_DATABASE_NAMEデータベース名immichserver, database*1
DB_SSL_MODEデータベースSSLモードserver
DB_VECTOR_EXTENSION*2データベースのベクトル拡張機能 ([vectorchord, pgvector, pgvecto.rs]のいずれか)server
DB_SKIP_MIGRATIONS起動時にマイグレーションをスキップするかどうか ([true, false]のいずれか)falseserver
DB_STORAGE_TYPESSD上での同時IO最適化またはHDD上のシーケンシャルIO ([SSD, HDD]*3)SSDserver

*1: DB_USERNAMEDB_PASSWORDDB_DATABASE_NAMEの値は、docker-compose.yml内でPostgresコンテナにPOSTGRES_USERPOSTGRES_PASSWORDPOSTGRES_DBとして渡されます。

*2: 提供されない場合、適切な拡張機能はデータベースを調査して起動時に自動検出されます。複数の拡張機能がインストールされている場合、優先順位はVectorChord、pgvecto.rs、pgvectorの順です。

*3: Postgresのeffective_io_concurrency設定を制御するpostgresql.ssd.confまたはpostgresql.hdd.confを使用します。

情報

すべてのDB_変数は、apiおよびmicroservicesを含むすべてのImmichワーカーに提供される必要があります。

DB_URLは、postgresql://immichdbusername:immichdbpassword@postgreshost:postgresport/immichdatabasenameの形式である必要があります。 ?sslmode=requireDB_URL文字列の末尾に追加することでSSLを要求することができ、または?sslmode=require&sslmode=no-verifyを加えることでSSLを要求し、証明書検証をスキップします。

DB_URLが定義されている場合、DB_HOSTNAMEDB_PORTDB_USERNAMEDB_PASSWORDおよびDB_DATABASE_NAMEのデータベース変数は無視されます。

Redis

変数説明デフォルトコンテナ
REDIS_URLRedis URLserver
REDIS_SOCKETRedisソケットserver
REDIS_HOSTNAMERedisホストredisserver
REDIS_PORTRedisポート6379server
REDIS_USERNAMERedisユーザー名server
REDIS_PASSWORDRedisパスワードserver
REDIS_DBINDEXRedis DBインデックス0server
情報

すべてのREDIS_変数は、apiおよびmicroservicesを含むすべてのImmichワーカーに提供される必要があります。

REDIS_URLioredis://で始まり、続いて構成に関するbase64エンコードされたJSON文字列を含む必要があります。 詳細情報は、上流のioredisドキュメントを参照してください。

「REDIS_URL」または「REDIS_SOCKET」が定義されている場合、「REDIS_HOSTNAME」、「REDIS_PORT」、「REDIS_USERNAME」、「REDIS_PASSWORD」、および「REDIS_DBINDEX」変数は無視されます。

Redis(Sentinel)URLのエンコード前のJSON例:

JSON
{
"sentinels": [
{
"host": "redis-sentinel-node-0",
"port": 26379
},
{
"host": "redis-sentinel-node-1",
"port": 26379
},
{
"host": "redis-sentinel-node-2",
"port": 26379
}
],
"name": "redis-sentinel"
}

機械学習

変数説明デフォルトコンテナ
MACHINE_LEARNING_MODEL_TTLモデルがアンロードされるまでの非アクティブ時間 (無効の場合は <= 0)300機械学習
MACHINE_LEARNING_MODEL_TTL_POLL_SモデルTTLチェック間の間隔(秒) (無効の場合は <= 0)10機械学習
MACHINE_LEARNING_CACHE_FOLDERモデルがダウンロードされるディレクトリ/cache機械学習
MACHINE_LEARNING_REQUEST_THREADS*1リクエストスレッドプールのスレッド数 (無効の場合は <= 0)CPUコア数機械学習
MACHINE_LEARNING_MODEL_INTER_OP_THREADS並列モデル操作数1機械学習
MACHINE_LEARNING_MODEL_INTRA_OP_THREADSモデル操作ごとのスレッド数2機械学習
MACHINE_LEARNING_WORKERS*2スポーンするワーカープロセス数1機械学習
MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S*3HTTPキープアライブ時間(秒単位)2機械学習
MACHINE_LEARNING_WORKER_TIMEOUTワーカーが終了するまでの非応答最大時間(秒単位)120 (300 if using OpenVINO)機械学習
MACHINE_LEARNING_PRELOAD__CLIP__TEXTUALプリロードおよびキャッシュする(テキストタイプの)CLIPモデルのカンマ区切りリスト機械学習
MACHINE_LEARNING_PRELOAD__CLIP__VISUALプリロードおよびキャッシュする(ビジュアルタイプの)CLIPモデルのカンマ区切りリスト機械学習
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITIONプリロードおよびキャッシュする(認識タイプの)顔認識モデルのカンマ区切りリスト機械学習
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTIONプリロードおよびキャッシュする(検出タイプの)顔認識モデルのカンマ区切りリスト機械学習
MACHINE_LEARNING_ANNARM-NNハードウェアアクセラレーションをサポートする場合は有効化True機械学習
MACHINE_LEARNING_ANN_FP16_TURBO操作をFP16精度で実行: スピードアップ、精度低下(ARM-NNのみ適用)False機械学習
MACHINE_LEARNING_ANN_TUNING_LEVELARM-NN GPUチューニングレベル(1: 高速, 2: 通常, 3: 徹底的)2機械学習
MACHINE_LEARNING_DEVICE_IDS*4マルチGPU環境で使用するデバイスID0機械学習
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION顔認識モデルで一度に処理される顔の最大数を設定None (1 if using OpenVINO)機械学習
MACHINE_LEARNING_PING_TIMEOUTMLサーバーが利用可能かどうかを確認するときにPING応答を待つ時間(ミリ秒)2000サーバー
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIMEオフラインのMLサーバーを再試行するまで無視する時間30000サーバー
MACHINE_LEARNING_RKNNRKNNハードウェアアクセラレーションをサポートする場合は有効化True機械学習
MACHINE_LEARNING_RKNN_THREADS推論中にスピンアップするRKNNランタイムのスレッド数1機械学習

*1: 機械学習サービスの並列性レベルを変更する場合には、このパラメータから始めることをお勧めし、その後に他のパラメータを調整してください。

*2: 各プロセスがメモリ内でモデルを複製するため、十分なメモリがない場合は、これを変更することは推奨されません。

*3: K8SのHPAなどのシナリオ向け。https://github.com/immich-app/immich/discussions/12064

*4: 複数GPUを使用するには、「MACHINE_LEARNING_WORKERS」を1より大きい値に設定する必要があります。各ワーカーにはラウンドロビン方式で単一のデバイスが優先的に割り当てられます。

情報

「textual」モデルはスマート検索に必要な唯一のモデルですが、一部のユーザーはバックアップが他のモデルをメモリにロードするきっかけとなり、最初の検索が遅くなる可能性があります。このロード中に他のリクエストが完了するまでブロックされます。

これを防ぐために、十分なRAMがある場合は、他のモデル(「visual」、「recognition」、「detection」)を事前ロードすることができます。

管理者UIから追加の機械学習パラメータを調整することができます。

Prometheus

変数説明デフォルトコンテナワーカー
IMMICH_TELEMETRY_INCLUDE収集するテレメトリー。 「host」、「api」、「io」、「repo」、「job」のリスト。 注意: 「all」を指定してすべてを有効にすることも可能サーバーapi、マイクロサービス
IMMICH_TELEMETRY_EXCLUDE収集しないテレメトリー。 「host」、「api」、「io」、「repo」、「job」のリストサーバーapi、マイクロサービス

Docker Secrets

以下の変数は、追加のセキュリティのためにDockerの秘密を使用することをサポートしています。

これらのいずれかを使用するには、通常の環境変数を同等の「_FILE」環境変数に置き換えてください。「_FILE」変数の値は、変数値を含むファイルのパスに設定する必要があります。

通常の変数同等のDocker Secrets「_FILE」変数
DB_HOSTNAMEDB_HOSTNAME_FILE*1
DB_DATABASE_NAMEDB_DATABASE_NAME_FILE*1
DB_USERNAMEDB_USERNAME_FILE*1
DB_PASSWORDDB_PASSWORD_FILE*1
DB_URLDB_URL_FILE*1
REDIS_PASSWORDREDIS_PASSWORD_FILE*2

*1: 公式ドキュメントで、PostgresイメージでのDocker Secretsの使用方法について詳細を参照してください。

*2: Redisコンテナ内のパスワードのDocker Secretの使用方法については、このコメントを参照してください。