
Mi faccio un Google Foto personalizzato con Immich
Immich si presenta come una soluzione self-hosted per la gestione di foto e video, offrendo una valida alternativa a servizi in cloud molto popolari come Google Foto.
Diverse le funzionalità disponibili tra cui il riconoscimento facciale e la funzione "Ricordi", ma in particolare Immich pone l'accento sul controllo e la privacy dei propri dati.
Infatti, essendo una soluzione self-hosted, conserva le foto e i video interamente sull'hardware dell'utente, eliminando il trasferimento verso server di terze parti e in più evita i costi di abbonamento.
Inoltre Immich offre un supporto per i file RAW e strumenti di organizzazione personalizzabili, come l'ordinamento automatico in cartelle basato su data, fotocamera o regole personalizzate.
Disponibili anche un'app mobile per Android e una per iPhone con supporto integrato per il backup automatico delle foto.
Sebbene le funzionalità di intelligenza artificiale locali (riconoscimento di volti e oggetti) potrebbero non raggiungere la stessa raffinatezza di Google, per gli utenti che puntano su trasparenza e flessibilità Immich rappresenta una soluzione molto interessante e sopratutto open-source, sostenuta da una vasta comunità di utenti e sviluppatori.
Tra le altre opzioni disponibili troviamo il supporto multiutente, la condivisione dei contenuti, il backup in cloud e l'autenticazione single sign-on tramite OpenID Connect (OIDC).
Tuttavia l'utilizzo di Immich comporta anche alcuni svantaggi rispetto a Google Foto: in primo luogo un hardware in funzione costantemente oltre alla configurazione di un accesso remoto sicuro.
Inoltre richiede un maggiore impegno nella gestione del servizio e soprattutto un'attenzione particolare durante gli aggiornamenti (molto frequenti visto che il progetto è ancora in versione beta).
Tuttavia la documentazione su GitHub è molto dettagliata e ad ogni rilascio vengono evidenziate chiaramente tutte le modifiche che potrebbero determinare dei malfunzionamenti
Installazione
La documentazione ufficiale dell'applicazione descrive in dettaglio tutti i passi necessari per l'installazione.
Nel mio caso ho eseguito l'operazione sul NAS Synology DS723+ attraverso il Container Manager, ma i passi riportati sono praticamente gli stessi per qualsiasi sistema equipaggiato con Docker.
Per prima cosa si crea una directory che conterrà i due file obbligatori docker-compose.yml file e .env.
mkdir ./immich-app
cd ./immich-app
All'interno di immich-app occorre creare altre due cartelle postgres e library a cui fa riferimento il file .env.
I file si possono scaricare direttamente da GitHub e sono aggiornati all'ultima versione disponibile.
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
Nel caso si voglia abilitare l'accelerazione hardware (disponendo di una GPU) per la transcodifica dei video e le attività di machine learning (per il riconscimento facciale) occorre scaricare i file hwaccel.transcoding.yml e hwaccel.ml.yml.
wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml
Nel mio caso non sono presenti visto che il NAS non dispone di una scheda grafica.
Comunque le prestazioni sono più che buone.
In generale le uniche modifiche richieste riguardano il file .env che possiamo ottenere rinominando example.env.
In sostanza dobbiamo definire
- la versione di Immich da utilizzare (molto importante per i successivi aggiornamenti)
- la cartella in cui verranno salvate le foto importate (sull'host che ospita il servizio e non all'interno del container)
- la password per il database Postgres
# You can find documentation for all the supported env variables at https://immich.app/docs/install/environment-variables
# The location where your uploaded files are stored
UPLOAD_LOCATION=./library
# The location where your database files are stored
DB\_DATA\_LOCATION=./postgres
# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identifier from this list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List
# TZ=Etc/UTC
# The Immich version to use. You can pin this to a specific version like "v1.71.0"
IMMICH_VERSION=release
# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spaces
DB_PASSWORD=<db-password>
# The values below this line do not need to be changed
###################################################################################
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
Nel mio caso ho deciso di importare le immagini da una libreria cartella presente sul NAS che ospita Immich senza caricare i file direttamente.
L'accesso avviene in sola lettura così da non danneggiare i file in caso di problemi con il software o nel caso in cui decidessi di non utilizzarlo più.
Le cartelle devono essere visibili al servizio (container) immich-server quindi occorre fare una piccola modifica al file docker-compose.yml
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
# extends:
# file: hwaccel.transcoding.yml
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
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}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- /volume1/photo:/usr/src/app/external:ro
env_file:
- .env
ports:
- '2283:2283'
depends_on:
- redis
- database
restart: always
healthcheck:
disable: false
In corrispondenza della sezione volumes occorre aggiungere il path della cartella contenente le foto (nel mio caso /volume1/photo che si trova proprio sul NAS) e che comparirà tra quelle esterne nel momento in cui andremo a creare la libreria.
Da notare la presenza del parametro ro (read-only) che indica proprio l'accesso in sola lettura.
Questa modalità da un lato garantisce la massima sicurezza dei dati, d'altra impedisce alcune operazioni come l'aggiunta della descrizione della foto, la modifica della data di creazione e la geolocalizzazione GPS.
Tali operazioni andranno effettuate direttamente sulle foto agendo sui metadati EXIF mediante un opportuno tool.
Con una qualsiasi installazione di Docker, si può avviare il tutto con
docker-compose up -d
Nel caso del NAS Synology occorre creare un nuovo progetto all'interno del Container Manager specificando la cartella in cui è contenuto il file docker-compose.yml e si si desidera che l'applicazione venga avviata al termine della build.
I tempi possono essere più o meno lunghi in funzione della velocità della connessione e del download o meno delle immagini a partire dale quali saranno creati i container dei vari servizi.
Se l'operazione termina senza problemi il progetto sarà elencato nella lista ed evidenziato da un pallino verde.
Configurazione
Al termine della procedura di avvio l'interfaccia sarà disponibile all'indirizzo http://ip-server:2283 a meno che non sia stata modificata la porta di default.
Al primo avvio è necessario creare un utente amministratore.
Volendo utilizzare delle cartelle esterne (come nel mio caso), occorre cliccare sull'icona dell'utente e poi sulla voce Amministrazione.
Successivamente selezionare Librerie Esterne --> Crea libreria e infine su Aggiungi percorso con cui si può selezionare proprio la cartella esterna visibile ad Immich grazie alla modifica fatta in precedenza al docker-compose.yml.
Dopo aver salvato le informazioni partirà il processo di scansione e importazione delle immagini con la creazione delle miniature, l'estrazione dei metadati, il riconoscimento dei volti ecc.
N.B. l'articolo non è ancora completo. A breve inserirò ulteriori dettagli sulla configurazione. Tuttavia la procedura è completamente descritta nel video


