eco Principiante Tutorial/Cómo hacer

Cómo instalar Immich en un VPS:

calendar_month May 11, 2026 schedule 9 min de lectura visibility 17 vistas
Установка Immich на VPS: развёртывание self-hosted альтернативы Google Photos через Docker
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación de Immich en un VPS: despliegue de una alternativa self-hosted a Google Photos mediante Docker

TL;DR

En esta guía, analizaremos el proceso de instalación de Immich, la solución más potente y de más rápido crecimiento para almacenar fotos y vídeos en su propio servidor. Configuraremos un ecosistema completo con soporte para reconocimiento facial, copia de seguridad automática desde dispositivos móviles y búsqueda inteligente, utilizando Docker y prácticas modernas de administración. Al final, obtendrá una nube privada que no tiene nada que envidiar a Google Photos en cuanto a funcionalidad, pero que le pertenece totalmente a usted.

  • Independencia total: Sus datos se almacenan en su VPS, no en los servidores de corporaciones.
  • Funciones inteligentes: El reconocimiento facial, la búsqueda por objetos y la geolocalización funcionan localmente.
  • Seguridad: Configuración de certificados SSL, Firewall y copias de seguridad automáticas.
  • Escalabilidad: Posibilidad de conectar almacenamientos externos y optimización para grandes bibliotecas (1TB+).
  • Versión 2026: Todos los comandos y configuraciones están actualizados para las distribuciones modernas de Linux.

1. Qué estamos configurando y por qué: La evolución del Self-hosted Photo Storage

Esquema: 1. Qué estamos configurando y por qué: La evolución del Self-hosted Photo Storage
Esquema: 1. Qué estamos configurando y por qué: La evolución del Self-hosted Photo Storage

Durante mucho tiempo, Google Photos fue el líder indiscutible para el almacenamiento de archivos multimedia móviles. Sin embargo, el cambio en la política de almacenamiento gratuito y la creciente preocupación de los usuarios por la privacidad de los datos han provocado un crecimiento explosivo en la popularidad de las soluciones self-hosted. Immich no es solo un script para ver imágenes, es una compleja arquitectura de microservicios escrita en TypeScript y Dart, cuyo objetivo es replicar y superar la experiencia de usuario de las nubes comerciales.

¿Por qué elegir Immich en su propio VPS en lugar de soluciones en la nube ya preparadas?

  • Control de datos: Usted sabe exactamente dónde se encuentran físicamente sus archivos. Ningún algoritmo de moderación bloqueará su cuenta debido a falsos positivos.
  • Velocidad de funcionamiento: Al utilizar un VPS moderno con discos NVMe, la indexación y la búsqueda funcionan más rápido que en las nubes sobrecargadas.
  • Sin suscripciones: Usted paga solo por los recursos del servidor, no por el "alquiler" de espacio a tarifas infladas.
  • Funcionalidad: Soporte para formatos RAW, fotos en vivo (Live Photos), reconocimiento facial basado en aprendizaje automático y aplicaciones móviles intuitivas para iOS y Android.

En este tutorial, recorreremos el camino desde un servidor "desnudo" hasta un servicio en funcionamiento con un dominio configurado y una aplicación móvil.

2. Qué configuración de VPS se necesita para Immich en 2026

Esquema: 2. Qué configuración de VPS se necesita para Immich en 2026
Esquema: 2. Qué configuración de VPS se necesita para Immich en 2026

Immich es un proyecto que consume recursos. A diferencia de los sitios web estáticos simples, utiliza activamente el Machine Learning (ML) para analizar imágenes, clasificar rostros y generar vistas previas. Esto impone ciertos requisitos al hardware.

Recurso Mínimo (para 1-2 usuarios) Recomendado (para una familia) Pro (10+ usuarios)
CPU 2 núcleos (x86_64) 4-6 núcleos 8+ núcleos / Dedicated
RAM 4 GB 8-12 GB 16 GB+
Disco 40 GB SSD (sistema) 200 GB+ NVMe 1 TB+ (Block Storage/HDD)
SO Ubuntu 24.04 LTS Ubuntu 24.04 / Debian 12 Debian 12

Se debe prestar especial atención a la memoria RAM. El componente immich-machine-learning puede consumir una cantidad significativa de RAM durante la indexación inicial de una biblioteca grande. Si la memoria es inferior a 4 GB, Docker puede comenzar a finalizar procesos de forma abrupta (OOM Killer).

Para un funcionamiento fluido y una generación rápida de vistas previas, lo mejor es elegir un VPS adecuado con unidades SSD o NVMe, ya que la base de datos PostgreSQL y el motor de búsqueda son sensibles a los retrasos de entrada/salida (IOPS).

Si su biblioteca supera los 500 GB, considere la posibilidad de conectar un almacenamiento de bloques adicional (Block Storage) o utilizar un servidor dedicado (Dedicated), donde se pueden instalar discos HDD de gran capacidad en una matriz RAID para aumentar la fiabilidad.

3. Preparación del servidor: Seguridad y utilidades básicas

Esquema: 3. Preparación del servidor: Seguridad y utilidades básicas
Esquema: 3. Preparación del servidor: Seguridad y utilidades básicas

Antes de instalar Docker, es necesario poner en orden el servidor. Suponemos que tiene una instalación limpia de Ubuntu 24.04 o 26.04.

En primer lugar, actualizaremos la lista de paquetes y el propio sistema:

sudo apt update && sudo apt upgrade -y

Instalaremos las utilidades del sistema necesarias que nos serán útiles para el diagnóstico y el trabajo:

sudo apt install -y curl wget git vim software-properties-common ufw fail2ban htop

La configuración de seguridad es un paso crítico. Configuraremos el Firewall (UFW), permitiendo solo SSH y los puertos para el tráfico web:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw --force enable

También se recomienda crear un usuario independiente con privilegios sudo para no trabajar como root constantemente:

adduser adminuser
usermod -aG sudo adminuser

Después de esto, es mejor configurar el acceso mediante llaves SSH y desactivar el acceso por contraseña en el archivo /etc/ssh/sshd_config.

4. Instalación de Docker y Docker Compose

Esquema: 4. Instalación de Docker y Docker Compose
Esquema: 4. Instalación de Docker y Docker Compose

Immich se distribuye como un conjunto de contenedores Docker. Este es el estándar de la industria que permite evitar conflictos de dependencias. En 2026, utilizamos el repositorio oficial de Docker para obtener las versiones más recientes.

Añadimos la llave GPG de Docker:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Añadimos el repositorio a la lista de fuentes:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Instalamos Docker Engine y el plugin Docker Compose:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Verificamos la corrección de la instalación:

docker --version
docker compose version

Añada su usuario al grupo docker para ejecutar contenedores sin sudo:

sudo usermod -aG docker $USER

Atención: Para que los cambios surtan efecto, debe volver a iniciar sesión en el sistema o ejecutar el comando newgrp docker.

5. Despliegue paso a paso de Immich

Esquema: 5. Despliegue paso a paso de Immich
Esquema: 5. Despliegue paso a paso de Immich

Immich requiere varios archivos para su ejecución: el manifiesto principal docker-compose.yml, el archivo de configuración de variables de entorno .env y una base de datos PostgreSQL con la extensión pgvector.

Crearemos un directorio para el proyecto:

mkdir -p ~/immich-app && cd ~/immich-app

Descargaremos los archivos de configuración actuales directamente desde el repositorio oficial de Immich:

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

Analicemos qué hay dentro de docker-compose.yml. En él se describen los siguientes servicios:

  • immich-server: API principal y backend de la aplicación.
  • immich-microservices: Tareas de procesamiento de vídeo, generación de vistas previas y metadatos.
  • immich-machine-learning: Servicio para el reconocimiento facial y la clasificación de objetos.
  • postgres: Base de datos para almacenar metadatos y vectores faciales.
  • redis: Cola de tareas y almacenamiento en caché.

Ahora crearemos la carpeta donde se almacenarán físicamente sus fotos:

mkdir -p /home/$USER/immich-data/photos
mkdir -p /home/$USER/immich-data/postgres

6. Ajuste fino: Variables de entorno y secretos

Esquema: 6. Ajuste fino: Variables de entorno y secretos
Esquema: 6. Ajuste fino: Variables de entorno y secretos

El archivo .env contiene todas las configuraciones clave. Ábralo para editarlo:

nano .env

Es necesario cambiar los siguientes parámetros:

# Ruta a sus fotos (asegúrese de indicar la ruta absoluta)
UPLOAD_LOCATION=/home/adminuser/immich-data/photos

# Versión de Immich (se recomienda dejar release)
IMMICH_VERSION=release

# Secretos para la base de datos (¡genere sus propias contraseñas complejas!)
DB_PASSWORD=your_strong_password_here
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

# Configuración de Redis
REDIS_HOSTNAME=redis

Si planea utilizar aceleración por hardware para la codificación de video (por ejemplo, si su VPS es compatible con Intel QuickSync o si tiene una GPU), en docker-compose.yml deberá pasar los dispositivos correspondientes (/dev/dri). Para la mayoría de los VPS estándar, dejamos la codificación por software.

Después de la configuración, iniciemos los contenedores:

docker compose up -d

Verifiquemos el estado de inicio:

docker compose ps

Si todos los servicios están en estado Up, significa que el backend se ha iniciado y está escuchando en el puerto 2283. Sin embargo, abrir este puerto directamente a Internet es inseguro e inconveniente (no hay HTTPS).

7. Configuración de HTTPS mediante Caddy: Acceso desde el mundo exterior

Esquema: 7. Configuración de HTTPS mediante Caddy: Acceso desde el mundo exterior
Esquema: 7. Configuración de HTTPS mediante Caddy: Acceso desde el mundo exterior

Para un acceso seguro a través de un dominio (por ejemplo, photos.yourdomain.com), utilizaremos Caddy. Es un servidor web moderno que obtiene y renueva automáticamente los certificados SSL de Let's Encrypt.

Instalemos Caddy:

sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1G 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy

Creemos el archivo de configuración Caddyfile:

sudo nano /etc/caddy/Caddyfile

Añada el siguiente bloque (reemplace el dominio por el suyo):

photos.yourdomain.com {
    reverse_proxy localhost:2283
    
    # Configuración para la carga de archivos grandes
    request_body {
        max_size 10GB
    }
}

Reinicie Caddy:

sudo systemctl restart caddy

Ahora, al acceder a su dominio, verá la pantalla de bienvenida de Immich, donde podrá crear el primer administrador.

8. Copias de seguridad y mantenimiento: Cómo no perder el archivo familiar

Esquema: 8. Copias de seguridad y mantenimiento: Cómo no perder el archivo familiar
Esquema: 8. Copias de seguridad y mantenimiento: Cómo no perder el archivo familiar

El auto-hospedaje (self-hosting) conlleva la responsabilidad de la seguridad de los datos. En Immich, es necesario realizar copias de seguridad de tres cosas: la base de datos PostgreSQL, los archivos de fotos (Uploads) y el archivo .env.

Copia de seguridad de la base de datos

Creemos un script sencillo para el volcado diario de la base de datos:

mkdir -p ~/immich-backups
nano ~/immich-backups/backup.sh

Texto del script:

#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/home/adminuser/immich-backups"
docker exec -t immich_postgres pg_dumpall -c -U postgres > $BACKUP_DIR/immich_db_$DATE.sql
# Eliminamos las copias de seguridad con más de 30 días de antigüedad
find $BACKUP_DIR -type f -name "*.sql" -mtime +30 -delete

Haga que el script sea ejecutable y añádalo a cron:

chmod +x ~/immich-backups/backup.sh
(crontab -l ; echo "0 3 * * * /home/adminuser/immich-backups/backup.sh") | crontab -

Sincronización de archivos

Para las fotos en sí, se recomienda utilizar herramientas como Restic o Rclone para enviarlas a un almacenamiento en la nube (S3, Backblaze B2). El comando para Rclone podría verse así:

rclone sync /home/adminuser/immich-data/photos remote:immich-backup-bucket

Actualización de Immich

Immich se desarrolla con frecuencia. Para actualizar, ejecute:

cd ~/immich-app
docker compose pull
docker compose up -d

Importante: Lea siempre las Release Notes en GitHub antes de actualizar, ya que a veces se requieren acciones manuales (Breaking Changes).

9. Troubleshooting + FAQ: Solución de problemas comunes

¿Por qué no se reconocen las caras inmediatamente después de la carga?

El reconocimiento facial es una tarea en segundo plano. Después de cargar una foto, esta entra en una cola. Puede seguir el progreso en la sección Administration -> Job Settings. Si la cola no avanza, verifique si el contenedor immich-machine-learning está en ejecución y si tiene suficiente memoria RAM. En CPUs poco potentes, este proceso puede llevar un tiempo considerable.

¿Qué configuración de VPS es la mínima adecuada para Immich?

El umbral mínimo es de 4 GB de RAM y 2 núcleos de CPU. Sin embargo, con esta configuración, la interfaz puede presentar lentitud durante la indexación. Para un funcionamiento fluido, se recomiendan 8 GB de RAM. Si tiene una biblioteca enorme (más de 100,000 fotos), el enfoque se desplaza hacia la velocidad del subsistema de disco: NVMe será mucho más preferible que los SSD convencionales.

¿Qué elegir: VPS o servidor dedicado para esta tarea?

Para la mayoría de los usuarios, un VPS potente es suficiente. Esto ofrece flexibilidad: puede ampliar fácilmente el espacio en disco o la memoria. Vale la pena elegir un servidor dedicado en dos casos: si necesita la máxima privacidad (hardware físicamente dedicado) o si el volumen de su biblioteca se mide en terabytes, ya que el costo de almacenamiento en discos HDD grandes en un servidor dedicado suele ser menor que el costo del almacenamiento en bloque de los proveedores de la nube.

Error "Database is not ready" al iniciar. ¿Qué hacer?

Normalmente, esto significa que el contenedor de PostgreSQL aún no ha tenido tiempo de inicializarse o se ha detenido debido a permisos incorrectos en la carpeta de datos. Verifique los registros: docker compose logs postgres. Asegúrese de que la carpeta especificada en .env sea accesible para el usuario que ejecuta Docker.

¿Cómo migrar una biblioteca existente desde Google Photos?

Utilice el servicio Google Takeout para descargar el archivo. Después de la descarga, use la utilidad Immich CLI. Esta permite importar carpetas conservando la estructura y los metadatos. No se limite a copiar los archivos en la carpeta uploads, ya que Immich debe indexarlos a través de la API para que la base de datos funcione correctamente.

Immich consume demasiados recursos de CPU, el servidor se calienta o se ralentiza.

En la configuración de administrador (Job Settings), puede limitar el número de hilos (concurrency) para las tareas de aprendizaje automático y generación de miniaturas. Establezca un valor de 1 o 2 para dejar recursos para otras tareas del servidor.

10. Conclusiones y próximos pasos

Hemos desplegado con éxito Immich en un VPS, garantizando la seguridad a través de Caddy y automatizando el mantenimiento. Ahora su mediateca está bajo su control total, y las funciones de reconocimiento de objetos y rostros funcionan sin la intervención de corporaciones externas.

¿Qué hacer a continuación?

  • Descargue la aplicación móvil Immich en la App Store o Google Play y configure la copia de seguridad automática de las fotos de su teléfono.
  • Explore la sección "External Libraries": esta permite conectar a Immich carpetas de fotos ya existentes en el servidor sin duplicarlas.
  • Configure la autenticación de múltiples factores (2FA) en el perfil de usuario para la máxima protección de su archivo.

Recuerde que Immich se desarrolla activamente. Verifique las actualizaciones con regularidad y realice copias de seguridad antes de cada actualización de los contenedores. ¡Ahora su "Google Photos" personal está listo para funcionar!

¿Te fue útil esta guía?

instalación de immich en vps: despliegue de una alternativa self-hosted a google photos con docker
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.