Immich es una plataforma de fotos y vídeos autoalojada que te permite guardar, organizar y acceder a todos tus recuerdos desde cualquier lugar. Ofrece una interfaz web moderna y aplicaciones para iOS y Android, con funciones como reconocimiento facial, búsqueda inteligente, copias de seguridad automáticas y álbumes compartidos. Es una alternativa libre y privada a servicios como Google Photos, ideal para quienes buscan mantener el control total sobre sus archivos multimedia.
Portainer es una herramienta de gestión para Docker y Kubernetes. Ofrece una interfaz gráfica sencilla e intuitiva que facilita la administración de contenedores, imágenes, redes y volúmenes en Docker, así como el despliegue de recursos en entornos Kubernetes.
En este tutorial instalaremos Immich utilizando Portainer, sobre un NAS de UGREEN que cuenta con soporte nativo para Docker. Las rutas de los directorios utilizadas corresponden a los volúmenes creados en el propio NAS, lo que garantiza una configuración limpia, accesible y persistente para las fotos y vídeos almacenados.

Creación de Stack en Portainer
Accedemos a Portainer y, dentro de la sección Stacks, hacemos clic en el botón + Add Stack para crear una nueva pila.
Primero añadimos un nombre a nuestro stack y seleccionamos Web Editor y añadimos el siguiente contenido:
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
user: 1000:10
security_opt:
- no-new-privileges:true
volumes:
- /volume1/docker/immich/upload:/data:rw
env_file:
- stack.env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
immich-machine-learning:
container_name: immich_machine_learning
image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
user: 1000:10
security_opt:
- no-new-privileges:true
volumes:
- /volume1/docker/immich/upload:/data:rw
- /volume1/docker/immich/cache:/cache:rw
- /volume1/docker/immich/cache:/.cache:rw
- /volume1/docker/immich/cache:/.config:rw
- /volume1/docker/immich/matplotlib:/matplotlib:rw
env_file:
- stack.env
restart: always
healthcheck:
disable: false
redis:
container_name: immich_redis
image: docker.io/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
user: 1000:10
security_opt:
- no-new-privileges:true
environment:
- TZ=Europe/Madrid
healthcheck:
test: redis-cli ping || exit 1
volumes:
- /volume1/docker/immich/redis:/data:rw
restart: always
database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:8d292bdb796aa58bbbaa47fe971c8516f6f57d6a47e7172e62754feb6ed4e7b0
security_opt:
- no-new-privileges:true
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
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
- /volume1/docker/immich/db:/var/lib/postgresql/data:rw
shm_size: 128mb
restart: always
volumes:
model-cache:
Luego hacemos clic en Environment variables y añadimos las siguientes variables de entorno:
IMMICH_VERSION=release
DB_PASSWORD=postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immichDB_PASSWORD.En nuestro NAS deberemos crear un directorio principal para almacenar la configuración y los datos de Immich. Dentro de él, crearemos las siguientes carpetas:

Una vez creadas las carpetas, asegúrate de que las rutas coincidan con los volúmenes definidos en la configuración del stack. En concreto, estas son las rutas que utilizaremos:
- /volume1/docker/immich/upload:/data:rw
- /volume1/docker/immich/cache:/cache:rw
- /volume1/docker/immich/cache:/.cache:rw
- /volume1/docker/immich/cache:/.config:rw
- /volume1/docker/immich/matplotlib:/matplotlib:rw
- /volume1/docker/immich/redis:/data:rw
- /volume1/docker/immich/db:/var/lib/postgresql/data:rw
Guardamos los cambios y, desde Portainer, ya podemos desplegar nuestro Stack. Esperamos unos segundos a que todos los contenedores se inicien correctamente y, una vez en marcha, podremos acceder a Immich desde la IP de nuestro servidor y el puerto 2283.
Primer contacto: Immich
Tras la instalación, tendremos que abrir nuestro navegador e ir a la URL que nos indica el instalador con la IP que nos haya asignado y el puerto 2283.

El primer procedimiento que tenemos hacer, es crear un usuario administrador con una contraseña segura.
Tras esto, ya podremos acceder a la interfaz de Immich y subir desde el navegador contenido o bien configurar nuestro dispositivo móvil para cargar contenido.
Así se vería con contenido y uso de unos meses:

Immich se presenta como una de las mejores alternativas libres y autoalojadas a Google Photos. Su instalación mediante Portainer en un NAS como el de UGREEN facilita enormemente el despliegue, el mantenimiento y las copias de seguridad gracias a Docker.
Con Immich podrás centralizar todas tus fotos y vídeos, realizar copias automáticas desde el móvil, organizar tus recuerdos con inteligencia artificial y mantener el control total sobre tus datos, sin depender de servicios en la nube de terceros.
En definitiva, es una solución moderna, eficiente y privada para quienes valoran la libertad y la soberanía sobre sus archivos personales.
Más sobre ./voidNull
- 📖 Aprende todos sobre los comandos de GNU/Linux en nuestro Diccionario "De la A a la Z: Los comandos de GNU/Linux"
- 💪 ¡Forma parte de la Comunidad de ./voidNull!
- 🤖 Disfruta de todos nuestros Cursos sobre Ansible, Proxmox, Home Assistant entre otros.
- 📩 Mantente actualizado con lo último en GNU/Linux y Software Libre. Recibe nuestra Newsletter mensual.

Comentarios