Zum Hauptinhalt springen

Umgebungsvariablen

Um Umgebungsvariablen zu ändern, müssen die Immich-Container neu erstellt werden. Ein einfaches Neustarten der Container ersetzt nicht die Umgebung innerhalb des Containers!

Um den Container mithilfe von docker compose neu zu erstellen, führen Sie docker compose up -d aus. In den meisten Fällen erkennt Docker, dass sich die .env-Datei geändert hat, und erstellt die betroffenen Container neu. Falls dies nicht funktioniert, versuchen Sie docker compose up -d --force-recreate auszuführen.

Docker Compose

VariableBeschreibungStandardContainer
IMMICH_VERSIONImage-Tagsreleaseserver, machine learning
UPLOAD_LOCATIONHost-Pfad für Uploadsserver
DB_DATA_LOCATIONHost-Pfad für PostgreSQL-Datenbankdatenbank

Diese Umgebungsvariablen werden von der docker-compose.yml-Datei verwendet und beeinflussen die Container NICHT direkt.

Allgemein

VariableBeschreibungStandardContainerWorker
TZZeitzone*1servermicroservices
IMMICH_ENVUmgebung (production, development)productionserver, machine learningapi, microservices
IMMICH_LOG_LEVELLog-Level (verbose, debug, log, warn, error)logserver, machine learningapi, microservices
IMMICH_MEDIA_LOCATIONMedienspeicherort innerhalb des Containers ⚠️Dieser Wert sollte wahrscheinlich nicht gesetzt werden*2⚠️/usr/src/app/uploadserverapi, microservices
IMMICH_CONFIG_FILEPfad zur Konfigurationsdateiserverapi, microservices
NO_COLORSetzen Sie true, um farbige Log-Ausgaben zu deaktivierenfalseserver, machine learning
CPU_CORESAnzahl der CPU-Kerne, die dem Immich-Server zur Verfügung stehenAuto-Erkennung der CPU-Kerneserver
IMMICH_API_METRICS_PORTPort für die OTEL-Metriken8081serverapi
IMMICH_MICROSERVICES_METRICS_PORTPort für die OTEL-Metriken8082servermicroservices
IMMICH_PROCESS_INVALID_IMAGESWenn true, generieren Sie Miniaturansichten für ungültige Bilderservermicroservices
IMMICH_TRUSTED_PROXIESListe von durch Kommas getrennten IPs, die als vertrauenswürdige Proxies festgelegt sindserverapi
IMMICH_IGNORE_MOUNT_CHECK_ERRORSSiehe Systemintegritätserverapi, microservices

*1: TZ sollte auf einen TZ-Identifier aus dieser Liste gesetzt werden. Zum Beispiel: TZ="Etc/UTC". TZ wird von exiftool als Fallback verwendet, wenn die Zeitzone nicht aus den Bildmetadaten abgeleitet werden kann. Es wird außerdem für Zeitstempel in Logdateien und die Ausführung von Cron-Jobs verwendet.

*2: Dieser Pfad ist der Ort, an dem Immich nach Dateien sucht und ist innerhalb des Docker-Containers intern. Das Festlegen auf einen Pfad Ihres Hosts wird sicherlich Probleme verursachen; verwenden Sie stattdessen die Variable UPLOAD_LOCATION.

Worker

VariableBeschreibungStandardContainer
IMMICH_WORKERS_INCLUDEFühren Sie nur diese Worker aus.server
IMMICH_WORKERS_EXCLUDEFühren Sie diese Worker nicht aus. Abgleiche mit Standard-Workern oder IMMICH_WORKERS_INCLUDE, falls angegeben.server

Informationen zu den aktuellen Workern finden Sie hier.

Ports

VariableBeschreibungStandard
IMMICH_HOSTListening-Host0.0.0.0
IMMICH_PORTListening-Port2283 (server), 3003 (machine learning)

Datenbank

VariableBeschreibungStandardContainer
DB_URLDatenbank-URLserver
DB_HOSTNAMEDatenbank-Hostdatabaseserver
DB_PORTDatenbank-Port5432server
DB_USERNAMEDatenbank-Benutzerpostgresserver, datenbank*1
DB_PASSWORDDatenbank-Passwortpostgresserver, datenbank*1
DB_DATABASE_NAMEName der Datenbankimmichserver, datenbank*1
DB_SSL_MODEDatenbank-SSL-Modusserver
DB_VECTOR_EXTENSION*2Datenbank-Vektorerweiterung (eine von [vectorchord, pgvector, pgvecto.rs])server
DB_SKIP_MIGRATIONSOb das Ausführen von Migrationen beim Start übersprungen werden soll (eine von [true, false])falseserver
DB_STORAGE_TYPEOptimieren Sie gleichzeitiges IO auf SSDs oder sequentielles IO auf HDDs ([SSD, HDD])*3SSDserver

*1: Die Werte von DB_USERNAME, DB_PASSWORD und DB_DATABASE_NAME werden an den PostgreSQL-Container als Variablen POSTGRES_USER, POSTGRES_PASSWORD und POSTGRES_DB in der docker-compose.yml weitergegeben.

*2: Wenn nicht angegeben, wird die passende Erweiterung beim Start automatisch erkannt, indem die Datenbank inspiziert wird. Sind mehrere Erweiterungen installiert, lautet die Präferenzreihenfolge VectorChord, pgvecto.rs, pgvector.

*3: Verwendet entweder postgresql.ssd.conf oder postgresql.hdd.conf, die hauptsächlich die Postgres-Einstellung effective_io_concurrency steuern, um gleichzeitiges IO auf SSDs und sequentielles IO auf HDDs zu ermöglichen.

Alle DB_-Variablen müssen allen Immich-Workern zur Verfügung gestellt werden, einschließlich api und microservices.

DB_URL muss im Format postgresql://immichdbusername:immichdbpassword@postgreshost:postgresport/immichdatabasename sein. Sie können SSL verlangen, indem Sie ?sslmode=require an das Ende der DB_URL-Zeichenfolge anfügen, oder SSL verlangen und die Zertifikatsüberprüfung überspringen, indem Sie ?sslmode=require&sslmode=no-verify anfügen.

Wenn DB_URL definiert ist, werden die Datenbankvariablen DB_HOSTNAME, DB_PORT, DB_USERNAME, DB_PASSWORD und DB_DATABASE_NAME ignoriert.

Redis

VariableBeschreibungStandardContainer
REDIS_URLRedis-URLserver
REDIS_SOCKETRedis-Socketserver
REDIS_HOSTNAMERedis-Hostredisserver
REDIS_PORTRedis-Port6379server
REDIS_USERNAMERedis-Benutzernameserver
REDIS_PASSWORDRedis-Passwortserver
REDIS_DBINDEXRedis-DB-Index0server
Info

Alle REDIS_-Variablen müssen allen Immich-Workern zur Verfügung gestellt werden, einschließlich api und microservices.

REDIS_URL muss mit ioredis:// beginnen und dann eine base64-kodierte JSON-Zeichenfolge für die Konfiguration enthalten. Weitere Informationen finden Sie in der ioredis-Dokumentation.

Wenn REDIS_URL oder REDIS_SOCKET definiert sind, werden die Variablen REDIS_HOSTNAME, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD und REDIS_DBINDEX ignoriert.

Beispiel-JSON für Redis (Sentinel)-URL vor der Kodierung:

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"
}

Maschinelles Lernen

VariableBeschreibungStandardContainer
MACHINE_LEARNING_MODEL_TTLInaktivitätsdauer (s), bevor ein Modell entladen wird (deaktiviert, wenn <= 0)300Maschinelles Lernen
MACHINE_LEARNING_MODEL_TTL_POLL_SIntervall (s) zwischen den Überprüfungen der Modell-TTL (deaktiviert, wenn <= 0)10Maschinelles Lernen
MACHINE_LEARNING_CACHE_FOLDERVerzeichnis, in dem Modelle heruntergeladen werden/cacheMaschinelles Lernen
MACHINE_LEARNING_REQUEST_THREADS*1Anzahl der Threads des Anfrage-Threadpools (deaktiviert, wenn <= 0)Anzahl der CPU-KerneMaschinelles Lernen
MACHINE_LEARNING_MODEL_INTER_OP_THREADSAnzahl paralleler Modelloperationen1Maschinelles Lernen
MACHINE_LEARNING_MODEL_INTRA_OP_THREADSAnzahl der Threads für jede Modelloperation2Maschinelles Lernen
MACHINE_LEARNING_WORKERS*2Anzahl der zu startenden Arbeitsprozesse1Maschinelles Lernen
MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S*3HTTP-Keep-Alive-Zeit in Sekunden2Maschinelles Lernen
MACHINE_LEARNING_WORKER_TIMEOUTMaximale Zeit (s) der Antwortlosigkeit, bevor ein Arbeiter beendet wird120 (300 bei OpenVINO)Maschinelles Lernen
MACHINE_LEARNING_PRELOAD__CLIP__TEXTUALKommagetrennte Liste der CLIP-Modelle (textuell), die vorab geladen und zwischengespeichert werdenMaschinelles Lernen
MACHINE_LEARNING_PRELOAD__CLIP__VISUALKommagetrennte Liste der CLIP-Modelle (visuell), die vorab geladen und zwischengespeichert werdenMaschinelles Lernen
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITIONKommagetrennte Liste der Gesichtserkennungsmodelle (Erkennung), die vorab geladen und zwischengespeichert werdenMaschinelles Lernen
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTIONKommagetrennte Liste der Gesichtserkennungsmodelle (Erkennung), die vorab geladen und zwischengespeichert werdenMaschinelles Lernen
MACHINE_LEARNING_ANNARM-NN-Hardware-Beschleunigung aktivieren, falls unterstütztTrueMaschinelles Lernen
MACHINE_LEARNING_ANN_FP16_TURBOFP16-Gleitkomma-Operationen ausführen: erhöht Geschwindigkeit, verringert Präzision (betrifft nur ARM-NN)FalseMaschinelles Lernen
MACHINE_LEARNING_ANN_TUNING_LEVELARM-NN-GPU-Tuning-Level (1: schnell, 2: normal, 3: ausführlich)2Maschinelles Lernen
MACHINE_LEARNING_DEVICE_IDS*4Geräte-IDs für den Einsatz in Multi-GPU-Umgebungen0Maschinelles Lernen
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITIONLegt die maximale Anzahl der Gesichter fest, die gleichzeitig vom Gesichtserkennungsmodell verarbeitet werdenKeine (1 bei OpenVINO)Maschinelles Lernen
MACHINE_LEARNING_PING_TIMEOUTWartezeit (ms) für eine PING-Antwort beim Überprüfen der Verfügbarkeit eines ML-Servers2000Server
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIMEWartezeit, bevor Offline-ML-Server erneut getestet werden30000Server
MACHINE_LEARNING_RKNNRKNN-Hardware-Beschleunigung aktivieren, falls unterstütztTrueMaschinelles Lernen
MACHINE_LEARNING_RKNN_THREADSAnzahl der RKNN-Laufzeit-Threads, die für Inferencing gestartet werden.1Maschinelles Lernen

*1: Es wird empfohlen, mit diesem Parameter zu beginnen, wenn man die Parallelitätsstufen des Services für maschinelles Lernen anpassen möchte, und anschließend die anderen Parameter zu optimieren.

*2: Da jeder Prozess Modelle im Speicher dupliziert, wird eine Änderung dieses Parameters nicht empfohlen, es sei denn, es steht ausreichend Speicher zur Verfügung.

*3: Für Szenarien wie HPA in K8S. https://github.com/immich-app/immich/discussions/12064

*4: Die Nutzung mehrerer GPUs erfordert, dass MACHINE_LEARNING_WORKERS auf einen Wert > 1 gesetzt wird. Ein einzelnes Gerät wird jedem Arbeiter im Round-Robin-Prioritätsmodus zugewiesen.

Info

Während das textual Modell das einzige ist, das für die intelligente Suche erforderlich ist, könnten einige Benutzer langsame erste Suchen erleben wegen Backups, die das Laden der anderen Modelle in den Speicher auslösen, was andere Anfragen blockiert, bis abgeschlossen. Um dies zu vermeiden, können Sie die anderen Modelle (visual, recognition und detection) vorab laden, wenn Sie über genügend RAM verfügen.

Zusätzliche Parameter für maschinelles Lernen können über die Admin-UI angepasst werden.

Prometheus

VariableBeschreibungStandardContainerArbeiter
IMMICH_TELEMETRY_INCLUDEDiese Telemetrien sammeln. Liste von host, api, io, repo, job. Hinweis: Sie können auch all angeben, um alle zu aktivierenServerAPI, Microservices
IMMICH_TELEMETRY_EXCLUDEDiese Telemetrien nicht sammeln. Liste von host, api, io, repo, jobServerAPI, Microservices

Docker Secrets

Die folgenden Variablen unterstützen die Verwendung von Docker Secrets für zusätzliche Sicherheit.

Für die Nutzung einer dieser Variablen ersetzen Sie die reguläre Umgebungsvariable durch die entsprechende _FILE-Umgebungsvariable. Der Wert der _FILE-Variable sollte auf den Pfad einer Datei gesetzt werden, die den Variablenwert enthält.

Reguläre VariableÄquivalente Docker Secrets _FILE Variable
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: Siehe die offizielle Dokumentation für Details zur Verwendung von Docker Secrets im Postgres-Image.

*2: Siehe diesen Kommentar für ein Beispiel zur Verwendung eines Docker Secrets für das Passwort im Redis-Container.