Saltar al contenido principal

Variables de Entorno

precaución

Para cambiar las variables de entorno, debes recrear los contenedores de Immich. ¡Solo reiniciar los contenedores no reemplaza el entorno dentro del contenedor!

Para recrear el contenedor usando docker compose, ejecuta docker compose up -d. En la mayoría de los casos, docker reconocerá que el archivo .env ha cambiado y recreará los contenedores afectados. Si esto no funciona, intenta ejecutar docker compose up -d --force-recreate.

Docker Compose

VariableDescripciónPor DefectoContenedores
IMMICH_VERSIONEtiquetas de imagenreleaseservidor, aprendizaje automático
UPLOAD_LOCATIONRuta del host para subidasservidor
DB_DATA_LOCATIONRuta del host para la base de datos Postgresbase de datos
consejo

Estas variables de entorno son utilizadas por el archivo docker-compose.yml y NO afectan directamente a los contenedores.

General

VariableDescripciónPor DefectoContenedoresTrabajadores
TZZona horaria*1servidormicroservicios
IMMICH_ENVEntorno (producción, desarrollo)productionservidor, aprendizaje automáticoapi, microservicios
IMMICH_LOG_LEVELNivel de registro (verbose, debug, log, warn, error)logservidor, aprendizaje automáticoapi, microservicios
IMMICH_MEDIA_LOCATIONUbicación de medios dentro del contenedor ⚠️Probablemente no deberías configurar esto*2⚠️/usr/src/app/uploadservidorapi, microservicios
IMMICH_CONFIG_FILERuta al archivo de configuraciónservidorapi, microservicios
NO_COLORConfigurar en true para desactivar la salida de registros con códigos de colorfalseservidor, aprendizaje automático
CPU_CORESNúmero de núcleos disponibles para el servidor ImmichNúmero de núcleos de CPU detectado automáticamenteservidor
IMMICH_API_METRICS_PORTPuerto para las métricas OTEL8081servidorapi
IMMICH_MICROSERVICES_METRICS_PORTPuerto para las métricas OTEL8082servidormicroservicios
IMMICH_PROCESS_INVALID_IMAGESCuando está en true, genera miniaturas para imágenes no válidasservidormicroservicios
IMMICH_TRUSTED_PROXIESLista de IPs separadas por comas configuradas como proxies confiablesservidorapi
IMMICH_IGNORE_MOUNT_CHECK_ERRORSVer Integridad del sistemaservidorapi, microservicios

*1: TZ debe configurarse con un identificador de zona horaria de esta lista. Por ejemplo, TZ="Etc/UTC". TZ es utilizado por exiftool como alternativa en caso de que no se pueda determinar la zona horaria a partir de los metadatos de la imagen. También se utiliza para marcas de tiempo en los archivos de registro y la ejecución de cron jobs.

*2: Esta ruta es donde el código de Immich busca los archivos, lo cual es interno para el contenedor docker. Configurarlo a una ruta en tu host ciertamente causará problemas, deberías usar la variable UPLOAD_LOCATION en su lugar.

Trabajadores

VariableDescripciónPor DefectoContenedores
IMMICH_WORKERS_INCLUDESolo ejecuta estos trabajadores.servidor
IMMICH_WORKERS_EXCLUDENo ejecuta estos trabajadores. Coincide contra trabajadores predeterminados o IMMICH_WORKERS_INCLUDE si se especifica.servidor
información

La información sobre los trabajadores actuales se puede encontrar aquí.

Puertos

VariableDescripciónPor Defecto
IMMICH_HOSTHost autorizado0.0.0.0
IMMICH_PORTPuerto de escucha2283 (servidor), 3003 (aprendizaje automático)

Base de Datos

VariableDescripciónPor DefectoContenedores
DB_URLURL de la base de datosservidor
DB_HOSTNAMEHost de la base de datosdatabaseservidor
DB_PORTPuerto de la base de datos5432servidor
DB_USERNAMEUsuario de la base de datospostgresservidor, base de datos*1
DB_PASSWORDContraseña de la base de datospostgresservidor, base de datos*1
DB_DATABASE_NAMENombre de la base de datosimmichservidor, base de datos*1
DB_SSL_MODEModo SSL de la base de datosservidor
DB_VECTOR_EXTENSION*2Extensión vectorial de la base de datos (vectorchord, pgvector, pgvecto.rs)servidor
DB_SKIP_MIGRATIONSIgnorar la ejecución de migraciones en el inicio (true, false)falseservidor
DB_STORAGE_TYPEOptimización de IO concurrente en SSDs o IO secuencial en HDDs ([SSD, HDD])*3SSDservidor

*1: Los valores de DB_USERNAME, DB_PASSWORD y DB_DATABASE_NAME se pasan al contenedor de Postgres como las variables POSTGRES_USER, POSTGRES_PASSWORD y POSTGRES_DB en docker-compose.yml.

*2: Si no se proporciona, se detectará automáticamente cuál extensión usar durante el inicio introspectando la base de datos. Cuando se instalan múltiples extensiones, el orden de preferencia es VectorChord, pgvecto.rs, pgvector.

*3: Usa postgresql.ssd.conf o postgresql.hdd.conf, que principalmente controla la configuración effective_io_concurrency de Postgres para permitir IO concurrente en SSDs y IO secuencial en HDDs.

información

Todas las variables DB_ deben proporcionarse a todos los trabajadores de Immich, incluidos api y microservicios.

DB_URL debe tener el formato postgresql://usuario:contraseña@host:puerto/nombrebasededatos. Puedes requerir SSL agregando ?sslmode=require al final de la cadena de DB_URL, o requerir SSL y omitir la verificación del certificado agregando ?sslmode=require&sslmode=no-verify.

Cuando se define DB_URL, las variables de base de datos DB_HOSTNAME, DB_PORT, DB_USERNAME, DB_PASSWORD y DB_DATABASE_NAME son ignoradas.

Redis

VariableDescripciónPor DefectoContenedores
REDIS_URLURL de Redisservidor
REDIS_SOCKETSocket de Redisservidor
REDIS_HOSTNAMEHost de Redisredisservidor
REDIS_PORTPuerto de Redis6379servidor
REDIS_USERNAMEUsuario de Redisservidor
REDIS_PASSWORDContraseña de Redisservidor
REDIS_DBINDEXÍndice de BD de Redis0servidor
información

Todas las variables REDIS_ deben proporcionarse a todos los trabajadores de Immich, incluidos api y microservicios.

REDIS_URL debe comenzar con ioredis:// e incluir una cadena JSON codificada en base64 para la configuración. Puedes encontrar más información en la documentación de ioredis.

Cuando se definen REDIS_URL o REDIS_SOCKET, las variables REDIS_HOSTNAME, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD y REDIS_DBINDEX son ignoradas.

Ejemplo de URL de Redis (Sentinel) en JSON antes de codificación:

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

VariableDescripciónPredeterminadoContenedores
MACHINE_LEARNING_MODEL_TTLTiempo de inactividad (s) antes de que un modelo sea descargado (deshabilitado si <= 0)300machine learning
MACHINE_LEARNING_MODEL_TTL_POLL_SIntervalo (s) entre verificaciones del TTL del modelo (deshabilitado si <= 0)10machine learning
MACHINE_LEARNING_CACHE_FOLDERDirectorio donde se descargan los modelos/cachemachine learning
MACHINE_LEARNING_REQUEST_THREADS*1Cantidad de hilos del grupo de hilos de solicitud (deshabilitado si <= 0)número de núcleos de CPUmachine learning
MACHINE_LEARNING_MODEL_INTER_OP_THREADSNúmero de operaciones paralelas del modelo1machine learning
MACHINE_LEARNING_MODEL_INTRA_OP_THREADSNúmero de hilos por operación del modelo2machine learning
MACHINE_LEARNING_WORKERS*2Número de procesos de trabajo a crear1machine learning
MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S*3Tiempo de permanencia (keep-alive) en segundos para HTTP2machine learning
MACHINE_LEARNING_WORKER_TIMEOUTTiempo máximo (s) de falta de respuesta antes de que se elimine un trabajador120 (300 si se utiliza OpenVINO)machine learning
MACHINE_LEARNING_PRELOAD__CLIP__TEXTUALLista separada por comas de modelos CLIP (textuales) a precargar y almacenar en cachémachine learning
MACHINE_LEARNING_PRELOAD__CLIP__VISUALLista separada por comas de modelos CLIP (visuales) a precargar y almacenar en cachémachine learning
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITIONLista separada por comas de modelos de reconocimiento facial (reconocimiento) a precargarmachine learning
MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTIONLista separada por comas de modelos de reconocimiento facial (detección) a precargarmachine learning
MACHINE_LEARNING_ANNHabilitar aceleración de hardware ARM-NN si es compatibleTruemachine learning
MACHINE_LEARNING_ANN_FP16_TURBOEjecutar operaciones en precisión FP16: incrementando la velocidad, reduciendo la precisión (solo para ARM-NN)Falsemachine learning
MACHINE_LEARNING_ANN_TUNING_LEVELNivel de ajuste de GPU ARM-NN (1: rápido, 2: normal, 3: exhaustivo)2machine learning
MACHINE_LEARNING_DEVICE_IDS*4IDs de dispositivos a usar en entornos con múltiples GPUs0machine learning
MACHINE_LEARNING_MAX_BATCH_SIZE__FACIAL_RECOGNITIONEstablecer el número máximo de rostros que serán procesados al mismo tiempo por el modelo de reconocimiento facialNone (1 si se utiliza OpenVINO)machine learning
MACHINE_LEARNING_PING_TIMEOUTTiempo de espera (ms) para una respuesta PING al verificar si un servidor de ML está disponible2000server
MACHINE_LEARNING_AVAILABILITY_BACKOFF_TIMETiempo para ignorar servidores de ML desconectados antes de intentarlo nuevamente30000server
MACHINE_LEARNING_RKNNHabilitar aceleración de hardware RKNN si es compatibleTruemachine learning
MACHINE_LEARNING_RKNN_THREADSCantidad de hilos de tiempo de ejecución de RKNN a iniciar durante la inferencia.1machine learning

*1: Se recomienda comenzar con este parámetro al cambiar los niveles de concurrencia del servicio de aprendizaje automático y luego ajustar los demás.

*2: Dado que cada proceso duplica los modelos en memoria, cambiar esto no se recomienda a menos que disponga de suficiente memoria.

*3: Para escenarios como HPA en K8S. https://github.com/immich-app/immich/discussions/12064

*4: El uso de múltiples GPUs requiere que MACHINE_LEARNING_WORKERS se configure a un valor mayor que 1. Un solo dispositivo se asigna a cada trabajador en una prioridad de tipo round-robin.

información

Aunque el modelo textual es el único requerido para la búsqueda inteligente, algunos usuarios pueden experimentar ralentizaciones en las primeras búsquedas debido a que las copias de seguridad activan la carga de los otros modelos en memoria, lo que bloquea otras solicitudes hasta completarse. Para evitar esto, puede precargar los otros modelos (visual, reconocimiento y detección) si tiene suficiente RAM para hacerlo.

Se pueden ajustar parámetros adicionales de aprendizaje automático desde la interfaz de usuario del administrador.

Prometheus

VariableDescripciónPredeterminadoContenedoresWorkers
IMMICH_TELEMETRY_INCLUDERecopilar estas telemetrías. Lista de host, api, io, repo, job. Nota: También puede especificar all para habilitarlas todasserverapi, microservices
IMMICH_TELEMETRY_EXCLUDENo recopilar estas telemetrías. Lista de host, api, io, repo, jobserverapi, microservices

Docker Secrets

Las siguientes variables admiten el uso de Docker secrets para mayor seguridad.

Para usar cualquiera de estas, reemplace la variable de entorno regular por la variable de entorno equivalente _FILE. El valor de la variable _FILE debe ser la ruta de un archivo que contenga el valor de la variable.

Variable RegularVariable Equivalente 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: Consulte la documentación oficial para detalles sobre cómo usar Docker Secrets en la imagen de Postgres.

*2: Consulte este comentario para un ejemplo de cómo usar un Docker secret para la contraseña en el contenedor de Redis.