Immich: La Alternativa Self-Hosted a Google Photos con IA que Controlas Tú (Guía Completa 2025)

¿Cansado de pagar suscripciones mensuales por almacenar tus fotos? ¿Preocupado por la privacidad de tus recuerdos familiares en servidores de Google? Immich es la respuesta que estabas buscando: una solución self-hosted de gestión de fotos con inteligencia artificial que funciona en tu propio servidor.

En esta guía completa aprenderás a instalar y configurar Immich, entenderás cómo funciona su sistema de IA local, y descubrirás por qué más de 83,600 usuarios en GitHub confían en esta herramienta para proteger sus recuerdos digitales.

¿Qué es Immich y Por Qué Debería Importarte?

Immich es una plataforma open-source de gestión de fotos y vídeos que replica la experiencia de Google Photos, pero ejecutándose completamente en tu infraestructura. Lanzado bajo licencia AGPL-3.0, ha experimentado un crecimiento explosivo con 1,664 contribuidores y 278 releases desde su inicio.

La Promesa de Immich: Privacidad Sin Sacrificar Funcionalidad

El dilema tradicional era claro: o sacrificabas privacidad usando servicios cloud, o renunciabas a funcionalidades avanzadas de IA con soluciones self-hosted básicas. Immich rompe este paradigma ejecutando modelos de machine learning localmente en tu servidor, sin enviar ni un solo pixel a terceros.

La versión actual v2.2.3 (lanzada el 5 de noviembre de 2025) incluye:

    • Reconocimiento facial con clustering automático usando InsightFace
    • Búsqueda semántica por texto natural con modelos CLIP de OpenAI
    • Detección de objetos sin etiquetado manual
    • Apps móviles nativas para iOS y Android con backup automático
    • Álbumes compartidos con sistema multi-usuario completo

Todo esto ejecutándose en hardware modesto: 4GB de RAM y 2 cores de CPU son suficientes para empezar.

Casos de Uso Reales: ¿Cuándo Immich es la Mejor Opción?

1. El Homelab Personal

Perfil: Entusiasta tecnológico con NAS Synology/QNAP o mini-PC. Si estás montando tu primer homelab, Immich es un proyecto perfecto para aprender automatización con Docker mientras resuelves un problema real.

Setup típico:

    • Hardware: NAS existente con 4GB RAM, 2TB HDD
    • Usuarios: 3-4 miembros de la familia
    • Biblioteca: ~500GB de fotos y vídeos
    • Coste mensual: €0 (hardware ya existente)

2. Fotógrafo Profesional

Perfil: Profesional con biblioteca RAW masiva que necesita búsqueda rápida. La búsqueda semántica con modelos de IA locales permite encontrar fotos por concepto («sesión atardecer playa») sin etiquetar manualmente.

Setup típico:

    • Servidor dedicado: 16GB RAM, 4TB SSD (trabajo activo) + 8TB HDD (archivo)
    • Uso: Gestión de sesiones por cliente, búsqueda por evento/fecha
    • ROI vs Google One (2TB a €10/mes): 3-4 años con servidor usado de €300-500

3. Familia Consciente de Privacidad

Perfil: Familia sin conocimientos técnicos pero con hijo/a tech-savvy.

Setup típico:

    • Mini-PC: €200 con 8GB RAM, 1TB SSD
    • Usuarios: 4 móviles con backup automático
    • Ahorro vs Google One (5 usuarios, 2TB): €360/año → ROI en 7 meses

Arquitectura Técnica: Cómo Funciona Immich Por Dentro

Entender la arquitectura de Immich te ayudará a diagnosticar problemas y optimizar tu instalación.

Stack Tecnológico Completo

Frontend Web:

SvelteKit (framework moderno JS)
├── Tailwind CSS (estilos utility-first)
├── TypeScript (type safety)
└── Vite (build tool ultra-rápido)

Backend API:

NestJS (Node.js framework enterprise)
├── TypeORM (ORM para PostgreSQL)
├── Bull (job queue con Redis)
└── Sharp (procesamiento de imágenes)

Apps Móviles:

Flutter (framework cross-platform)
├── Dart (lenguaje de programación)
├── Riverpod (gestión de estado)
└── Isar (base de datos local)

Machine Learning:

Python (servicio independiente)
├── PyTorch (framework ML)
├── ONNX Runtime (inferencia optimizada)
├── InsightFace (reconocimiento facial)
└── CLIP (búsqueda semántica)

Contenedores Docker y Sus Funciones

Immich se despliega con 5 contenedores especializados:

Contenedor Función Puerto Recursos Típicos
immich-server API REST + lógica negocio 2283 512MB-1GB RAM
immich-web Frontend SvelteKit interno 256MB RAM
immich-machine-learning Procesamiento IA interno 1-2GB RAM (+GPU)
postgres Base de datos 5432 512MB-1GB RAM
redis Cache + job queue 6379 128MB RAM

Total RAM en uso típico: 2.5-4GB (sin ML activo), 4-6GB (con ML procesando)

Instalación Paso a Paso con Docker Compose

Prerrequisitos Verificados

Antes de empezar, asegúrate de cumplir estos requisitos:

# 1. Verificar Docker Engine (mínimo v25)
docker --version
# Salida esperada: Docker version 25.x.x o superior

# 2. Verificar Docker Compose V2
docker compose version
# Salida esperada: Docker Compose version v2.x.x

# 3. Verificar espacio en disco
df -h /ruta/donde/instalaras/immich
# Recomendado: Al menos 50GB libres inicialmente

⚠️ IMPORTANTE: Docker Engine v25+ es obligatorio. Versiones antiguas (v24, v23) causarán errores de compatibilidad con las nuevas features.

Paso 1: Preparar Directorios

Crea una estructura organizada para los datos de Immich:

# Directorio principal de la aplicación
mkdir -p ~/immich-app
cd ~/immich-app

# Directorio para fotos subidas
mkdir -p /mnt/datos/immich/upload

# Directorio para base de datos (NO usar network share)
mkdir -p /mnt/datos/immich/postgres

Paso 2: Descargar Archivos de Configuración

# Descargar docker-compose.yml oficial
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml

# Descargar .env de ejemplo
wget -O .env https://github.com/immich-app/immich/releases/latest/download/.env.example

Paso 3: Configurar Variables de Entorno

Edita el archivo .env con tus rutas y configuración:

nano .env

Contenido recomendado del .env:

# Ubicación donde se almacenarán las fotos subidas
UPLOAD_LOCATION=/mnt/datos/immich/upload

# Ubicación de los datos de PostgreSQL
# ⚠️ CRÍTICO: NO usar network shares (NFS, SMB) aquí
DB_DATA_LOCATION=/mnt/datos/immich/postgres

# Contraseña de PostgreSQL
# ⚠️ Usar SOLO caracteres alfanuméricos (evita problemas parsing)
DB_PASSWORD=InmichSecure2025

# Usuario base de datos (dejar por defecto)
DB_USERNAME=postgres

# Nombre de la base de datos (dejar por defecto)
DB_DATABASE_NAME=immich

# Zona horaria (opcional pero recomendado)
TZ=Europe/Madrid

# Versión de Immich (release = última estable)
IMMICH_VERSION=release

# Puerto de acceso web (cambiar si 2283 está ocupado)
# IMMICH_PORT=2283

Notas críticas sobre configuración:

    • DB_PASSWORD: Solo alfanuméricos. Evita símbolos (!@#$%) que pueden causar errores de parsing de Docker.
    • DB_DATA_LOCATION: NUNCA usar network shares (NFS, Samba). PostgreSQL requiere filesystem local con soporte de locks.
    • UPLOAD_LOCATION: Puede ser network share SI tu red es rápida (1Gbps+).

Paso 4: Docker Compose Completo Personalizado

Si descargaste el docker-compose.yml oficial, ya está listo. Pero aquí tienes una versión comentada para entender cada parte:

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: ["start.sh", "immich"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    ports:
      - 2283:3001
    depends_on:
      - redis
      - database
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: ["start.sh", "microservices"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - .env
    depends_on:
      - redis
      - database
    restart: always

  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

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine
    restart: always

  database:
    container_name: immich_postgres
    image: tensorchord/pgvecto-rs:pg14-v0.2.0
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always

volumes:
  model-cache:

Paso 5: Iniciar Immich

# Descargar imágenes e iniciar contenedores
docker compose up -d

# Verificar que todos los contenedores están running
docker compose ps

# Ver logs en tiempo real (útil para troubleshooting)
docker compose logs -f

Salida esperada de docker compose ps:

NAME                    IMAGE                                       STATUS
immich_server           ghcr.io/immich-app/immich-server:release    Up 2 minutes
immich_microservices    ghcr.io/immich-app/immich-server:release    Up 2 minutes
immich_machine_learning ghcr.io/immich-app/immich-ml:release        Up 2 minutes
immich_postgres         tensorchord/pgvecto-rs:pg14-v0.2.0          Up 2 minutes
immich_redis            redis:6.2-alpine                             Up 2 minutes

Paso 6: Primer Acceso y Configuración

    • Abre tu navegador y accede a: http://<IP-de-tu-servidor>:2283

    • Registra el usuario administrador:

      • Email: admin@tudominio.com
      • Contraseña: (elige una segura)
      • Nombre: Admin

⚠️ CRÍTICO: El primer usuario que se registre será el administrador. Asegúrate de ser tú.

    • Configuración inicial recomendada:
      • Ve a Settings (esquina superior derecha)
      • Machine Learning Settings: Habilita facial recognition
      • Storage Settings: Verifica que las rutas son correctas
      • User Settings: Configura 2FA (muy recomendado)

Machine Learning Local: Cómo Funciona la IA de Immich

Una de las características más impresionantes de Immich es su capacidad de ejecutar modelos de IA sin enviar datos fuera de tu servidor.

Modelos de IA Utilizados

1. InsightFace (Reconocimiento Facial)

Función: Detectar y reconocer caras en fotos y vídeos.

Proceso técnico:

1. Imagen original → Genera thumbnail preview
   ↓
2. Envía a immich-machine-learning
   ↓
3. Modelo descarga automáticamente si no existe
   ↓
4. Face detection con aceleración hardware (GPU/CPU AVX2)
   ↓
5. Genera embeddings faciales (vectores numéricos de 512 dims)
   ↓
6. Algoritmo DBSCAN agrupa caras similares
   ↓
7. Almacena en PostgreSQL (tabla: person, asset_faces)

Configuración de clustering:

# Parámetros DBSCAN que usa Immich (configurables en UI)
{
  "min_samples": 3,      # Mínimo de caras para crear cluster
  "epsilon": 0.6,        # Distancia máxima entre caras similares
  "min_cluster_size": 5  # Mínimo de fotos para mostrar persona
}

Precisión esperada:

    • Misma persona, misma iluminación: >95%
    • Misma persona, diferentes años: ~85%
    • Niños creciendo: ~70% (dificulta clustering)

2. CLIP (Búsqueda Semántica)

Función: Buscar fotos usando lenguaje natural.

Ejemplos de búsquedas:

"perros jugando en la playa"
"montañas con nieve al atardecer"
"comida italiana en restaurante"
"coche rojo aparcado"

Cómo funciona:

Al subir foto:
1. Imagen → Modelo CLIP genera embedding (vector 768 dims)
2. Embedding se almacena en PostgreSQL con pgvecto-rs

Al buscar:
1. Texto "perros en playa" → CLIP genera embedding de texto
2. Búsqueda vectorial en BD (similitud coseno)
3. Devuelve imágenes con mayor similitud (score >0.7)

Ventaja vs tags manuales: No necesitas etiquetar nada. CLIP entiende semántica y contexto.

3. Detección de Objetos

Identifica automáticamente:

    • Animales (perros, gatos, pájaros, caballos)
    • Vehículos (coches, motos, bicicletas, aviones)
    • Comida (pizza, sushi, pasta, café)
    • Naturaleza (árboles, flores, montañas, mar)

Configurar Aceleración por GPU

Si tienes GPU NVIDIA, puedes acelerar el procesamiento ML hasta 10x. Esto es especialmente útil si ya tienes GPUs configuradas en tu homelab para otras cargas de trabajo de IA:

# Añade a immich-machine-learning en docker-compose.yml
immich-machine-learning:
  # ... resto de configuración ...
  deploy:
    resources:
      reservations:
        devices:
          - driver: nvidia
            count: 1
            capabilities: [gpu]
  environment:
    - NVIDIA_VISIBLE_DEVICES=all

Prerrequisitos:

    • NVIDIA GPU con soporte CUDA
    • NVIDIA Container Toolkit instalado
    • Drivers NVIDIA actualizados

Benchmarks reales (RTX 3060 vs CPU i5-10400):

Tarea CPU (6 cores) GPU RTX 3060 Speedup
Procesar 1000 fotos (facial recognition) 45 min 4.5 min 10x
Generar embeddings CLIP 30 min 3 min 10x
Detección de objetos 20 min 2.5 min 8x

Apps Móviles: Backup Automático en iOS y Android

Las apps nativas son uno de los puntos fuertes de Immich frente a alternativas basadas en web.

Instalación y Configuración

iOS (App Store):

1. Busca "Immich" en App Store
2. Instala la app oficial (gratis)
3. Abre y conecta a tu servidor:
   - URL: http://TU-IP:2283
   - Email: admin@tudominio.com
   - Contraseña: tu-password

Android (Google Play):

1. Busca "Immich" en Google Play
2. Instala la app oficial (gratis)
3. Configuración idéntica a iOS

Configurar Backup Automático

1. En la app, ve a: Profile → Backup Settings

2. Selecciona álbumes a respaldar:
   ✅ Camera Roll (Carrete)
   ✅ Screenshots (opcional)
   ❌ WhatsApp (suelen ser duplicados)

3. Configura comportamiento:
   - Background backup: ON
   - Require WiFi: ON (recomendado)
   - Require charging: OFF (backup más frecuente)

4. Prueba manual:
   - Tap "Backup Now"
   - Verifica que fotos aparecen en web UI

Nota sobre LivePhotos (iOS): Immich preserva el vídeo asociado. Se reproduce automáticamente al ver la foto en la web.

Solución a Problemas Comunes de Apps

Error: “Connection failed»

# Verifica que el servidor es accesible desde móvil
ping TU-IP

# Verifica que el puerto 2283 no está bloqueado por firewall
sudo ufw allow 2283/tcp

Backup se detiene en background (iOS):

iOS limita procesos en background agresivamente.

Soluciones:
1. Deja la app abierta durante backup inicial
2. Habilita "Background App Refresh" en iOS Settings
3. Conecta a WiFi + cargador (iOS prioriza estos casos)

Backup lento (Android):

Android Doze mode suspende la app tras inactividad.

Soluciones:
1. Añade Immich a "No optimizar batería"
2. Settings → Battery → Immich → Unrestricted

Comparativa Detallada: Immich vs Google Photos vs Alternativas

Tabla Comparativa Completa

Característica Google Photos Immich PhotoPrism Nextcloud Photos
Precio €1.99-9.99/mes Gratis (HW one-time) Gratis (HW one-time) Gratis (HW one-time)
Privacidad ❌ Datos en Google ✅ 100% local ✅ 100% local ✅ 100% local
IA facial recognition ✅ Excelente ✅ Muy bueno ✅ Bueno ⚠️ Básico
Búsqueda semántica ✅ Excelente ✅ Muy bueno (CLIP) ⚠️ Limitada ❌ No
Apps móviles nativas ✅ iOS/Android ✅ iOS/Android (Flutter) ⚠️ PWA lenta ✅ iOS/Android
Backup automático móvil ✅ Sí ✅ Sí (background) ⚠️ Manual/PWA ✅ Sí
Álbumes compartidos ✅ Sí ✅ Multi-usuario completo ✅ Sí ✅ Sí
Edición de fotos ✅ Integrada ❌ No (usar externa) ❌ No ❌ No
Storage ilimitado ❌ Pago por tier ✅ Según HW ✅ Según HW ✅ Según HW
Setup inicial ✅ Trivial ⚠️ Docker knowledge ⚠️ Docker knowledge ⚠️ Docker/setup complejo
Recursos mínimos N/A 4GB RAM, 2 cores 2GB RAM, 2 cores 4GB RAM, 2 cores
Desarrollo activo ✅ Google ✅ Muy activo (278 releases) ✅ Activo (~50 releases) ✅ Nextcloud GmbH
Comunidad N/A ✅ 83k stars GitHub ✅ 35k stars GitHub ✅ Nextcloud ecosystem

Análisis de Coste Total (TCO) a 5 Años

Google Photos (Plan 200GB):

Suscripción: €2.99/mes × 60 meses = €179.40
Hardware: €0
Electricidad: €0
Total 5 años: €179.40

Immich (Setup homelab modesto):

Hardware (Mini-PC Beelink): €200 (one-time)
Discos 2TB (2× 1TB SSD): €100
Electricidad (~15W 24/7): €8/mes × 60 = €480
Total 5 años: €780

Coste por GB almacenado: €780 / 2000GB = €0.39/GB

Google Photos (Plan 2TB – Fotógrafo):

Suscripción: €9.99/mes × 60 meses = €599.40
Total 5 años: €599.40
Coste por GB: €599 / 2000GB = €0.30/GB

Immich (Setup profesional – Fotógrafo):

Servidor usado (Dell R720): €400
Discos 8TB (4× 2TB): €300
Electricidad (~80W 24/7): €35/mes × 60 = €2,100
Total 5 años: €2,800

Coste por GB: €2,800 / 8000GB = €0.35/GB

Conclusión TCO:

    • Bibliotecas pequeñas (<500GB): Google Photos más económico
    • Bibliotecas grandes (>2TB): Immich competitivo a partir del año 3
    • Ventaja Immich: Control total, privacidad, posibilidad de expandir storage a coste marginal bajo

Mejores Prácticas de Seguridad y Backups

Acceso Remoto Seguro (SIN Exponer Puertos)

Opción 1: VPN con Tailscale (Recomendado para principiantes)

Tailscale usa WireGuard como protocolo subyacente, proporcionando encriptación robusta sin sacrificar velocidad:

# 1. Instalar Tailscale en servidor
curl -fsSL https://tailscale.com/install.sh | sh

# 2. Autenticar
sudo tailscale up

# 3. Obtener IP de Tailscale
tailscale ip -4
# Salida ejemplo: 100.101.102.103

# 4. Desde móvil: instalar Tailscale, conectar, usar:
#    http://100.101.102.103:2283

Ventajas Tailscale:

    • Zero-config (no tocar router)
    • Encriptación WireGuard
    • Gratis hasta 100 dispositivos

Opción 2: Reverse Proxy con Nginx + Let’s Encrypt

# 1. Instalar Nginx Proxy Manager (vía Docker)
docker run -d \
  --name nginx-proxy-manager \
  -p 80:80 \
  -p 443:443 \
  -p 81:81 \
  -v ~/npm/data:/data \
  -v ~/npm/letsencrypt:/etc/letsencrypt \
  jc21/nginx-proxy-manager:latest

# 2. Accede a: http://TU-IP:81
#    User: admin@example.com
#    Pass: changeme

# 3. Añade Proxy Host:
#    Domain: immich.tudominio.com
#    Forward to: http://immich_server:3001
#    SSL: Request Let's Encrypt certificate

Ventajas Nginx Proxy Manager:

    • HTTPS gratis con Let’s Encrypt
    • Interfaz web sencilla
    • Soporte múltiples dominios

Estrategia de Backups Completa

Backup 1: Base de Datos PostgreSQL (CRÍTICO)

#!/bin/bash
# Script: backup-immich-db.sh

BACKUP_DIR="/mnt/backups/immich"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

# Crear backup de PostgreSQL
docker exec -t immich_postgres pg_dumpall -c -U postgres | \
  gzip > "$BACKUP_DIR/db_backup_$DATE.sql.gz"

# Mantener solo últimos 7 días
find "$BACKUP_DIR" -name "db_backup_*.sql.gz" -mtime +7 -delete

echo "Backup completado: db_backup_$DATE.sql.gz"

Añadir a cron:

# Ejecutar backup diario a las 3 AM
crontab -e

# Añadir línea:
0 3 * * * /home/user/backup-immich-db.sh

Backup 2: Fotos (Sincronización a NAS/Cloud)

#!/bin/bash
# Script: sync-immich-photos.sh

SOURCE="/mnt/datos/immich/upload"
DEST="user@nas:/backups/immich-photos"

# Sincronizar fotos a NAS (preserva permisos y timestamps)
rsync -avz --delete \
  --exclude='thumbs/' \
  --exclude='encoded-video/' \
  "$SOURCE/" "$DEST/"

echo "Fotos sincronizadas a NAS"

Backup 3: Configuración Docker (Rápido)

# Backup de docker-compose.yml y .env
tar -czf ~/immich-config-backup.tar.gz \
  ~/immich-app/docker-compose.yml \
  ~/immich-app/.env

# Subir a cloud (ejemplo con rclone a Google Drive)
rclone copy ~/immich-config-backup.tar.gz gdrive:backups/

Restauración desde Backup

Restaurar base de datos:

# 1. Detener Immich
cd ~/immich-app
docker compose down

# 2. Restaurar dump de PostgreSQL
gunzip < /mnt/backups/immich/db_backup_2025-11-06.sql.gz | \
  docker exec -i immich_postgres psql -U postgres

# 3. Reiniciar Immich
docker compose up -d

Restaurar fotos:

# Sincronizar desde NAS a servidor
rsync -avz user@nas:/backups/immich-photos/ /mnt/datos/immich/upload/

Optimización de Performance

Separar Storage por Tipo de Datos

Configuración óptima:

# docker-compose.yml optimizado para performance

services:
  database:
    volumes:
      # Base de datos en SSD NVMe (I/O crítico)
      - /mnt/ssd-nvme/immich/postgres:/var/lib/postgresql/data

  immich-server:
    volumes:
      # Fotos originales en HDD (coste/TB)
      - /mnt/hdd-raid/immich/originals:/usr/src/app/upload/library

      # Thumbnails en SSD SATA (acceso frecuente)
      - /mnt/ssd-sata/immich/thumbs:/usr/src/app/upload/thumbs

      # Vídeos transcodificados en SSD (streaming)
      - /mnt/ssd-sata/immich/encoded:/usr/src/app/upload/encoded-video

Distribución de espacio típica (biblioteca 1TB):

Tipo de dato Tamaño Storage recomendado Razón
Fotos originales 700 GB HDD (RAID 1) Acceso infrecuente, redundancia
Vídeos originales 300 GB HDD (RAID 1) Acceso infrecuente
Thumbnails 50 GB SSD Acceso MUY frecuente (timeline)
Vídeos transcodificados 30 GB SSD Streaming requiere baja latencia
Base de datos 10 GB SSD NVMe I/O intensivo (búsquedas)

Ajustar Workers de Machine Learning

# docker-compose.yml

immich-machine-learning:
  environment:
    # Número de workers paralelos (según CPU)
    - MACHINE_LEARNING_WORKERS=4

    # Modelo de facial recognition (opciones: buffalo_l, buffalo_m, buffalo_s)
    # buffalo_l = mayor precisión, más recursos
    # buffalo_s = menor precisión, más rápido
    - MACHINE_LEARNING_MODEL_FACE=buffalo_m

    # Habilitar aceleración AVX2 (CPUs modernas)
    - MACHINE_LEARNING_ACCELERATION=openvino

Guía de workers según CPU:

    • 2 cores → 1-2 workers
    • 4 cores → 2-3 workers
    • 6 cores → 3-4 workers
    • 8+ cores → 4-6 workers

Nota: Más workers NO siempre es mejor. Exceder el número de cores causa context switching y ralentiza.

Monitoreo de Recursos

Script de monitoreo simple:

#!/bin/bash
# Script: monitor-immich.sh

echo "=== Immich Resource Monitor ==="
echo ""

# Uso de RAM por contenedor
echo "RAM Usage:"
docker stats --no-stream --format "table {{.Name}}\t{{.MemUsage}}" | grep immich

echo ""

# Espacio en disco
echo "Disk Usage:"
du -sh /mnt/datos/immich/* 2>/dev/null

echo ""

# Jobs pendientes en Redis
echo "Pending ML Jobs:"
docker exec immich_redis redis-cli LLEN bull:immich:thumbnail-generation
docker exec immich_redis redis-cli LLEN bull:immich:face-detection

echo ""

# Última ejecución
date

Ejecutar cada hora con cron:

0 * * * * /home/user/monitor-immich.sh >> /var/log/immich-monitor.log

Preguntas Frecuentes (FAQ)

¿Puedo migrar desde Google Photos a Immich?

Sí, usando Google Takeout:

# 1. Descarga tu archivo de Google Takeout (puede tardar días)

# 2. Extrae el archivo ZIP

# 3. Usa immich-cli para subir masivamente
npx immich upload --recursive /ruta/a/google-takeout/Google\ Photos/

# 4. Immich detectará duplicados automáticamente

Nota: Metadata EXIF se preserva, pero álbumes de Google Photos NO se transfieren (requiere reorganización manual).

¿Immich funciona sin conexión a internet?

Sí, completamente. Solo necesitas red local (LAN) para:

    • Acceso desde navegadores en red local
    • Apps móviles conectadas a la misma WiFi

Para acceso remoto sin internet público, usa VPN (Tailscale/WireGuard).

¿Puedo ejecutar Immich en Raspberry Pi?

⚠️ Posible pero NO recomendado para bibliotecas grandes:

Raspberry Pi 4 (8GB):

    • ✅ Funciona para bibliotecas pequeñas (<50GB, <5000 fotos)
    • ❌ Machine Learning MUY lento (sin AVX2, CPU ARM limitado)
    • ❌ Thumbnails se generan lentamente

Alternativa recomendada: Mini-PC x86 usado (€100-150) con CPU Intel/AMD tiene 5-10x mejor rendimiento.

¿Qué pasa si actualizo Immich y algo se rompe?

# 1. SIEMPRE hacer backup de DB antes de actualizar
./backup-immich-db.sh

# 2. Anotar versión actual
docker inspect immich_server | grep Image

# 3. Actualizar
docker compose pull
docker compose up -d

# 4. Si algo falla, revertir a versión anterior
docker compose down
# Edita docker-compose.yml y cambia IMMICH_VERSION a versión anterior
docker compose up -d

# 5. Restaurar DB si es necesario
gunzip < backup.sql.gz | docker exec -i immich_postgres psql -U postgres

¿Puedo usar Immich comercialmente (negocio)?

Sí, la licencia AGPL-3.0 permite uso comercial, pero:

⚠️ AGPL requiere: Si modificas el código y ofreces servicio a terceros (ej: hosting de Immich), debes liberar tus modificaciones bajo AGPL.

Escenarios permitidos sin restricciones:

    • ✅ Usar Immich sin modificaciones para tu negocio (fotos empresa)
    • ✅ Modificar para uso interno (sin ofrecer servicio a terceros)

Escenarios que requieren liberar código:

    • ⚠️ Modificar Immich y ofrecer hosting como servicio (ej: “Immich as a Service»)

¿Cuánto tarda en procesar 10,000 fotos con ML?

Depende del hardware:

CPU Intel i5-10400 (6 cores, sin GPU):

    • Facial recognition: ~3-4 horas
    • CLIP embeddings: ~2-3 horas
    • Total: 5-7 horas

CPU + GPU NVIDIA RTX 3060:

    • Facial recognition: ~20-30 minutos
    • CLIP embeddings: ~15-20 minutos
    • Total: 35-50 minutos

Nota: El procesamiento es ONE-TIME. Nuevas fotos se procesan inmediatamente al subirlas.

¿Immich soporta vídeos 4K?

Sí, con transcoding automático:

# Configuración de transcoding en Settings → Video Settings

Transcoding:
  - Codec: H.264 (compatibilidad) o H.265 (menor tamaño)
  - Target resolution: Original, 1080p, 720p, 480p
  - Target bitrate: 10Mbps (4K), 5Mbps (1080p), 2Mbps (720p)
  - Hardware acceleration: VAAPI (Intel), NVENC (NVIDIA), AMF (AMD)

Vídeos originales se preservan. Transcoding genera versión web-friendly para streaming.

¿Puedo tener múltiples instancias de Immich (trabajo/personal)?

Sí, ejecuta múltiples stacks Docker en puertos diferentes:

# Instancia 1: Personal (puerto 2283)
cd ~/immich-personal
docker compose up -d

# Instancia 2: Trabajo (puerto 2284)
cd ~/immich-trabajo
# Edita docker-compose.yml: cambia puerto 2283 → 2284
docker compose up -d

Cada instancia tiene su propia BD, usuarios y fotos independientes.

¿Cómo elimino fotos definitivamente (no solo de álbumes)?

1. Selecciona fotos en web UI
2. Click en ícono de tres puntos (⋮)
3. "Delete from Library" (NO "Remove from Album")
4. Confirma

Nota: Fotos eliminadas van a "Trash" (papelera) 30 días.
Para eliminar permanentemente: Settings → Trash → Empty Trash

¿Puedo compartir fotos con personas que NO tienen cuenta Immich?

Sí, con Public Share Links:

1. Crea álbum con fotos a compartir
2. Click en álbum → Share → Create Public Link
3. Configura:
   - Password protection (opcional)
   - Expiration date (opcional)
   - Allow download (opcional)
4. Copia link y comparte

El link funciona sin login. Cualquiera con el link puede ver.

Advertencia de seguridad: Links públicos exponen fotos a cualquiera con el link. Usa passwords y expiraciones para contenido sensible.

¿Immich consume mucho ancho de banda al sincronizar?

Upload inicial consume mucho (subes TODA tu biblioteca).

Sincronización continua es eficiente:

    • Solo fotos nuevas se suben
    • Compresión automática en tránsito
    • Duplicados detectados (no suben dos veces)

Estimación bandwidth mensual (4 personas, 200 fotos nuevas/mes):

    • Fotos (15MB/foto × 200): ~3GB/mes
    • Thumbnails ya generadas: 0GB adicional
    • Total: ~3GB/mes (insignificante en plan móvil moderno)

¿Qué hago si Immich deja de responder después de actualización?

# 1. Ver logs de errores
docker compose logs immich-server | grep ERROR

# Errores comunes y soluciones:

# Error: "Database migration failed"
# Solución: Restaurar backup de DB pre-actualización

# Error: "ENOSPC: no space left on device"
# Solución: Liberar espacio en disco
df -h
docker system prune -a

# Error: "Cannot connect to Redis"
# Solución: Reiniciar Redis
docker compose restart redis

# 2. Si nada funciona, revert completo
docker compose down
# Cambiar IMMICH_VERSION a versión anterior en .env
docker compose up -d

Conclusión: ¿Vale la Pena Immich en 2025?

Immich ha alcanzado un nivel de madurez que lo convierte en la alternativa self-hosted más competitiva frente a Google Photos para usuarios con conocimientos técnicos básicos.

Cuando Immich es la Mejor Elección

Priorizas privacidad: Tus fotos contienen información sensible (documentos, familia, trabajo).

Biblioteca grande: Más de 500GB de fotos/vídeos (Google One a €9.99/mes = €120/año).

Ya tienes homelab: Aprovechar hardware existente (NAS, mini-PC) sin coste adicional.

Quieres aprender: Self-hosting es una habilidad valiosa en el ecosistema tech actual.

Control total: Necesitas certeza de dónde están tus datos y quién puede acceder.

Cuando Google Photos Sigue Siendo Mejor

Zero conocimientos técnicos: No quieres aprender Docker ni troubleshooting.

Biblioteca pequeña: Menos de 100GB (plan Google One 100GB a €1.99/mes es difícil de batir).

Movilidad extrema: Necesitas acceso instantáneo desde cualquier red sin configurar VPN.

Edición integrada: Usas intensivamente las herramientas de edición de Google Photos.

La Apuesta a Futuro

Con 83,600 estrellas en GitHub y 1,664 contribuidores, Immich tiene una comunidad activa que garantiza desarrollo continuo. La versión v2.2.3 es estable y funcional para producción.

La inversión de tiempo en configurar Immich hoy (4-6 horas incluyendo troubleshooting) te ahorra €600-1,200 en suscripciones a 5 años, además de darte control permanente sobre tus recuerdos digitales.

Si estás leyendo esto, probablemente ya tienes el perfil técnico necesario. Immich se integra perfectamente con otros proyectos self-hosted como n8n para automatización o Kubernetes para orquestación avanzada. El siguiente paso es tuyo.


¿Listo para instalar Immich? Descarga el docker-compose.yml oficial y empieza hoy: https://docs.immich.app

Por ziru

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.