Immich: Tu propio "Google Fotos"
Immich es una solución totalmente gratuita y sin ningun tipo de limitación para que montes tu propia nube para guardar y gestionar tus fotos, es totalmente funcional y una alternativa real a Google Fotos.
Permite que las fotos y videos que realices con tu movil se guarden en tu propio servidor.
La mejor opción es instalarlo mediante docker en tu propio servidor de casa, puedes ver el procedimiento completo en su documentación:

Instalar mediante Docker Compose
Además una vez instalado y configurado en tu propio servidor, lo ideal es instalar la aplicación para movil y sacarle todo el rendimiento.

La aplicación móvil es gratuita y no tiene publicidad
Aplicación para Google Play

Aplicación en la App Store
Sin embargo este artículo además de mostrarte esta magnifica solución alternativa a Google Fotos, es para mostrar como solucionar el error en el procesamiento y detección de caras.
Solución al error de Detección de Caras
He visto que mucha gente se queja de que el proceso de detección de caras les falla.
En las pruebas locales que realicé funcionaba correctamente, pero al ponerlo en producción fallaba tal y como comentaban el resto de usuarios.
Lo primero que he realizado ha sido revisar los logs del contenedor immich-server para verlos, simplemente ejecuta el comando docker logs immich-server a mi me aparecían lo siguientes errores:
Error: Machine learning request '{"facial-recognition":{"detection":{"modelName":"buffalo_l","options":{"minScore":0.5}},"recognition":{"modelName":"buffalo_l"}}}' failed for all URLs
at MachineLearningRepository.predict (/usr/src/app/server/dist/repositories/machine-learning.repository.js:117:15)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async MachineLearningRepository.detectFaces (/usr/src/app/server/dist/repositories/machine-learning.repository.js:126:26)
at async PersonService.handleDetectFaces (/usr/src/app/server/dist/services/person.service.js:244:52)
at async JobService.onJobRun (/usr/src/app/server/dist/services/job.service.js:51:30)
at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:91:13)
at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.71.0/node_modules/bullmq/dist/cjs/classes/worker.js:570:32
[Nest] 7 - 04/27/2026, 8:09:55 PM WARN [Microservices:MachineLearningRepository] Machine learning request to "http://immich-machine-learning:3003" failed: fetch failed
[Nest] 7 - 04/27/2026, 8:09:55 PM WARN [Microservices:MachineLearningRepository] Machine learning request to "http://immich-machine-learning:3003" failed: fetch failed
[Nest] 7 - 04/27/2026, 8:09:55 PM WARN [Microservices:MachineLearningRepository] Machine learning request to "http://172.28.0.2:3003" failed: fetch failed
[Nest] 7 - 04/27/2026, 8:09:55 PM WARN [Microservices:MachineLearningRepository] Machine learning request to "http://172.28.0.2:3003" failed: fetch failed
[Nest] 7 - 04/27/2026, 8:09:55 PM ERROR [Microservices:{"id":"d7da13f6-d3d7-4e70-afa1-0c4b69e00e61"}] Unable to run job handler (AssetDetectFaces): Error: Machine learning request '{"facial-recognition":{"detection":{"modelName":"buffalo_l","options":{"minScore":0.5}},"recognition":{"modelName":"buffalo_l"}}}' failed for all URLs
Luego he realizado una revisión de la configuración del servidor (via web) con el usuario administrador y veo la siguiente configuración en la parte de "aprendizaje automático":

Aunque en la configuración de los servidores tengo creada su propia red para conectar internamente todos los contenedores, he comprobado que el problema es que no sabe resolver el nombre del servidor de aprendizaje.
Para comprobar si es realmente un problema de resolución de nombres he averiguado la ip del contenedor para incluir esa IP, se averigua facilmente con el siguiente comando:
docker inspect immich_machine_learningLocaliza la línea que pone IPAddress y apunta la dirección IP

Luego vía web pulsa sobre el botón + Añadir URL incluye esa IP en la configuración escribiendo:http://172.28.0.2:3003
Vuelve a revisar los logs y verás que comienza a funcionar el procesamiento:
[Nest] 25 - 04/27/2026, 8:10:00 PM LOG [Api:MachineLearningRepository~vq17wdpu] Machine learning server became healthy (http://172.28.0.2:3003).
...
[Nest] 7 - 04/27/2026, 8:10:41 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 0e39b92b-30e5-4388-90b1-094680f2ab52
[Nest] 7 - 04/27/2026, 8:10:46 PM LOG [Microservices:PersonService] Detected 4 new faces in asset 498858e7-73c2-47e4-be5a-97b8002da160
...Problema detectado, pero como la IP del contenedor puede modifcarse hay que solucionar el problema de la resolución del nombre.
Para no arrastrar configuraciones de prueba, eliminamos la URL que acabamos de incluir que tenía la IP fijada.
La solución
La solución es realmente sencilla, tan sólo hay que incluir la línea hostname: immich-machine-learning
en la parte del contenedor de aprendizaje dentro del fichero docker-compose.yml
El fichero deberá quedar así:
...
immich-machine-learning:
container_name: immich_machine_learning
hostname: immich-machine-learning
image: ghcr.io/immich-app/immich-machine-learning:v2
volumes:
- model-cache:/cache
env_file:
- .env
networks:
red-immich: null
restart: always
...
Ahora si revisas de nuevo los logs verás que funciona todo correctamente sin errores:
...
[Nest] 25 - 04/27/2026, 8:10:00 PM LOG [Api:MachineLearningRepository~vq17wdpu] Machine learning server became healthy (http://immich-machine-learning:3003).
[Nest] 25 - 04/27/2026, 8:10:00 PM LOG [Api:SystemConfigService~0x797efo] LogLevel=log (set via system config)
[Nest] 7 - 04/27/2026, 8:10:00 PM LOG [Microservices:SystemConfigService] LogLevel=log (set via system config)
...
[Nest] 7 - 04/27/2026, 8:25:03 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 1121a8d3-1e12-45b7-8e01-d9a9982a56b8
[Nest] 7 - 04/27/2026, 8:25:05 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 4cbc79b6-b605-4edf-b7e9-9c744e720aca
[Nest] 7 - 04/27/2026, 8:25:14 PM LOG [Microservices:PersonService] Detected 1 new faces in asset 1f630c0c-87c5-4d86-931d-18e75cb662c0
[Nest] 7 - 04/27/2026, 8:25:14 PM LOG [Microservices:PersonService] Creating new person for face 4d71ab9a-bd70-4a6c-bd73-ae435fe2e936
[Nest] 7 - 04/27/2026, 8:25:15 PM LOG [Microservices:PersonService] Creating new person for face 02f60e7e-8802-461e-9d50-0ac6d00c092d
[Nest] 7 - 04/27/2026, 8:25:15 PM LOG [Microservices:PersonService] Creating new person for face 9c463892-3ba9-4c84-9c79-81491090f259
...En cuento termine de procesar las fotos verás que las caras ha sido reconocidas correctamente:

Enhorabuena, ya tienes totalmente configurado el procesamiento de caras en Immich.

