SSD Nodes Learn Hosting plans →
Guide Matt ConnorDi Matt Connor · Aggiornato 2026-10-19

PhotoPrism o Immich: quale server foto scegliere?

Confronto pratico tra PhotoPrism e Immich: requisiti RAM reali, app per telefono, mappe e comandi di backup Docker da usare su un VPS.

PhotoPrism vs Immich: la risposta breve

PhotoPrism vs Immich significa scegliere tra due attività diverse, non tra due versioni dello stesso prodotto. Immich sostituisce Google Photos: un'app sul telefono esegue automaticamente il backup del rullino fotografico e la timeline risultante è familiare a chiunque abbandoni la galleria del telefono. PhotoPrism organizza una libreria di foto già esistente: indicizza le cartelle dei file sul disco, legge i relativi metadati, li posiziona su una mappa e lascia i file esattamente dove si trovavano.

Scegli Immich se il problema è «il telefono è pieno e voglio smettere di usare Google Photos». Scegli PhotoPrism se il problema è «ho 400 GB di foto su un'unità e non riesco a trovare nulla». Entrambi sono open source, entrambi vengono eseguiti come container Docker su un normale VPS ed entrambi indicizzano e cercano nella libreria senza inviare dati a terze parti.

La divisione filosofica e perché determina tutto

Immich gestisce i file. Si indica una posizione per i caricamenti; l’app del telefono o l’uploader web invia gli originali e Immich li archivia nel proprio percorso, usando una propria convenzione per i nomi. Il database contiene le informazioni autorevoli su album, volti e ricerca. Questo approccio rende efficace l’esperienza da telefono, perché il server conosce sempre lo stato completo di ogni risorsa.

PhotoPrism legge i file. Si monta una cartella originals già sotto il proprio controllo e PhotoPrism crea un indice dei suoi contenuti. La struttura delle directory resta invariata. Se si rimuove PhotoPrism, le foto rimangono nelle stesse cartelle e con gli stessi nomi; i file YAML sidecar che PhotoPrism ha scritto per descrivere le informazioni rilevate restano nella propria cartella di archiviazione, dove vengono conservati per impostazione predefinita.

Questa singola differenza spiega gran parte del resto. Immich offre un supporto mobile completo perché controlla l’acquisizione dei file. PhotoPrism offre una gestione efficace della libreria perché non modifica la struttura esistente. Immich è la scelta migliore per una famiglia le cui foto risiedono sui telefoni. PhotoPrism è la scelta migliore per un archivio che risiede su un disco.

Hardware appetite: Immich richiede di più

I requisiti minimi di memoria documentati sono molto diversi e, su un VPS di piccole dimensioni, questo è generalmente il fattore decisivo.

GraficoDocumented minimum memory, as of October 2026
I dati alla base di questo grafico
[
  {
    "label": "Immich",
    "min_ram_gb": 6
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3
  }
]

Immich indica 6 GB di RAM come requisito minimo e 8 GB come quantità consigliata, specificando che una macchina da 4 GB può eseguirlo solo con il machine learning disattivato. PhotoPrism indica 3 GB di memoria fisica e due core CPU, e specifica che, oltre questo minimo, la quantità di RAM dovrebbe corrispondere al numero di core.

La differenza è reale e dipende dal container per il machine learning. Immich esegue i propri modelli in un servizio immich-machine-learning separato, che carica in memoria CLIP (contrastive language image pretraining) e i modelli per il rilevamento dei volti. Su una macchina da 2 GB, il kernel termina quel container e lo si vede uscire con il codice 137, lo stato di un processo terminato con il segnale 9: è così che un arresto per esaurimento della memoria si manifesta in Docker. I modelli integrati di PhotoPrism vengono eseguiti tramite ONNX, che secondo la documentazione offre generalmente buone prestazioni su tutti i tipi di hardware. PhotoPrism dispone inoltre di un fallback documentato per i casi di memoria limitata: sulle macchine con 1 GB o meno disabilita la conversione RAW e il riconoscimento dei volti. Questo, però, non garantisce la stabilità. Al di sotto del suo minimo di 3 GB, il progetto avverte della possibile instabilità e di problemi di prestazioni, quindi considera quel valore come un requisito minimo effettivo.

La documentazione di PhotoPrism specifica chiaramente che sul server sono necessari almeno 4 GB di swap. La pagina dei requisiti di Immich non menziona la swap, ma la swap offre margine al suo container per il machine learning su una macchina di piccole dimensioni. Aggiungila prima di installare una delle due applicazioni.

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h dovrebbe ora stampare una riga Swap: che mostra 4.0Gi. Se stampa 0B, significa che swapon non è riuscito, in genere perché il filesystem non supporta fallocate, e sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 è il fallback. Anche i limiti di memoria dei container sono importanti in questo caso; impostare i limiti di memoria in Docker Compose consente di impedire che un servizio che consuma troppa memoria mandi in crisi l'intera macchina. L'eccezione è PhotoPrism: la sua documentazione sconsiglia di impostare un limite rigido di memoria sul container, perché l'indicizzazione di file di grandi dimensioni richiede temporaneamente memoria aggiuntiva e un limite può causare riavvii imprevisti.

Un altro requisito sorprende molti utenti. Il database PostgreSQL di Immich deve trovarsi su un filesystem Unix normale, con proprietà e permessi effettivi, su storage locale e mai su una condivisione di rete. PhotoPrism avverte di non archiviare mai i propri file di database in una cartella di rete condivisa e indica lo storage SSD locale come posizione migliore. Nessuna delle due applicazioni deve essere eseguita con il database su un object store montato.

Come installare ciascuna applicazione

Entrambe le installazioni usano un file Compose fornito dal produttore e un comando. Configurare prima Docker Engine e il plugin Compose, come descritto nella nostra guida a Docker Compose su un VPS.

Immich pubblica il proprio file Compose e un file di ambiente di esempio a ogni release.

sudo mkdir -p /opt/immich && cd /opt/immich
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

Modificare .env prima di avviare qualsiasi componente. UPLOAD_LOCATION indica la directory in cui verranno salvati gli originali. DB_PASSWORD deve essere modificato rispetto al valore predefinito usando soltanto i caratteri A-Za-z0-9, perché i caratteri speciali danneggiano la stringa di connessione. Avviare quindi il servizio.

docker compose up -d
docker compose ps

L'interfaccia web è disponibile sulla porta 2283. Il primo account registrato da quella pagina diventa l'amministratore. Raggiungere quindi l'interfaccia e completare subito la registrazione, invece di lasciare un'istanza non protetta su Internet.

PhotoPrism distribuisce un unico file Compose che include già MariaDB.

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

Aprire compose.yaml e modificare PHOTOPRISM_ADMIN_PASSWORD prima del primo avvio. La documentazione è esplicita: l'applicazione viene avviata con la password iniziale presente in quel file, la lunghezza minima è di 8 caratteri e il valore predefinito non deve mai essere usato su un server pubblico. Impostare nello stesso momento il volume originals sulla directory che contiene le fotografie.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism è disponibile sulla porta 2342 con l'utente admin. Nessuna delle due applicazioni deve essere esposta direttamente. Posizionare davanti un reverse proxy con TLS (transport layer security), con una configurazione analoga a quella usata per un'istanza self-hosted di Nextcloud con Docker, TLS e backup, oppure mantenere privato il server e accedervi tramite una VPN. Se quel VPS ospiterà anche servizi diversi dalla gestione delle fotografie, applicare la stessa restrizione a ogni servizio aggiunto, perché un relay RustDesk self-hosted richiede che siano raggiungibili soltanto le proprie due porte. Non deve essere esposto altro.

Quale offre l’app per smartphone migliore

È l’aspetto in cui i due progetti sono più distanti. È anche il motivo per cui la maggior parte degli utenti sceglie Immich.

Immich rilascia app ufficiali per Android e iOS. Eseguono il backup in background del rullino fotografico. Le nuove foto vengono quindi trasferite dallo smartphone senza dover aprire alcuna applicazione. Per usare il servizio fuori casa, Immich documenta tre possibilità: una VPN come WireGuard o OpenVPN, Tailscale oppure un reverse proxy che espone il servizio tramite HTTPS. Il reverse proxy consente alle app per smartphone di connettersi senza installare un’app VPN su ogni telefono. Immich raccomanda inoltre di non inoltrare mai direttamente la porta 2283 verso Internet senza una configurazione aggiuntiva.

PhotoPrism non dispone di un’app nativa ufficiale. Fornisce una progressive web app, che si aggiunge alla schermata principale dal browser, e documenta WebDAV (web distributed authoring and versioning) come metodo per sincronizzare le foto da uno smartphone. Il progetto consiglia a questo scopo un’app di terze parti chiamata PhotoSync, configurata per usare la directory /import/ o /originals/ tramite WebDAV. La soluzione funziona, ma richiede un’app di terze parti a pagamento per svolgere un’attività che Immich gestisce direttamente nel proprio client.

Se il requisito è il backup automatico degli smartphone di più membri della famiglia, la scelta è definita: Immich.

Cosa offre realmente il machine learning

Immich esegue ricerche semantiche nella libreria usando CLIP, quindi una query come "bicicletta rossa nella neve" trova foto che nessuno ha mai taggato. Esegue inoltre il rilevamento e il raggruppamento dei volti, oltre al rilevamento dei duplicati. L'indicizzazione di una grande importazione sulla CPU può richiedere ore in background: è normale e non richiede una GPU (graphics processing unit).

PhotoPrism classifica le immagini in etichette con un modello ONNX integrato, rileva i volti e li raggruppa in persone con modelli ONNX per i volti, quindi legge i metadati della posizione per creare una mappa dei luoghi. Un file vision.yml nella cartella di configurazione può sostituire il modello con Ollama o OpenAI per le etichette e le descrizioni, se lo desideri. La mappa è la funzione che convince gli utenti a restare: una libreria indicizzata in base al luogo in cui sono state scattate le foto offre un modo realmente diverso di esplorare vent'anni di immagini. La stessa idea funziona con altre raccolte di contenuti multimediali e l'interfaccia di videonoleggio anni '90 di Halcyon per Jellyfin ne è la versione cinematografica: consente di esplorare i contenuti per scaffale invece che per elenco. Il riconoscimento dei volti è incluso nell'edizione gratuita Community. Gli abbonamenti Essentials e Plus a pagamento aggiungono funzioni come livelli di mappa più dettagliati, più ruoli utente e un'interfaccia per la gestione degli utenti; a ottobre 2026 partono da pochi euro al mese, con fatturazione annuale.

Immich non ha funzioni a pagamento e il progetto afferma che non le introdurrà mai. Vende tuttavia chiavi prodotto opzionali a vita: $25 per un utente o $100 per un intero server, ai prezzi annunciati da Immich a luglio 2024. L'acquisto non sblocca alcuna funzione e Immich funziona senza limitazioni anche se non si paga mai. Il nucleo di PhotoPrism è gratuito, con funzioni aggiuntive opzionali a pagamento.

I backup determinano se conserverai i dati

Un server fotografico senza backup è a un guasto del disco dalla perdita di tutte le foto di una famiglia. Entrambe le applicazioni richiedono due backup: quello del database e quello dei file.

Per Immich, esegui il dump del database dal container Postgres e copia la directory degli upload.

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

Esegui quindi il backup di UPLOAD_LOCATION. Le directory che contengono dati non sostituibili sono upload, library e profile. Le directory thumbs e encoded-video possono essere rigenerate, al costo di ore di utilizzo della CPU. Un dump del database da solo non consente di ripristinare nulla, perché contiene soltanto metadati.

Per PhotoPrism, l'indice dispone di un comando dedicato.

docker compose exec photoprism photoprism backup -i -f

Il comando scrive un dump SQL in storage/backup/. Copia quindi la directory originals e la directory storage. PhotoPrism scrive anche file YAML sidecar che descrivono ogni foto. Di conseguenza, un indice perso può essere ricostruito utilizzando soltanto i file. Questo è un vantaggio concreto per un archivio che prevedi di conservare per decenni.

Qualunque soluzione si scelga, trasferire periodicamente questi backup fuori dal server con backup restic crittografati e deduplicati su storage remoto. Un backup salvato sullo stesso disco della libreria non è un backup. Configurare il job in modo che segnali gli errori: un backup che ha smesso di funzionare senza segnalazioni a marzo è indistinguibile da uno eseguito la scorsa notte fino al giorno in cui serve ripristinarlo, mentre un server ntfy self-hosted invierà l’errore al telefono già la sera stessa.

Quale dovresti usare

Usa Immich se le tue foto si trovano sui telefoni, se più persone devono eseguire il backup del rullino fotografico e se puoi assegnare al server almeno 6 GB di RAM. È la soluzione più simile a Google Photos che puoi ospitare autonomamente e il punto di forza è l’esperienza mobile. La nostra guida passo passo all’installazione di Immich descrive in dettaglio i kill dovuti alla memoria e i problemi che possono verificarsi durante gli aggiornamenti.

Usa PhotoPrism se hai già un archivio fotografico sul disco, se attribuisci importanza a mappe e metadati e vuoi mantenere la struttura delle tue cartelle, oppure se il tuo VPS dispone di 4 GB di RAM e preferisci una libreria operativa anziché una libreria che usa lo swap. È lo strumento migliore per organizzare e selezionare le foto e impone un carico minore sull’hardware meno potente.

Usare entrambi è una scelta ragionevole. Immich gestisce l’importazione quotidiana delle foto dai telefoni; una volta all’anno selezioni quelle da conservare nel tuo archivio e lasci che PhotoPrism le indicizzi. Non entrano in conflitto, perché PhotoPrism legge le cartelle mentre Immich gestisce il proprio archivio.

FAQ

PhotoPrism e Immich possono condividere la stessa cartella delle foto?

Non in sicurezza in entrambe le direzioni. PhotoPrism indicizza una cartella originals e dispone di funzioni che vi scrivono, a meno che non venga eseguito in modalità di sola lettura, mentre Immich si aspetta di gestire i contenuti della propria posizione di upload. È possibile configurare PhotoPrism in modo che utilizzi una copia di sola lettura della cartella library di Immich per sfogliarla, ma non bisogna consentire a entrambe le applicazioni di gestire gli stessi file, perché il modello di archiviazione di Immich può spostare o rinominare gli elementi mentre PhotoPrism li indicizza.

Immich è abbastanza stabile da contenere l'unica copia delle mie foto?

Nessuna applicazione self-hosted dovrebbe contenere l'unica copia di qualsiasi dato. Immich ora segue il versionamento semantico e dichiara che le modifiche incompatibili sono limitate alle release principali; quindi blocca IMMICH_VERSION su un tag di versione principale come v3, leggi le note di rilascio ed esegui l'aggiornamento con docker compose pull && docker compose up -d. Il downgrade non è supportato, nemmeno all'interno della stessa versione minor, quindi crea un dump del database prima di ogni aggiornamento. Mantieni i file originali in un backup esterno al server e il rischio resta contenuto.

Perché il container di machine learning di Immich continua a riavviarsi?

Di solito viene terminato perché utilizza troppa memoria. Esegui docker compose ps --all, perché senza quel flag un container arrestato non viene mostrato, e cerca il servizio di machine learning che termina con il codice 137. Questo codice indica che il processo è stato terminato con il segnale 9; di solito la causa è l'oom killer del kernel, ma non è l'unica possibile, quindi confermala con sudo dmesg | grep -i 'out of memory'. Aggiungi la swap oppure disabilita completamente il machine learning su una macchina con 4 GB. Un limite di memoria sul container non ne riduce il consumo: quando raggiunge il limite, il processo viene comunque terminato, ma smette di sottrarre memoria al resto del server. Senza il machine learning, la ricerca intelligente e il riconoscimento dei volti smettono di funzionare, mentre il resto di Immich continua a funzionare correttamente.

PhotoPrism richiede MariaDB o è sufficiente SQLite?

SQLite funziona ed è adatto a una libreria personale, ma PhotoPrism si limita a quattro worker quando lo utilizza e la documentazione consiglia di passare a MariaDB, che gestisce meglio un'elevata concorrenza. Il file compose distribuito dal progetto include già MariaDB, quindi il percorso consigliato è anche quello predefinito.

Quanto spazio su disco devo prevedere oltre alle dimensioni della libreria?

Aggiungi dal 10 al 20 percento alle dimensioni degli originali, indipendentemente dall'applicazione utilizzata. Questo spazio copre le miniature generate e le anteprime video transcodificate. Una raccolta di 200 GB richiede circa 220-240 GB solo per la libreria, oltre allo spazio per il database e la crescita futura. Se mantieni anche una copia locale completa del backup sullo stesso volume, gli originali e la copia richiedono almeno 400 GB prima di considerare qualsiasi altro dato; prevedi quindi circa 450 GB oppure archivia la copia su un volume separato.

Questo articolo ti è stato utile?