環境変数
環境変数を変更するには、Immichコンテナを再作成する必要があります。 コンテナを再起動するだけでは、コンテナ内の環境は置き換えられません!
Docker Composeを使用してコンテナを再作成するには、docker compose up -dを実行してください。
ほとんどの場合、Dockerは.envファイルが変更されたことを認識し、影響を受けたコンテナを再作成します。
これが機能しない場合は、docker compose up -d --force-recreateを試してください。
Docker Compose
| 変数 | 説明 | デフォルト | コンテナ |
|---|---|---|---|
IMMICH_VERSION | イメージタグ | release | server, machine learning |
UPLOAD_LOCATION | アップロード用ホストパス | server | |
DB_DATA_LOCATION | Postgresデータベース用ホストパス | database |
これらの環境変数はdocker-compose.ymlファイルで使用され、コンテナに直接影響を与えるものではありません。
全般
| 変数 | 説明 | デフォルト | コンテナ | ワーカー |
|---|---|---|---|---|
TZ | タイムゾーン | *1 | server | microservices |
IMMICH_ENV | 環境 (production, development) | production | server, machine learning | api, microservices |
IMMICH_LOG_LEVEL | ログレベル (verbose, debug, log, warn, error) | log | server, machine learning | api, microservices |
IMMICH_MEDIA_LOCATION | コンテナ内のメディアロケーション ⚠️通常設定するべきではありません*2⚠️ | /usr/src/app/upload | server | api, microservices |
IMMICH_CONFIG_FILE | 設定ファイルへのパス | server | api, microservices | |
NO_COLOR | カラーコードされたログ出力を無効にする場合はtrueと設定 | false | server, machine learning | |
CPU_CORES | Immichサーバーで使用可能なコア数 | 自動検出されたCPUコア数 | server | |
IMMICH_API_METRICS_PORT | OTELメトリクス用ポート | 8081 | server | api |
IMMICH_MICROSERVICES_METRICS_PORT | OTELメトリクス用ポート | 8082 | server | microservices |
IMMICH_PROCESS_INVALID_IMAGES | trueの場合、不正な画像のサムネイルを生成 | server | microservices | |
IMMICH_TRUSTED_PROXIES | 信頼できるプロキシとして設定されたIPのカンマ区切りリスト | server | api | |
IMMICH_IGNORE_MOUNT_CHECK_ERRORS | システム整合性参照 | server | api, 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 | データベースURL | server | |
DB_HOSTNAME | データベースホスト | database | server |
DB_PORT | データベースポート | 5432 | server |
DB_USERNAME | データベースユーザー | postgres | server, database*1 |
DB_PASSWORD | データベースパスワード | postgres | server, database*1 |
DB_DATABASE_NAME | データベース名 | immich | server, database*1 |
DB_SSL_MODE | データベースSSLモード | server | |
DB_VECTOR_EXTENSION*2 | データベースのベクトル拡張機能 ([vectorchord, pgvector, pgvecto.rs]のいずれか) | server | |
DB_SKIP_MIGRATIONS | 起動時にマイグレーションをスキップするかどうか ([true, false]のいずれか) | false | server |
DB_STORAGE_TYPE | SSD上での同時IO最適化またはHDD上のシーケンシャルIO ([SSD, HDD]*3) | SSD | server |
*1: DB_USERNAME、DB_PASSWORD、DB_DATABASE_NAMEの値は、docker-compose.yml内でPostgresコンテナにPOSTGRES_USER、POSTGRES_PASSWORD、POSTGRES_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=requireをDB_URL文字列の末尾に追加することでSSLを要求することができ、または?sslmode=require&sslmode=no-verifyを加えることでSSLを要求し、証明書検証をスキップします。
DB_URLが定義されている場合、DB_HOSTNAME、DB_PORT、DB_USERNAME、DB_PASSWORDおよびDB_DATABASE_NAMEのデータベース変数は無視されます。
Redis
| 変数 | 説明 | デフォルト | コンテナ |
|---|---|---|---|
REDIS_URL | Redis URL | server | |
REDIS_SOCKET | Redisソケット | server | |
REDIS_HOSTNAME | Redisホスト | redis | server |
REDIS_PORT | Redisポート | 6379 | server |
REDIS_USERNAME | Redisユーザー名 | server | |
REDIS_PASSWORD | Redisパスワード | server | |
REDIS_DBINDEX | Redis DBインデックス | 0 | server |
すべてのREDIS_変数は、apiおよびmicroservicesを含むすべてのImmichワー カーに提供される必要があります。
REDIS_URLはioredis://で始まり、続いて構成に関する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*3 | HTTPキープアライブ時間(秒単位) | 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_ANN | ARM-NNハードウェアアクセラレーションをサポートする場合は有効化 | True | 機械学習 |
MACHINE_LEARNING_ANN_FP16_TURBO | 操作をFP16精度で実行: スピードアップ、精度低下(ARM-NNのみ適用) | False | 機械学習 |
MACHINE_LEARNING_ANN_TUNING_LEVEL | ARM-NN GPUチューニングレベル(1: 高速, 2: 通常, 3: 徹底的) | 2 | 機械学習 |
MACHINE_LEARNING_DEVICE_IDS*4 | マルチGPU環境で使用するデバイスID | 0 | 機械学習 |
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION | 顔認識モデルで一度に処理される顔の最大数を設定 | None (1 if using OpenVINO) | 機械学習 |
MACHINE_LEARNING_PING_TIMEOUT | MLサーバーが利用可能かどうかを確認するときにPING応答を待つ時間(ミリ秒) | 2000 | サーバー |
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIME | オフラインのMLサーバーを再試行するまで無視する時間 | 30000 | サーバー |
MACHINE_LEARNING_RKNN | RKNNハードウェアアクセラレーションをサポートする場合は有効化 | 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_HOSTNAME | DB_HOSTNAME_FILE*1 |
DB_DATABASE_NAME | DB_DATABASE_NAME_FILE*1 |
DB_USERNAME | DB_USERNAME_FILE*1 |
DB_PASSWORD | DB_PASSWORD_FILE*1 |
DB_URL | DB_URL_FILE*1 |
REDIS_PASSWORD | REDIS_PASSWORD_FILE*2 |
*1: 公式ドキュメントで、PostgresイメージでのDocker Secretsの使用方法について詳細を参照してください。
*2: Redisコンテナ内のパスワードのDocker Secretの使用方法については、このコメントを参照してください。