Ir al contenido
  1. Posts/

Immich: abandona Google Photos sin perder nada

Había una cosa que no quería soltar de Google: mis fotos. Todo lo demás era fácil de migrar. El correo, los documentos, el calendario. Pero diez años de fotos familiares en la nube de Google me tenían atado de una forma que me fastidiaba reconocer.

Immich cambió eso.

Llevo varios meses con más de 80.000 fotos en mi propio servidor, backup automático desde el móvil, reconocimiento facial que funciona de verdad, y cero preocupación de que Google decida cambiar sus condiciones o cerrar el servicio gratis. En este artículo te cuento cómo funciona, cómo lo monté y qué cosas me costaron más de lo esperado.

Por qué dejé Google Photos
#

No fue por privacidad, aunque eso también importa. Fue principalmente porque Google Photos empezó a recortarse: primero el almacenamiento “gratis” desapareció, luego la calidad de compresión cambia según el plan, y la app se pone cada vez más pesada con funciones que no pedí.

Tengo un NAS con bastante espacio libre y un cluster de contenedores en casa. No tiene mucho sentido pagar a Google cuando el hardware ya está ahí. El coste real es el tiempo de montaje, y ese tiempo lo recuperas rápido.

Qué es Immich exactamente
#

Immich es un gestor de fotos self-hosted diseñado para ser la alternativa a Google Photos. No una alternativa inspirada vagamente: una copia funcional de la experiencia, con algunas cosas que en mi opinión están mejor.

Tiene app móvil para iOS y Android con backup automático en segundo plano. Reconocimiento facial con Machine Learning local. Búsqueda por texto (“perro en la playa”), línea de tiempo, álbumes, compartir fotos con otros usuarios, soporte para RAW. Y una interfaz web que parece Google Photos del año pasado, lo cual es un cumplido.

El proyecto lleva un ritmo de desarrollo brutal. Se actualiza cada pocas semanas con funciones nuevas. La comunidad en GitHub es activa y los mantenedores responden rápido.

Antes de empezar: qué necesitas
#

Para correr Immich decentemente necesitas al menos:

  • CPU con varios núcleos: el reconocimiento facial usa bastante CPU en el proceso de indexado inicial
  • 8 GB RAM como mínimo, 16 GB si tienes biblioteca grande
  • Almacenamiento: tanto como ocupen tus fotos, más un 20-30% de margen
  • Docker con Docker Compose instalado

Si tienes GPU NVIDIA o Intel QuickSync, Immich puede aprovecharlo para el procesado de vídeo y para el ML. En mi caso uso la CPU y funciona perfectamente, solo que el indexado inicial tarda varias horas con 80.000 fotos.

Instalación con Docker Compose
#

La forma recomendada es con Docker Compose oficial. El proyecto mantiene un docker-compose.yml actualizado que incluye todos los servicios necesarios.

Crea una carpeta para el proyecto:

1
2
mkdir ~/immich
cd ~/immich

Descarga el compose y el archivo de entorno de ejemplo:

1
2
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env

Edita el .env con los valores que necesitas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# Ruta donde se guardarán las fotos
UPLOAD_LOCATION=/ruta/a/tus/fotos

# Configuración PostgreSQL
DB_PASSWORD=cambia-esto-por-algo-seguro
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

# Clave secreta para JWT
JWT_SECRET=$(openssl rand -base64 32)

# Zona horaria
TZ=Europe/Madrid

La variable UPLOAD_LOCATION es importante: apunta a la carpeta del NAS o disco donde quieres que Immich guarde las fotos. Yo la monté como volumen NFS desde el NAS, pero puede ser cualquier ruta local.

Levanta los servicios:

1
docker compose up -d

La primera vez tarda un rato porque descarga las imágenes del servidor ML, que pesan bastante. Cuando termine, accede a http://tu-servidor:2283 y crea el usuario administrador.

El import inicial: migrar desde Google Photos
#

Este es el paso que más da respeto. Tienes dos opciones.

Opción 1: Google Takeout

Descarga todo desde Google Takeout y usa la herramienta oficial immich-go para importar:

1
2
3
4
5
6
# Descarga immich-go
curl -LO https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_arm64.tar.gz
tar xf immich-go_Linux_arm64.tar.gz

# Importa desde carpeta de Takeout
./immich-go upload --server http://tu-servidor:2283 --key TU_API_KEY /ruta/al/takeout/

immich-go es inteligente: lee los metadatos del JSON que incluye Google Takeout para recuperar fechas correctas, que de otro modo se pierden porque el EXIF a veces no coincide.

Opción 2: carpeta de fotos directa

Si ya tienes las fotos en un servidor local (descargadas antes, copiadas desde un disco, etc.), Immich tiene un mecanismo de “external library” que indexa una carpeta sin mover los archivos:

En la interfaz admin, ve a Administration > External Libraries > Create Library, apunta a la carpeta y ejecuta un escaneo. Las fotos aparecen en la interfaz sin duplicarse en el almacenamiento.

Yo usé la segunda opción porque ya tenía un backup de fotos en el NAS. El escaneo inicial de 80.000 fotos tardó unas cuatro horas.

Reconocimiento facial y búsqueda por IA
#

Esto es lo que más sorprende cuando ves Immich por primera vez. El Machine Learning corre completamente local en tu servidor, sin mandar nada a ninguna nube.

Después del import, Immich empieza a procesar las fotos en segundo plano. Va generando embeddings para búsqueda semántica y detectando caras. El proceso se llama “smart search” y el de caras “facial recognition”.

La búsqueda por texto funciona bien en inglés y razonablemente en español. Puedes escribir “playa verano” y te aparecen fotos de playas aunque no hayas etiquetado nada. Puedes escribir “perro” y aparecen fotos de tu perro. No es perfecta pero es bastante útil.

Para el reconocimiento facial, Immich agrupa automáticamente las caras detectadas y tú las etiquetas con nombres. Después asocia fotos nuevas con esas personas automáticamente. Con mi biblioteca, el reconocimiento funciona bien para caras que aparecen frecuentemente, algo peor con caras que aparecen poco o en fotos de mala calidad.

La app móvil
#

La app es el verdadero cambio de vida. La instalas, apuntas a tu servidor, y activas el backup automático. A partir de ahí, cada foto que haces en el móvil se sube a tu servidor en segundo plano cuando estás en WiFi (o en datos si lo configuras así).

La experiencia es casi idéntica a Google Photos. Puedes ver tu biblioteca, buscar, compartir. La sincronización va bien aunque a veces tarda un poco más que Google en subir fotos inmediatamente.

Una cosa que me gustó: puedes configurar qué álbumes del móvil se sincronizan. Así no se suben capturas de pantalla ni fotos de WhatsApp si no quieres.

Compartir fotos con la familia
#

Immich tiene un sistema de usuarios múltiples. Cada persona tiene su propia biblioteca. Puedes crear usuarios para tu pareja o familia y cada uno hace backup de su propio móvil al mismo servidor.

También hay “shared albums”: creas un álbum, invitas a otros usuarios del servidor, y pueden ver y añadir fotos. Funciona bien para organizar eventos familiares o viajes.

Para compartir fotos con personas que no tienen cuenta en tu servidor, puedes generar enlaces públicos con tiempo de expiración. Útil cuando quieres mandar fotos a los abuelos sin darles acceso completo.

Reverse proxy y acceso externo
#

Para acceder a Immich desde fuera de casa necesitas exponerlo. Yo lo tengo detrás de un reverse proxy con HTTPS.

Si usas Nginx Proxy Manager, añadir Immich es sencillo: crea un proxy host apuntando a tu-servidor:2283, activa SSL con Let’s Encrypt, y listo. El único detalle es el tamaño máximo de upload: necesitas aumentar client_max_body_size en la configuración del proxy para que no fallen las subidas grandes.

1
2
3
4
# En la configuración avanzada de NPM
client_max_body_size 50000M;
proxy_read_timeout 600s;
proxy_send_timeout 600s;

Sin eso, los vídeos largos fallan en la subida.

Consumo de recursos en producción
#

Con mi configuración actual y ~80.000 fotos:

  • RAM: Immich usa entre 1,5 y 3 GB dependiendo de la actividad. El servicio ML puede subir a 4-5 GB durante el indexado
  • CPU: en reposo, casi nada. Durante indexado ML, todos los núcleos al máximo durante horas
  • Disco: mis fotos ocupan ~180 GB. La base de datos PostgreSQL con thumbnails y embeddings añade otros 15 GB aproximadamente
  • Red: el backup automático del móvil funciona en segundo plano, apenas se nota

Una vez terminado el indexado inicial, el sistema va muy suave. El ML solo trabaja cuando llegan fotos nuevas.

Cosas que no funcionan perfectamente
#

No quiero que esto parezca un anuncio. Hay cosas que cuestan.

El indexado inicial es lento. 80.000 fotos tardaron cuatro horas para el reconocimiento facial. Si tienes más fotos, más tiempo. Durante ese proceso el servidor va cargado.

Las actualizaciones requieren atención. Immich se actualiza frecuentemente y a veces hay migraciones de base de datos que requieren seguir los pasos en el orden correcto. No es difícil pero hay que leerse las notas de release.

El reconocimiento facial no es perfecto. Google lleva años afinando sus modelos con millones de fotos. Immich con modelos open source funciona bien pero no tan bien. Con fotos antiguas de baja resolución o caras parciales falla más.

No hay integración con álbumes de Google. Si tenías álbumes organizados en Google Photos, al importar con Takeout los álbumes sí se importan, pero el proceso puede tener duplicados o errores dependiendo de cómo esté estructurado tu Takeout.

¿Merece la pena el cambio?
#

Depende de cuánto te importe tener control sobre tus fotos y cuánto hardware tengas.

Si ya tienes un NAS o servidor en casa con espacio libre, Immich es una instalación de unas horas que te da control total sobre tus fotos para siempre. El coste incremental es casi cero.

Si no tienes infraestructura, montar todo desde cero solo para las fotos quizás no compensa frente a pagar a Google. Aunque hay VPS baratos donde podría funcionar.

Lo que sí puedo decir es que después de meses en producción no he echado de menos Google Photos en ningún momento concreto. La búsqueda semántica local funciona bien, el backup automático no falla, y saber que mis fotos están en mi hardware me da una tranquilidad que no esperaba que fuera tan importante.

Recursos para seguir
#

Si tienes dudas sobre algún paso o quieres compartir cómo lo montaste tú, deja un comentario abajo.