Immich: la alternativa a Google Fotos que tengo en mi NAS y cómo instalarla

Si estás buscando sustituir Google Fotos para no pagar la suscripción de Google One, la mejor alternativa que tienes ahora mismo y que es compatible con cualquier servidor NAS que soporte Docker, es el popular software Immich. Este software nos permitirá montarnos una completa galería de fotos y vídeos en local, nos permitirá realizar copias de seguridad de las fotos del móvil usando la aplicación oficial, podemos organizar todo el contenido en álbumes, realizar búsquedas avanzadas de nombres o sitios, e incluso podemos mostrar un mapa para ver todas las fotos relacionadas con un determinado lugar. Si quieres conocer todas las características, requisitos, cómo se instala y configura, en RedesZone os vamos a explicar todo en detalle.

Si tienes un NAS comercial como QNAP, Synology o UGREEN, debes saber que cada marca dispone de su propio software para gestionar las fotos y vídeos de forma más inteligente, sin necesidad de recurrir a softwares de terceros. Lo bueno de Immich es que es compatible con cualquier marca, ya que se instala sobre Docker como contenedor, por lo que, si cambiamos de una marca a otra, podremos seguir usándolo sin problemas, a diferencia de las aplicaciones privadas de cada marca.

 

Características y requisitos de instalación

Immich es el software por excelencia para sustituir a Google Fotos, de hecho, tenemos el mismo diseño vía web y casi las mismas funcionalidades. Las características más destacadas de este software son las siguientes:

  • Vamos a poder subir las fotos fácilmente tanto vía web como con la app oficial para smartphones.
  • Podemos configurar una copia de seguridad de la carpeta DCIM (fotos y vídeos) de nuestro smartphone, para así enviarla siempre a nuestro NAS y que esté disponible para los demás si es que lo compartimos.
  • Gestión de todas las fotos y vídeos de forma rápida y fácil.
  • Creación de álbumes con las fotos elegidas, para tener una organización de todas las fotos y vídeos.
  • Podemos configurar metadatos y etiquetas para mejorar una futura búsqueda de las fotos.
  • Realizar búsquedas avanzadas por lugares donde hemos estado, por geolocalización usando los metadatos de las fotos.
  • Reconocimiento facial de personas, para posteriormente hacer búsquedas avanzadas por personas ya que también tenemos reconocimiento facial.
  • Podemos marcar fotos y vídeos como favoritos, para que aparezcan en una sección exclusiva de «Favoritos».
  • Compartir fotos y vídeos, e incluso álbumes enteros con otras personas, sin necesidad de que tengan que crearse una cuenta de usuario. De hecho, podemos crear un álbum específico para compartir con las fotos y vídeos que queramos.

Otras características de Immich son que dispone de múltiples opciones de configuración y ajustes, también podemos ver estadísticas de visualización de fotos y vídeos, así como subidas, podemos crear claves API para conectarlo con otras aplicaciones y que tengan diferentes permisos, así como configurar notificaciones de cuando hay subidas, poner una contraseña o PIN para acceder a determinado contenido, y también administrar el uso compartido con otros usuarios de forma avanzada. Para acelerar la carga de todas las fotografías subidas, se generarán miniaturas de forma completamente automática. Otras funciones son las de extraer los metadatos de las fotos que hayamos subido, detectar archivos duplicados, detección mediante OCR de textos, transcodificación de vídeos y algunos ajustes de imagen e integridad avanzados.

Las aplicaciones de Immich para los sistemas operativos de Android y de iOS están disponibles en sus tiendas oficiales:

Immich
Immich
DEVELOPER:  
altran1502


DESCARGAR

googleplay logo

Con esta aplicación, podrás controlar todo el software desde el móvil de forma fácil y rápida.

 

Requisitos hardware

Immich es una aplicación muy completa y dispone de múltiples opciones avanzadas, como el reconocimiento facial, reconocimiento de texto mediante OCR y mucho más. Por este motivo, los requisitos de hardware son bastante exigentes, así que debes tenerlo en cuenta.

  • CPU: es necesario como mínimo 2 núcleos de procesador (Dual-Core), aunque es recomendable que tengamos 4 núcleos de procesador (Quad-Core). Immich solo funciona en procesadores amd64 y arm64. Desde la versión 3, el contenedor de machine learning en amd64 exige el nivel de microarquitectura x86-64-v2, que soportan la mayoría de CPU lanzadas desde 2012. Si tu NAS no lo cumple, la última versión compatible es la v2.7.5, que ya no recibe soporte.
  • RAM: es necesario como mínimo 6GB de memoria RAM, pero es recomendable que sean 8GB para que todo funcione con fluidez. Para garantizar el funcionamiento fluido durante la carga de archivos se requiere esta cantidad de RAM; no obstante, también podría funcionar con 4GB de RAM, pero deshabilitando las funciones de «Machine learning» como el reconocimiento facial, etc. Si limitamos los recursos de los contenedores en Docker, hay que reservar al menos 2 GB de RAM para la base de datos Postgres.
  • Almacenamiento: es recomendable usar un sistema de archivos compatible con Unix, como EXT4, ZFS o Btrfs, así como asignar los correspondientes permisos necesarios para leer y escribir en él. Un aspecto importante es que la generación de miniaturas y la transcodificación de los vídeos puede aumentar el tamaño necesario en un 10% o 20% adicional. En un programa como Immich es fundamental que la velocidad de lectura aleatoria sea rápida; por este motivo, se recomienda usar unidades SSD para acelerar esta velocidad lo máximo posible.

Como podéis ver, los requisitos para utilizar Immich son bastante exigentes, sobre todo en lo que se refiere a memoria RAM, porque lo habitual en un NAS doméstico son solo 8 GB para todo el sistema operativo y los modelos más avanzados tienen hasta 16 GB como máximo.

 

Requisitos software

En cuanto a los requisitos de software, lo único que debemos tener claro es que necesitaremos Docker para poder utilizarlo, con el plugin de Docker Compose que generalmente tenemos siempre instalado. No obstante, en el caso de no tenerlo instalado, es obligatorio ponerlo ya que se usará para la instalación de todo el software necesario. Gracias a que solamente necesitamos el requisito de Docker, cualquier sistema operativo de NAS que tenga esta funcionalidad nos permitirá instalar Immich sin ningún problema.

Otra opción es que podemos usar Immich en un clúster con Kubernetes, tenemos soporte para este software, por lo que también podemos usarlo con base de Kubernetes sin problemas.

 

Instalación y puesta en marcha

La instalación de Immich se realiza mediante un archivo de Docker Compose y otro archivo .env donde tendremos las variables de entorno con información de la base de datos, y también las contraseñas para la autenticación en dicha base de datos.

El contenido del archivo Docker Compose (en octubre de 2026) es el siguiente, aunque siempre es recomendable descargar la última versión disponible desde GitHub como os hemos indicado antes:

name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- model-cache:/cache
env_file:
- .env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:9@sha256:c123e3715db63d06d4ad6964884037aa0d5d4d703939b9929954112889708e1d
healthcheck:
test: redis-cli ping | grep -q PONG || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
# DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: always
healthcheck:
disable: false
volumes:
model-cache:

El contenido del archivo .env (en octubre de 2026) es el siguiente, aunque siempre es recomendable descargar la última versión disponible desde GitHub como os hemos indicado antes:

# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION=v3
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgres
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Lo más habitual cuando tenemos Docker en un servidor NAS es que también tengamos instalado Portainer, que es el gestor de dockers por excelencia, y todo ello con una interfaz gráfica de usuario fácil de entender. Gracias a Portainer, podemos iniciar, parar, reanudar e incluso editar los contenedores que tenemos en funcionamiento. También podremos levantar un «stack» con varios contenedores Docker, básicamente es copiar el Docker compose y desplegarlo. En la web oficial de Immich tenemos una guía de instalación con Portainer, y justamente es la que seguiremos nosotros para la instalación y puesta en marcha, no obstante, también tenemos un tutorial específico para Synology (usando Container Manager), QNAP (usando Container Station), TrueNAS (con el Docker nativo) y otros sistemas operativos para NAS.

En este tutorial vamos a usar un servidor NAS de QNAP donde ya tenemos instalado Portainer, y vamos a crear el «stack» con todo el software necesario para ello.

En Portainer nos vamos a «Stacks», y en «Create stack» le damos un nombre identificativo, y en la sección de «web editor» pegaremos el código de Docker-Compose.

Interfaz de Portainer en la sección Create stack con el editor web abierto para configurar Immich.
Interfaz del panel Portainer.io durante la creación de un nuevo stack mediante el editor web, mostrando el código YAML necesario para la instalación de Immich. Foto: Captura propia de RedesZone

El código de Docker Compose es el original que nos proporciona Immich, pero hemos cambiado dos cosas importantes:

  • Cambiamos «env_file:» a «- stack.env» porque Portainer gestiona las variables de entorno de forma centralizada en el stack, lo que facilita las actualizaciones sin editar el archivo .env manualmente.
  • Añadimos un volumen fijo para la caché (${CACHE_LOCATION}:/cache) en lugar de usar un volumen anónimo de Docker, para asegurarnos de que los modelos de machine learning se almacenan en nuestro rápido almacenamiento SSD y no se pierden al recrear el contenedor.

El código es el siguiente:

name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
env_file:
- stack.env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
# For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
# Example tag: ${IMMICH_VERSION:-release}-cuda
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
# extends: # uncomment this section for hardware acceleration - see https://docs.immich.app/features/ml-hardware-acceleration
# file: hwaccel.ml.yml
# service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
volumes:
- ${CACHE_LOCATION}:/cache
env_file:
- stack.env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:9@sha256:c123e3715db63d06d4ad6964884037aa0d5d4d703939b9929954112889708e1d
healthcheck:
test: redis-cli ping | grep -q PONG || exit 1
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
# DB_STORAGE_TYPE: 'HDD'
volumes:
# Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
- ${DB_DATA_LOCATION}:/var/lib/postgresql/data
shm_size: 128mb
restart: always
healthcheck:
disable: false

Al cargar el archivo .env con las variables de entorno, veremos que importará solamente lo importante, y no los comentarios:

Interfaz de Portainer.io mostrando el formulario de variables de entorno para la configuración de Immich.
Interfaz del panel Portainer.io durante la creación de un nuevo stack mediante el editor web, mostrando el código YAML necesario para la instalación de Immich. Foto: Captura propia de RedesZone

Panel de edición de variables de entorno en Portainer.io durante el proceso de instalación manual de Immich. Foto: Captura propia de RedesZoneEl archivo de configuración cargado es el siguiente:

# You can find documentation for all the supported env variables at https://docs.immich.app/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=/share/MaquinasVirtuales/Docker/immich/
CACHE_LOCATION=/share/MaquinasVirtuales/Docker/immich/cache/
# The location where your database files are stored. Network shares are not supported for the database
DB_DATA_LOCATION=/share/MaquinasVirtuales/Docker/postgres/
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
TZ=Europe/Madrid
# The Immich version to use. You can pin this to a specific version like "v2.1.0"
IMMICH_VERSION=v3
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=postgresclave
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immichbd

Una vez que hayamos copiado todo, pinchamos en «Deploy stack» y esperamos unos segundos hasta que se descarguen las imágenes, se creen y se levanten todas correctamente. Este proceso tardará más o menos tiempo, pero en uno o dos minutos debería estar funcionando. Al entrar en la sección del «Stack» recién configurado, veremos que todos los contenedores están en verde.

En estos momentos ya tenemos Immich funcionando, podemos entrar a través de la IP del NAS y usando el puerto 2283 que es el predeterminado. Immich utiliza por defecto HTTP para las conexiones, así que, si vas a conectarte de forma remota a través de Internet, deberías usar diferentes métodos para conectarte de forma segura, porque tanto la autenticación como todos los datos se hacen sin cifrado.

 

Opciones de configuración disponibles

Lo primero que debemos hacer para entrar en Immich es poner la dirección IP de nuestro NAS, seguido del puerto 2283 que es el predeterminado donde accederemos a la administración, y por donde nos conectaremos a este popular servicio que sustituye a Google Fotos. Si es la primera vez que accedes, nos aparecerá un asistente de configuración paso a paso, no obstante, también nos permitirá restaurar todos los datos de una copia de seguridad anterior, por si acaso cambias de servidor NAS.

Pantalla de bienvenida de Immich en un navegador web con el botón para comenzar la configuración.
Vista del asistente de configuración inicial de Immich tras completar la instalación manual en el servidor. Foto: Captura propia de RedesZone

Immich se gestiona completamente a través de la interfaz gráfica de usuario, no hay que ejecutar ningún tipo de comandos ni tampoco realizar complicadas configuraciones.

 

Asistente de configuración

En el primer menú del asistente tenemos que pinchar sobre «Comenzamos» para empezar con el asistente, después tenemos que introducir los datos del administrador del sistema. Los datos que nos pide Immich son el correo electrónico, una contraseña y también un nombre para identificar al usuario, una vez configurado, nos pedirá iniciar sesión con los datos que acabamos de introducir.

Al iniciar sesión nos dará la bienvenida, pinchamos en «Tema» y procedemos a elegir el tema claro o el tema oscuro, después elegiremos el idioma de la interfaz gráfica de usuario, si queremos compartir datos con Immich para su desarrollo y también qué plantilla queremos usar para las fotografías subidas. Esta opción la podemos cambiar más adelante, básicamente podemos no elegir ninguna plantilla, aunque lo lógico sería elegir una plantilla para tenerlo todo bien ordenado por fecha, o una estructura personalizada.

Las copias de seguridad son fundamentales en Immich, el propio asistente nos recomienda el esquema de copias de seguridad 3-2-1 que básicamente son 3 copias de todos los datos, una copia fuera del sitio y 2 copias locales. También nos recomendará instalar la aplicación móvil para visualizar todas las fotos y realizar las subidas desde el smartphone.

Una vez que terminemos el asistente de configuración, nos llevará al menú principal donde podremos ver un aspecto muy similar a Google Fotos.

 

Menú principal

En el menú principal podemos ver en la zona de la izquierda todas las opciones para interactuar con el servidor de fotos privado, desde ahí podemos acceder a las fotos, explorar las nuevas subidas, ver un mapa, los álbumes compartidos, así como también todas las fotos favoritas, los álbumes, ir a las utilidades, ver las fotos archivadas, las carpetas protegidas, así como la papelera. En la zona superior derecha podemos subir las fotos, cambiar el tema oscuro y claro, así como las notificaciones y también ir a todas las opciones de configuración avanzadas.