Immich es una de las alternativas más completas a Google Fotos para guardar la biblioteca en nuestro propio servidor. Tiene copia automática desde el móvil, búsqueda, mapas, reconocimiento, álbumes y una interfaz que no obliga a explicar a la familia cómo navegar por carpetas.
La parte peligrosa es confundir «las fotos están en mi servidor» con «tengo una copia de seguridad». Un disco averiado, un borrado sincronizado o un error durante una actualización pueden afectar a esa única biblioteca. La instalación sólo está terminada cuando también sabemos copiar y restaurar los archivos y la base de datos.

Qué necesitamos
- Un sistema Linux de 64 bits; Immich recomienda Linux o un sistema tipo Unix.
- Docker Engine con el complemento
docker compose. - Al menos 6 GB de RAM y dos núcleos; 8 GB y cuatro núcleos son una base más cómoda.
- Almacenamiento para originales y un 10-20 % adicional aproximado para miniaturas y vídeo procesado.
- Otro destino independiente para las copias.
Desde Immich v3, el contenedor de aprendizaje automático en amd64 requiere una CPU con nivel x86-64-v2, habitual en muchos procesadores publicados desde aproximadamente 2012. En un servidor con 4 GB se puede desactivar el aprendizaje automático, pero no lo elegiría como configuración nueva si esperamos importar decenas de miles de fotos.
Preparar las carpetas
sudo mkdir -p /opt/immich
sudo mkdir -p /srv/immich/library
sudo mkdir -p /srv/immich/postgres
sudo chown -R "$USER":"$USER" /opt/immich /srv/immich
He separado la configuración, la biblioteca y PostgreSQL para que sea evidente qué hay que copiar. La base de datos debe residir en un sistema de archivos local compatible con permisos de Unix y, preferiblemente, en SSD. La documentación desaconseja colocar DB_DATA_LOCATION en una unidad de red.
Si todavía no utilizamos contenedores, conviene revisar primero nuestra introducción a Docker para Linux. Immich requiere el comando moderno docker compose; el antiguo docker-compose ya no está soportado por el proyecto.
Descargar el Compose oficial
cd /opt/immich
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
Utilizamos los archivos adjuntos a la última versión, no un Compose copiado de un tutorial antiguo. Antes de iniciar editamos .env:
UPLOAD_LOCATION=/srv/immich/library
DB_DATA_LOCATION=/srv/immich/postgres
TZ=Europe/Madrid
IMMICH_VERSION=v3
DB_PASSWORD=unaClaveAleatoriaLargaSinEspacios
El ejemplo actual recomienda caracteres alfanuméricos para evitar problemas de interpretación. No publicamos ese archivo ni lo guardamos en un repositorio. Antes de arrancar podemos validar la configuración resuelta:
docker compose config --quiet
docker compose pull
docker compose up -d
docker compose ps
La interfaz queda disponible inicialmente en http://IP-DEL-SERVIDOR:2283. Creamos el primer usuario administrador desde una red de confianza. Para acceder desde Internet no abriría el puerto sin más: usaría una VPN o un proxy inverso con HTTPS y mantendría los contenedores actualizados.
Configurar la aplicación móvil
Instalamos la aplicación oficial, indicamos la URL del servidor y elegimos los álbumes que queremos copiar. Empezaría por una carpeta pequeña, comprobaría fechas, ubicación y duplicados y sólo entonces activaría toda la biblioteca.
La aplicación puede indicar que un elemento ya está sincronizado, pero eso no significa que exista en una copia externa. Tampoco borraría de Google Fotos o del móvil hasta verificar el número de archivos y completar una segunda copia.
Importar Google Takeout
Google Takeout entrega fotos, vídeos y archivos JSON con metadatos. Copiar sólo las imágenes puede perder información que Google guardaba aparte. La documentación de Immich recomienda la herramienta comunitaria immich-go para este caso, mientras que su CLI oficial permite subir carpetas normales.
Antes de una importación grande conservaría intactos los ZIP de Takeout, probaría un único lote y revisaría fechas, vídeos y fotos editadas. Así podemos repetir el proceso si la primera configuración no interpreta los metadatos como esperábamos.
Qué hay que copiar realmente
Una copia recuperable de Immich necesita dos piezas sincronizadas:
- Los archivos bajo
UPLOAD_LOCATION: originales, biblioteca, perfiles y contenido generado. - La base de datos PostgreSQL: usuarios, álbumes, relaciones, metadatos y estado de la aplicación.
Immich puede generar copias automáticas de la base de datos, pero esas copias no contienen nuestras fotos y vídeos. Copiar solamente library tampoco conserva toda la organización. La copia de archivos y el volcado deben corresponder a un estado razonablemente consistente.
Un esquema de copia sencillo
Podemos activar las copias de base de datos de Immich y copiar después todo /srv/immich/library a otro disco o servidor con una herramienta de snapshots. Para una copia manual de PostgreSQL, la documentación utiliza pg_dump dentro del contenedor:
mkdir -p /srv/backups/immich
docker exec -t immich_postgres \
pg_dump --clean --if-exists --dbname=immich --username=postgres \
| gzip > /srv/backups/immich/immich-$(date +%F).sql.gz
Después copiamos ese volcado y la biblioteca a un destino que no sea el mismo disco. El nombre del contenedor, usuario y base pueden cambiar si hemos modificado el Compose; los comprobamos con docker compose ps y .env.
La regla 3-2-1 aplicada a Immich
- Tres copias de los archivos importantes.
- Dos soportes o sistemas diferentes.
- Una copia fuera de casa o desconectada del servidor.
Un RAID no sustituye este esquema. Ayuda a seguir trabajando si falla un disco, pero replica un borrado y no protege frente a robo, sobretensión o una cuenta comprometida. Tampoco contaría el móvil como copia permanente si Immich y el teléfono sincronizan eliminaciones o si vamos liberando espacio.
Probar la restauración
Una copia que nunca se ha restaurado es una suposición. Immich permite restaurar una base en una instalación nueva desde el proceso inicial. La prueba correcta consiste en levantar un entorno aislado, colocar las carpetas de UPLOAD_LOCATION, seleccionar el volcado y comprobar usuarios, álbumes y varios originales.
No ejecutaría comandos destructivos de restauración en el servidor principal para «ver si funcionan». La propia documentación incluye pasos que eliminan volúmenes y datos para empezar desde cero; sólo corresponden a una restauración planificada y con las rutas verificadas.
Actualizar Immich sin improvisar
cd /opt/immich
docker compose pull
docker compose up -d
docker compose ps
Antes revisamos las notas de la versión y confirmamos que existe una copia reciente. Immich utiliza versionado semántico, pero no admite bajar a una versión anterior como estrategia normal. Servidor y aplicación móvil deben mantenerse en versiones compatibles.
Mi recomendación
Immich puede sustituir gran parte de la experiencia diaria de Google Fotos, pero no sustituye la infraestructura de copias que Google ocultaba. Empezaría con un lote pequeño, separaría biblioteca y base de datos en rutas conocidas y no borraría el origen hasta tener una copia externa verificada.
El objetivo no es solamente recuperar privacidad o evitar una suscripción. Es saber dónde están nuestros originales, quién puede acceder a ellos y cómo volverían si mañana el servidor no arrancase.
