Instala Immich en tu NAS con Portainer y guarda tus fotos y vídeos de forma privada y segura.


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.

Primer contacto con UGREEN NASync DXP4800
El UGREEN NASync DXP4800 es un NAS versátil basado en Debian 12, con opción de instalar Proxmox y separar datos de tu infraestructura principal.

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=immich
💡
Recuerda de poner una buena contraseña para DB_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

Haz que cada palabra cuente: tu donación nos inspira a seguir creando contenido. Accede al apartado de Donación para hacer tu aportación