El mejor gestor de fotos autohospedado

Durante mucho tiempo he ido guardando las fotos que hacía, primero con varias cámaras digitales, posteriormente con distintos móviles en un directorio (o varios) de mi ordenador (posteriormente de alguno de los NAS que he montado). Preservar las fotos es algo que es muy importante para mi, son recuerdos enlatados que te permiten revivir los buenos (o no tan buenos) momentos del pasado y que sería traumático perder del todo.

El caso es que para poder clasificarlas, al menos por fecha, he estado usando varias opciones, google nos permitía guardar las fotos en una resolución menguante, aunque decía que así eran ilimitadas, hubo un momento en que Amazon ofreció lo mismo, pero se perdió en la bruma del tiempo, flickr y 500px se volvieron de pago y solo eran para fotos públicas. Finalmente termine utilizando el programa shotwell para ubuntu que me permitía importar las fotos nuevas y guardarlas en local… Synology también tenía su propio programa de fotografías pero era… muy malo.

Hasta que finalmente descubrí immich. Este sistema, open source completo, te permite guardar, organizar y gestionar tus fotos y videos fácilmente sin sacrificar privacidad. Te comento aquí los pasos más sencillos para tenerlo funcionando:

Básicamente tienes que tener un host o máquina virtual que tenga, al menos, 4Gb de memoria, un montón de disco duro para guardar todas las imágenes, docker y docker compose instalados.

Luego hay ciertas cosas que podrías querer hacer con IA y para las que podría venir bien tener una tarjeta gráfica… Pero eso es otra historia que no vamos a contar aquí.

Este sería el docker-compose.yml


name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /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
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm@sha256:fec42f399876eb6faf9e008570597741c87ff7662a54185593e74b09ce83d177
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Luego hay que crear un .env con los valores personalizados para nuestra instalación:


UPLOAD_LOCATION=./library
DB_DATA_LOCATION=./postgres
TZ=Europe/Madrid
IMMICH_VERSION=release
DB_PASSWORD=pon-aqui-un-password-para-postgres
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Obviamente elige el directorio que quieras para la bbdd y de donde vas a guardar las fotos y… Ya estaría.

docker compose up -d

Y ya tendrías una instalación vacía de immich lista para empezar a jugar. Lo primero que tendrás que hacer es crear la primera cuenta del sistema, que será de administración conectando con http://<dir-ip>:2283. A partir de ese momento ya podrás empezar a subir fotos como si no hubiese un mañana… De hecho puedes subir directorios enteros. Eso si, el tratamiento de las fotos tarda un poco porque se dedica a recopilar los datos internos de las fotos y a reconocer caras (para que luego puedas navegar por ellas), pero una vez que ya ha cogido ritmo cada foto subida va más rápido.

¿Qué más?

Es muy recomendable usar la aplicación móvil para sincronizar las fotos del teléfono con immich automáticamente, os dejo las direcciones para Android y iphone:

Cuando arranquéis la app os pedirá que pongáis la dirección de vuestro servidor (si tenéis una ip local solo funcionará dentro de vuestra red) y luego os pedirá que os autentiqueis momento a partir del cual ya podréis hacer copia de seguridad de los albumes que queráis de vuestro móvil (yo solo subo los de la cámara, whatsapp y demás no son demasiado «preservables»).

Y con esto ya estaría todo (salvo que queráis poner un proxy inverso para acceder desde fuera de vuestra red o un tunel de cloudflare o similar)… Eso si, reservad disco suficiente porque vais a necesitarlo…