681 palabras
3 minutos
Crea tu propio servidor al estilo Google Photos con Immich

¿Qué es immich?#

Un proyecto open source que te ayuda a montar un sistema como Google Photos pero en tu propio servidor. Conserva muchas de sus facilidades como:

  • Cuentas independientes
  • Reconocimiento de rostros
  • Carpetas privadas
  • Carpetas compartidas
  • Aplicación móvil en Android e iOS

Y todo esto sin límite de almacenamiento (Todo dependerá de tu capacidad en disco duro).

Requisitos del sistema#

  • Docker instalado
  • Al menos 4GB de ram y un procesador de 2 núcleos

Guia de inicio#

Pasos generales de instalación:#

  1. Descarga los archivos requeridos
    • Selecciona el lugar donde vivirá la aplicación. Por ejemplo:
      • /opt/immich
    • Descarga docker-compose.yml
    • Descarga .env
  2. Ingresa los valores requeridos del archivo .env (Recuerda cambiar los datos por defecto)
    • UPLOAD_LOCATION=./library. En caso de Raspberry Pi, un disco duro externo
    • DB_DATA_LOCATION=./postgres
    • IMMICH_VERSION=release
    • DB_PASSWORD=postgres
    • DB_USERNAME=postgres
    • DB_DATABASE_NAME=immich
  3. Start the containers
    • sudo docker compose up -d
  4. Visitas la aplicación y completas el formulario
    • http://<machine-ip-address>:2283

Bibliotecas externas#

Una biblioteca externa sirve para cargar tus fotografías sin necesidad de usar la interfaz web o aplicación móvil para subirlas.

Este proceso se realiza a través de dos apartados:

  1. Configuración en Docker compose
    • docker-compose.yml
  2. Configuración en la aplicación
    • Administration => External Libraries Tab => Create Library => Edit import path

Configuración en Docker compose#

  1. Desde el lugar dónde instalaste tu immich detienes y eliminas los contenedores, redes y volúmenes definidos en tu archivo docker-compose.yml.
Terminal window
# Detenemos y eliminamos el contenedor actual
sudo docker compose down
# Editas el archivo docker-compose.yml
vim docker-compose.yml
  1. Añades los volumenes a tu archivo de configuración
    • /mnt/your/location/:/mnt/custom/docker/location

Ejemplo:

immich-server:
...
volumes:
# Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the .env file
- ${UPLOAD_LOCATION}:/data
- /etc/localtime:/etc/localtime:ro
- /mnt/your/location:/mnt/custom/docker/location
- /mnt/your/location/2:/mnt/custom/docker/location/2
  1. Levantas nuevamente el contenedor
Terminal window
sudo docker compose up -d

Configuración en la aplicación#

Con la cuenta del administrador:

  • Administration
  • External Libraries Tab
  • Create Library
  • Edit import path

Referencias#

Respaldos#

Creación de un respaldo#

Terminal window
DB_USERNAME=username_database
sudo docker exec -t immich_postgres pg_dumpall --clean --if-exists --username=$DB_USERNAME | gzip > "./backup_$(date '+%Y-%m-%d_%H%M%S').sql.gz"

Recuperación desde un respaldo#

Terminal window
# Borra el contenedor actual
sudo docker compose down -v
# Borra la ubicación de tu instalación de postgres para Immich
sudo rm -rf DB_DATA_LOCATION
# Opcional - Update to latest version of Immich (if desired)
# sudo docker compose pull
# Crea los contenedores de Docker sin ejecutarlos
sudo docker compose create
# Inicia el servidor de Postgres y espera 10 segundos a que inicie
sudo docker start immich_postgres && sleep 10
# Restaura los datos desde el Backup
PATH_BACKUP=/backup/location/dump_file.sql.gz
DB_NAME=db_name
DB_USERNAME=db_username
gunzip --stdout $PATH_BACKUP \
| sed "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
| sudo docker exec -i immich_postgres psql --dbname=$DB_NAME --username=$DB_USERNAME
# Inicias de nuevo el contenedor
sudo docker compose up -d

Montado de discos externos con Ext4 con protección LUKS#

Es posible que quieras utilizar un disco duro externo para guardar las fotos de tu servidor Immich y es sumamente probable que quieras proteger estas fotos ante un robo del disco duro físico. Para esto puedes utilizar un disco duro Ext4 con protección LUKS. Por lo que tu información estará cifrada.

Montado del disco#

Terminal window
# Lista los dispositivos de bloque
lsblk
# Desciframos la información contenida en el disco
sudo cryptsetup luksOpen /dev/sdXN fotos
sudo mount /dev/mapper/fotos /mnt/fotos
  • X = Letra
  • N = Número
  • fotos = cualquier alias
  • segundo /mnt/fotos = ubicación para montar

Desmontado del disco#

Terminal window
# Paramos nuestra instancia de immich (pues usa el disco)
sudo docker compose down
# Desmontado del disco y cifrado del mismo
sudo umount /mnt/fotos && sudo cryptsetup luksClose fotos

Preguntas frecuentes#

¿Cómo recuperar mi password?#

Terminal window
# Entras al contenedor de forma interactiva
sudo docker exec -it immich_server bash
# Ejecutas la utilidad para recuperar el password del administrador
immich-admin reset-admin-password
# Sales del contenedor
exit

¿Cómo desinstalar immich?#

  1. Desde el lugar dónde instalaste tu immich detienes y eliminas los contenedores, redes y volúmenes definidos en tu archivo docker-compose.yml.
Terminal window
docker compose down -v
  1. Borras todo lo relacionado a immich (se pueden consultar los valores en el archivo .env)
  • DB_DATA_LOCATION contains the database, media info, and settings.
  • UPLOAD_LOCATION contains all the media uploaded to Immich.

Referencias#

Nota final

¡Gracias por terminar de leer este artículo! uwur

— El Capitán

¿Tienes alguna duda o te gustaría comentar algo sobre este artículo?

Puedes encontrarme en:

Crea tu propio servidor al estilo Google Photos con Immich
https://elcaza.github.io/posts/sysadmin/immich/
Autor
El Capitán
Publicado el
2025-08-23
Licencia
CC BY-NC-SA 4.0