Variables d'environnement
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
Variable | Description | Défaut | Conteneurs |
---|---|---|---|
IMMICH_VERSION | Balises des images | release | serveur, apprentissage automatique |
UPLOAD_LOCATION | Chemin hôte pour les téléversements | serveur | |
DB_DATA_LOCATION | Chemin hôte pour la base de données Postgres | base 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
Variable | Description | Défaut | Conteneurs | Travailleurs |
---|---|---|---|---|
TZ | Fuseau horaire | *1 | serveur | microservices |
IMMICH_ENV | Environnement (production, développement) | production | serveur, apprentissage automatique | api, microservices |
IMMICH_LOG_LEVEL | Niveau de journalisation (verbose, debug, log, warn, error) | log | serveur, apprentissage automatique | api, microservices |
IMMICH_MEDIA_LOCATION | Emplacement des médias dans le conteneur ⚠️Vous ne devriez probablement pas configurer cela*2⚠️ | /usr/src/app/upload | serveur | api, microservices |
IMMICH_CONFIG_FILE | Chemin vers le fichier de configuration | serveur | api, microservices | |
NO_COLOR | Définir sur true pour désactiver la sortie de journal avec codes couleurs | false | serveur, apprentissage automatique | |
CPU_CORES | Nombre de cœurs disponibles pour le serveur Immich | Nombre de cœurs CPU détecté automatiquement | serveur | |
IMMICH_API_METRICS_PORT | Port pour les métriques OTEL | 8081 | serveur | api |
IMMICH_MICROSERVICES_METRICS_PORT | Port pour les métriques OTEL | 8082 | serveur | microservices |
IMMICH_PROCESS_INVALID_IMAGES | Lorsque défini à true , génère des miniatures pour les images invalides | serveur | microservices | |
IMMICH_TRUSTED_PROXIES | Liste d'adresses IP séparées par des virgules définies comme proxys de confiance | serveur | api | |
IMMICH_IGNORE_MOUNT_CHECK_ERRORS | Voir System Integrity | serveur | api, 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
Variable | Description | Défaut | Conteneurs |
---|---|---|---|
IMMICH_WORKERS_INCLUDE | Exécute uniquement ces travailleurs. | serveur | |
IMMICH_WORKERS_EXCLUDE | N'exécute pas ces travailleurs. Correspond aux travailleurs par défaut, ou à IMMICH_WORKERS_INCLUDE si spécifié. | serveur |
Les informations sur les travailleurs actuels peuvent être trouvées ici.
Ports
Variable | Description | Défaut |
---|---|---|
IMMICH_HOST | Hôte d'écoute | 0.0.0.0 |
IMMICH_PORT | Port d'écoute | 2283 (serveur), 3003 (apprentissage automatique) |
Base de données
Variable | Description | Défaut | Conteneurs |
---|---|---|---|
DB_URL | URL de la base de données | serveur | |
DB_HOSTNAME | Hôte de la base de données | database | serveur |
DB_PORT | Port de la base de données | 5432 | serveur |
DB_USERNAME | Utilisateur de la base de données | postgres | serveur, base de données*1 |
DB_PASSWORD | Mot de passe de la base de données | postgres | serveur, base de données*1 |
DB_DATABASE_NAME | Nom de la base de données | immich | serveur, base de données*1 |
DB_SSL_MODE | Mode SSL de la base de données | serveur | |
DB_VECTOR_EXTENSION *2 | Extension vectorielle de la base de données (parmi [vectorchord , pgvector , pgvecto.rs ]) | serveur | |
DB_SKIP_MIGRATIONS | Si les migrations doivent être ignorées au démarrage (parmi [true , false ]) | false | serveur |
DB_STORAGE_TYPE | Optimisation de l'E/S concurrentes sur les SSD ou séquentielles sur les HDD ([SSD , HDD ])*3 | SSD | serveur |
*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.
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
Variable | Description | Défaut | Conteneurs |
---|---|---|---|
REDIS_URL | URL de Redis | serveur | |
REDIS_SOCKET | Socket Redis | serveur | |
REDIS_HOSTNAME | Hôte Redis | redis | serveur |
REDIS_PORT | Port Redis | 6379 | serveur |
REDIS_USERNAME | Utilisateur Redis | serveur | |
REDIS_PASSWORD | Mot de passe Redis | serveur | |
REDIS_DBINDEX | Index de base de données Redis | 0 | serveur |
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
Variable | Description | Valeur par défaut | Conteneurs |
---|---|---|---|
MACHINE_LEARNING_MODEL_TTL | Temps d'inactivité (s) avant qu'un modèle ne soit déchargé (désactivé si <= 0) | 300 | machine learning |
MACHINE_LEARNING_MODEL_TTL_POLL_S | Intervalle (s) entre les vérifications pour le TTL du modèle (désactivé si <= 0) | 10 | machine learning |
MACHINE_LEARNING_CACHE_FOLDER | Répertoire où les modèles sont téléchargés | /cache | machine learning |
MACHINE_LEARNING_REQUEST_THREADS *1 | Nombre de threads du pool de threads de requête (désactivé si <= 0) | nombre de cœurs de CPU | machine learning |
MACHINE_LEARNING_MODEL_INTER_OP_THREADS | Nombre d'opérations paralèles pour le modèle | 1 | machine learning |
MACHINE_LEARNING_MODEL_INTRA_OP_THREADS | Nombre de threads pour chaque opération de modèle | 2 | machine learning |
MACHINE_LEARNING_WORKERS *2 | Nombre de processus de travail à générer | 1 | machine learning |
MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S *3 | Durée du Keep-alive HTTP en secondes | 2 | machine learning |
MACHINE_LEARNING_WORKER_TIMEOUT | Duré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__TEXTUAL | Liste séparée par des virgules des modèles CLIP (textuels) à précharger et mettre en cache | machine learning | |
MACHINE_LEARNING_PRELOAD__CLIP__VISUAL | Liste séparée par des virgules des modèles CLIP (visuels) à précharger et mettre en cache | machine learning | |
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION | Liste séparée par des virgules des modèles de reconnaissance faciale (reconnaissance) à précharger | machine learning | |
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION | Liste séparée par des virgules des modèles de reconnaissance faciale (détection) à précharger | machine learning | |
MACHINE_LEARNING_ANN | Activer l'accélération matérielle ARM-NN si supportée | True | machine learning |
MACHINE_LEARNING_ANN_FP16_TURBO | Exécute les opérations en précision FP16 : augmente la vitesse, réduit la précision (ARM-NN uniquement) | False | machine learning |
MACHINE_LEARNING_ANN_TUNING_LEVEL | Niveau de réglage de GPU ARM-NN (1: rapide, 2: normal, 3: exhaustif) | 2 | machine learning |
MACHINE_LEARNING_DEVICE_IDS *4 | Identifiants des dispositifs à utiliser dans les environnements multi-GPU | 0 | machine learning |
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITION | Définir le nombre maximum de visages à traiter en même temps par le modèle de reconnaissance faciale | Aucun (1 si OpenVINO est utilisé) | machine learning |
MACHINE_LEARNING_PING_TIMEOUT | Temps d'attente (ms) pour une réponse PING lors de la vérification de la disponibilité d'un serveur ML | 2000 | serveur |
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIME | Temps pendant lequel ignorer les serveurs ML hors ligne avant de réessayer | 30000 | serveur |
MACHINE_LEARNING_RKNN | Activer l'accélération matérielle RKNN si supportée | True | machine learning |
MACHINE_LEARNING_RKNN_THREADS | Nombre de threads de runtime RKNN à lancer lors de l'inférence. | 1 | machine 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.
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
Variable | Description | Valeur par défaut | Conteneurs | Travailleurs |
---|---|---|---|---|
IMMICH_TELEMETRY_INCLUDE | Collecter ces télémétries. Liste de host , api , io , repo , job . Note : Vous pouvez également spécifier all pour tout activer | serveur | api, microservices | |
IMMICH_TELEMETRY_EXCLUDE | Ne pas collecter ces télémétries. Liste de host , api , io , repo , job | serveur | api, 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 classique | Variable équivalente Secrets Docker _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 : 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.