Passer au contenu principal

Variables d'environnement

prudence

Pour modifier les variables d'environnement, vous devez recréer les conteneurs Immich. Redémarrer simplement les conteneurs ne remplace pas l'environnement à l'intérieur du conteneur !

Pour recréer le conteneur à l'aide de docker compose, exécutez docker compose up -d. Dans la plupart des cas, docker identifiera que le fichier .env a été modifié et recréera les conteneurs concernés. Si cela ne fonctionne pas, essayez d'exécuter docker compose up -d --force-recreate.

Docker Compose

VariableDescriptionDéfautConteneurs
IMMICH_VERSIONBalises des imagesreleaseserveur, apprentissage automatique
UPLOAD_LOCATIONChemin hôte pour les téléversementsserveur
DB_DATA_LOCATIONChemin hôte pour la base de données Postgresbase de données

Ces variables d'environnement sont utilisées par le fichier docker-compose.yml et n'affectent PAS directement les conteneurs.

Général

VariableDescriptionDéfautConteneursTravailleurs
TZFuseau horaire*1serveurmicroservices
IMMICH_ENVEnvironnement (production, développement)productionserveur, apprentissage automatiqueapi, microservices
IMMICH_LOG_LEVELNiveau de journalisation (verbose, debug, log, warn, error)logserveur, apprentissage automatiqueapi, microservices
IMMICH_MEDIA_LOCATIONEmplacement des médias dans le conteneur ⚠️Vous ne devriez probablement pas configurer cela*2⚠️/usr/src/app/uploadserveurapi, microservices
IMMICH_CONFIG_FILEChemin vers le fichier de configurationserveurapi, microservices
NO_COLORDéfinir sur true pour désactiver la sortie de journal avec codes couleursfalseserveur, apprentissage automatique
CPU_CORESNombre de cœurs disponibles pour le serveur ImmichNombre de cœurs CPU détecté automatiquementserveur
IMMICH_API_METRICS_PORTPort pour les métriques OTEL8081serveurapi
IMMICH_MICROSERVICES_METRICS_PORTPort pour les métriques OTEL8082serveurmicroservices
IMMICH_PROCESS_INVALID_IMAGESLorsque défini à true, génère des miniatures pour les images invalidesserveurmicroservices
IMMICH_TRUSTED_PROXIESListe d'adresses IP séparées par des virgules définies comme proxys de confianceserveurapi
IMMICH_IGNORE_MOUNT_CHECK_ERRORSVoir System Integrityserveurapi, microservices

*1 : TZ doit être défini à un identifiant de fuseau horaire tiré de cette liste. Par exemple, TZ="Etc/UTC". Le TZ est utilisé par exiftool comme solution de secours lorsque le fuseau horaire ne peut pas être déterminé à partir des métadonnées de l'image. Il est également utilisé pour les horodatages de fichiers journaux et l'exécution de tâches cron.

*2 : Ce chemin est l'endroit où le code Immich recherche les fichiers, ce qui est interne au conteneur docker. Le définir sur un chemin de votre hôte provoquerait certainement des problèmes ; vous devriez utiliser la variable UPLOAD_LOCATION à la place.

Travailleurs

VariableDescriptionDéfautConteneurs
IMMICH_WORKERS_INCLUDEExécute uniquement ces travailleurs.serveur
IMMICH_WORKERS_EXCLUDEN'exécute pas ces travailleurs. Correspond aux travailleurs par défaut, ou à IMMICH_WORKERS_INCLUDE si spécifié.serveur
info

Les informations sur les travailleurs actuels peuvent être trouvées ici.

Ports

VariableDescriptionDéfaut
IMMICH_HOSTHôte d'écoute0.0.0.0
IMMICH_PORTPort d'écoute2283 (serveur), 3003 (apprentissage automatique)

Base de données

VariableDescriptionDéfautConteneurs
DB_URLURL de la base de donnéesserveur
DB_HOSTNAMEHôte de la base de donnéesdatabaseserveur
DB_PORTPort de la base de données5432serveur
DB_USERNAMEUtilisateur de la base de donnéespostgresserveur, base de données*1
DB_PASSWORDMot de passe de la base de donnéespostgresserveur, base de données*1
DB_DATABASE_NAMENom de la base de donnéesimmichserveur, base de données*1
DB_SSL_MODEMode SSL de la base de donnéesserveur
DB_VECTOR_EXTENSION*2Extension vectorielle de la base de données (parmi [vectorchord, pgvector, pgvecto.rs])serveur
DB_SKIP_MIGRATIONSSi les migrations doivent être ignorées au démarrage (parmi [true, false])falseserveur
DB_STORAGE_TYPEOptimisation de l'E/S concurrentes sur les SSD ou séquentielles sur les HDD ([SSD, HDD])*3SSDserveur

*1 : Les valeurs de DB_USERNAME, DB_PASSWORD et DB_DATABASE_NAME sont transmises au conteneur Postgres en tant que variables POSTGRES_USER, POSTGRES_PASSWORD et POSTGRES_DB dans docker-compose.yml.

*2 : Si non fourni, l'extension appropriée à utiliser est détectée automatiquement au démarrage en inspectant la base de données. Lorsque plusieurs extensions sont installées, l'ordre de préférence est VectorChord, pgvecto.rs, pgvector.

*3 : Utilise soit postgresql.ssd.conf soit postgresql.hdd.conf, qui contrôle principalement le paramètre effective_io_concurrency de Postgres permettant les E/S concurrentes sur les SSD et séquentielles sur les HDD.

info

Toutes les variables DB_ doivent être fournies à tous les travailleurs Immich, y compris api et microservices.

DB_URL doit être au format postgresql://utilisateur:motdepasse@hôte:port/nombasededonnées. Vous pouvez exiger le SSL en ajoutant ?sslmode=require à la fin de la chaîne DB_URL, ou exiger le SSL et ignorer la vérification du certificat en ajoutant ?sslmode=require&sslmode=no-verify.

Lorsque DB_URL est défini, les variables de base de données DB_HOSTNAME, DB_PORT, DB_USERNAME, DB_PASSWORD et DB_DATABASE_NAME sont ignorées.

Redis

VariableDescriptionDéfautConteneurs
REDIS_URLURL de Redisserveur
REDIS_SOCKETSocket Redisserveur
REDIS_HOSTNAMEHôte Redisredisserveur
REDIS_PORTPort Redis6379serveur
REDIS_USERNAMEUtilisateur Redisserveur
REDIS_PASSWORDMot de passe Redisserveur
REDIS_DBINDEXIndex de base de données Redis0serveur
info

Toutes les variables REDIS_ doivent être fournies à tous les travailleurs Immich, y compris api et microservices.

REDIS_URL doit commencer par ioredis:// et inclure une chaîne JSON encodée en base64 pour la configuration. Plus d'informations sont disponibles dans la documentation en amont ioredis.

Lorsque REDIS_URL ou REDIS_SOCKET sont définis, les variables REDIS_HOSTNAME, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD et REDIS_DBINDEX sont ignorées.

Exemple de JSON pour l'URL Redis (Sentinel) avant l'encodage :

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

Apprentissage automatique

VariableDescriptionValeur par défautConteneurs
MACHINE_LEARNING_MODEL_TTLTemps d'inactivité (s) avant qu'un modèle ne soit déchargé (désactivé si <= 0)300machine learning
MACHINE_LEARNING_MODEL_TTL_POLL_SIntervalle (s) entre les vérifications pour le TTL du modèle (désactivé si <= 0)10machine learning
MACHINE_LEARNING_CACHE_FOLDERRépertoire où les modèles sont téléchargés/cachemachine learning
MACHINE_LEARNING_REQUEST_THREADS*1Nombre de threads du pool de threads de requête (désactivé si <= 0)nombre de cœurs de CPUmachine learning
MACHINE_LEARNING_MODEL_INTER_OP_THREADSNombre d'opérations paralèles pour le modèle1machine learning
MACHINE_LEARNING_MODEL_INTRA_OP_THREADSNombre de threads pour chaque opération de modèle2machine learning
MACHINE_LEARNING_WORKERS*2Nombre de processus de travail à générer1machine learning
MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S*3Durée du Keep-alive HTTP en secondes2machine learning
MACHINE_LEARNING_WORKER_TIMEOUTDurée maximale (s) d'insensibilité avant qu'un processus de travail ne soit tué120 (300 si OpenVINO est utilisé)machine learning
MACHINE_LEARNING_PRELOAD__CLIP__TEXTUALListe séparée par des virgules des modèles CLIP (textuels) à précharger et mettre en cachemachine learning
MACHINE_LEARNING_PRELOAD__CLIP__VISUALListe séparée par des virgules des modèles CLIP (visuels) à précharger et mettre en cachemachine learning
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITIONListe séparée par des virgules des modèles de reconnaissance faciale (reconnaissance) à préchargermachine learning
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTIONListe séparée par des virgules des modèles de reconnaissance faciale (détection) à préchargermachine learning
MACHINE_LEARNING_ANNActiver l'accélération matérielle ARM-NN si supportéeTruemachine learning
MACHINE_LEARNING_ANN_FP16_TURBOExécute les opérations en précision FP16 : augmente la vitesse, réduit la précision (ARM-NN uniquement)Falsemachine learning
MACHINE_LEARNING_ANN_TUNING_LEVELNiveau de réglage de GPU ARM-NN (1: rapide, 2: normal, 3: exhaustif)2machine learning
MACHINE_LEARNING_DEVICE_IDS*4Identifiants des dispositifs à utiliser dans les environnements multi-GPU0machine learning
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITIONDéfinir le nombre maximum de visages à traiter en même temps par le modèle de reconnaissance facialeAucun (1 si OpenVINO est utilisé)machine learning
MACHINE_LEARNING_PING_TIMEOUTTemps d'attente (ms) pour une réponse PING lors de la vérification de la disponibilité d'un serveur ML2000serveur
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIMETemps pendant lequel ignorer les serveurs ML hors ligne avant de réessayer30000serveur
MACHINE_LEARNING_RKNNActiver l'accélération matérielle RKNN si supportéeTruemachine learning
MACHINE_LEARNING_RKNN_THREADSNombre de threads de runtime RKNN à lancer lors de l'inférence.1machine learning

*1 : Il est recommandé de commencer avec ce paramètre lors du changement des niveaux de concurrence du service d'apprentissage automatique, puis d'ajuster les autres.

*2 : Comme chaque processus duplique les modèles en mémoire, changer cela n'est pas recommandé sauf si vous avez une mémoire abondante.

*3 : Pour des scénarios comme HPA dans K8S. https://github.com/immich-app/immich/discussions/12064

*4 : L'utilisation de plusieurs GPU nécessite que MACHINE_LEARNING_WORKERS soit réglé à une valeur supérieure à 1. Un seul appareil est attribué à chaque travailleur par priorité ronde.

info

Bien que le modèle « textuel » soit le seul requis pour une recherche intelligente, certains utilisateurs peuvent rencontrer des lenteurs lors des premières recherches en raison de sauvegardes déclenchant le chargement des autres modèles en mémoire, ce qui bloque les autres requêtes jusqu'à leur achèvement. Pour éviter cela, vous pouvez précharger les autres modèles (« visuel », « reconnaissance » et « détection ») si vous disposez de suffisamment de RAM.

Des paramètres supplémentaires d'apprentissage automatique peuvent être ajustés depuis l'interface d'administration.

Prometheus

VariableDescriptionValeur par défautConteneursTravailleurs
IMMICH_TELEMETRY_INCLUDECollecter ces télémétries. Liste de host, api, io, repo, job. Note : Vous pouvez également spécifier all pour tout activerserveurapi, microservices
IMMICH_TELEMETRY_EXCLUDENe pas collecter ces télémétries. Liste de host, api, io, repo, jobserveurapi, microservices

Secrets Docker

Les variables suivantes prennent en charge l'utilisation des secrets Docker pour une sécurité accrue.

Pour utiliser l'une d'entre elles, remplacez la variable d'environnement classique par la variable équivalente _FILE. La valeur de la variable _FILE doit être définie sur le chemin d'un fichier contenant la valeur de la variable.

Variable classiqueVariable équivalente Secrets Docker _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 : Consultez la documentation officielle pour des détails sur l'utilisation des Secrets Docker dans l'image Postgres.

*2 : Consultez ce commentaire pour un exemple de l'utilisation d'un secret Docker pour le mot de passe dans le conteneur Redis.