PhotoPrism vs Immich: quale server fotografico scegliere?
Confronto tra PhotoPrism e Immich: requisiti RAM reali, app per telefono, mappe e comandi di backup esatti per installarli 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 differenza di approccio e perché determina tutto
Immich gestisce direttamente i file. Si indica una posizione per i caricamenti, quindi l'app del telefono o il caricatore web invia gli originali e Immich li archivia nel proprio percorso, usando la 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 elemento.
PhotoPrism legge i file. Si monta una cartella originals già sotto il proprio controllo e PhotoPrism la indicizza. La struttura delle directory resta invariata. Se domani si rimuove PhotoPrism, le foto rimangono nelle stesse cartelle con gli stessi nomi e PhotoPrism avrà creato accanto ai file dei sidecar YAML che descrivono le informazioni rilevate.
Questa singola differenza spiega gran parte delle altre. Immich offre un supporto mobile più completo perché controlla l'acquisizione dei file. PhotoPrism offre una gestione più efficace della libreria perché non modifica la struttura esistente. Immich è la scelta migliore per una famiglia le cui foto si trovano sui telefoni. PhotoPrism è la scelta migliore per un archivio che risiede su un disco.
Hardware-Anforderungen: Immich benötigt mehr Ressourcen
Die dokumentierten Mindestwerte für den Arbeitsspeicher unterscheiden sich deutlich. Auf einem kleinen VPS ist dies normalerweise der entscheidende Faktor.
The data behind this chart
[
{
"label": "Immich",
"min_ram_gb": 6,
"recommended_ram_gb": 8
},
{
"label": "PhotoPrism",
"min_ram_gb": 3,
"recommended_ram_gb": 4
}
]Immich gibt 6 GB RAM als Minimum und 8 GB als Empfehlung an. In der Dokumentation steht außerdem, dass ein System mit 4 GB die Anwendung nur bei deaktiviertem Machine Learning ausführen kann. PhotoPrism nennt 3 GB physischen Arbeitsspeicher und 2 CPU-Kerne. Die RAM-Größe sollte der Anzahl der Kerne entsprechen.
Der Unterschied ist real und wird durch den Machine-Learning-Container verursacht. Immich führt seine Modelle in einem separaten immich-machine-learning-Dienst aus. Dieser lädt CLIP (contrastive language image pretraining) und Modelle zur Gesichtserkennung in den Arbeitsspeicher. Auf einem System mit 2 GB beendet der Kernel diesen Container. Docker meldet dann den Exit-Code 137, der auf eine Beendigung wegen fehlenden Arbeitsspeichers hinweist. Die TensorFlow-Modelle von PhotoPrism sind kleiner. Die Anwendung schränkt den Funktionsumfang ein, statt zu beenden: Auf Systemen mit 1 GB oder weniger deaktiviert sie die RAW-Konvertierung und TensorFlow, anstatt abzustürzen.
Beide Projekte setzen Swap voraus. In der Dokumentation von PhotoPrism werden mindestens 4 GB Swap auf dem Server ausdrücklich empfohlen. Richten Sie Swap ein, bevor Sie eine der beiden Anwendungen installieren.
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 -hfree -h sollte jetzt eine Swap:-Zeile mit 4.0Gi ausgeben. Wenn 0B ausgegeben wird, ist swapon fehlgeschlagen, normalerweise weil das Dateisystem fallocate nicht unterstützt. In diesem Fall wird sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 als Fallback verwendet. Auch die Speichergrenzen für Container sind hier wichtig. Das Festlegen von Speichergrenzen in Docker Compose verhindert, dass ein Dienst mit hohem Speicherbedarf das gesamte System auslastet.
Eine weitere Anforderung wird häufig übersehen. Die Postgres-Datenbank von Immich muss sich auf einem normalen Unix-Dateisystem mit echter Eigentümer- und Rechteverwaltung und auf lokalem Speicher befinden. Eine Netzwerkfreigabe darf nicht verwendet werden. PhotoPrism stellt dieselbe Anforderung an seine Datenbankdateien. Keine der beiden Anwendungen sollte mit einer Datenbank auf einem eingebundenen Object Store betrieben werden.
Come installare ciascuna soluzione
Entrambe le installazioni consistono in un file Compose fornito dal produttore e in 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.envModificare .env prima di avviare qualsiasi componente. UPLOAD_LOCATION indica la directory in cui verranno archiviati gli originali, mentre DB_PASSWORD deve essere modificata rispetto al valore predefinito usando esclusivamente i caratteri A-Za-z0-9, perché i caratteri speciali interrompono la stringa di connessione. Quindi avviare il servizio.
docker compose up -d
docker compose psL'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 esposta su Internet.
PhotoPrism include un unico file Compose che comprende già MariaDB.
sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yamlAprire compose.yaml e modificare PHOTOPRISM_ADMIN_PASSWORD prima del primo avvio. La documentazione è esplicita: l'applicazione si avvia 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 foto.
docker compose up -d
docker compose logs -f photoprismPhotoPrism è disponibile sulla porta 2342 con l'utente admin. Nessuna delle due applicazioni dovrebbe essere esposta direttamente. Collocare davanti un reverse proxy con TLS (sicurezza del livello di trasporto), secondo lo stesso schema usato per un'istanza self-hosted di Nextcloud con Docker, TLS e backup.
Quale offre l’app per telefono migliore
È il punto in cui i due progetti sono più distanti, ed è il motivo per cui la maggior parte delle persone sceglie Immich.
Immich distribuisce app ufficiali per Android e iOS. Eseguono il backup in background del rullino fotografico, quindi le nuove foto lasciano il telefono senza che sia necessario aprire alcuna applicazione. L’app richiede un endpoint HTTPS, quindi il reverse proxy è indispensabile se si prevede di usarla fuori casa.
PhotoPrism non dispone di un’app nativa ufficiale. Distribuisce una progressive web app, che si aggiunge alla schermata Home dal browser, e documenta WebDAV (web distributed authoring and versioning) come metodo per sincronizzare le foto da un telefono. Il progetto consiglia a questo scopo un’app di terze parti chiamata PhotoSync, configurata per usare la directory /import/ o /originals/ tramite WebDAV. Funziona, ma si tratta di un’app a pagamento di terze parti che svolge un’attività gestita direttamente da Immich nel proprio client.
Se il requisito è il backup automatico del telefono per più membri della famiglia, la scelta è determinata: Immich.
Cosa offre realmente il machine learning
Immich esegue la ricerca semantica nella libreria usando CLIP. Una query come "red bicycle in snow" trova anche foto che nessuno ha mai taggato. Rileva e raggruppa inoltre i volti e individua i duplicati. L'indicizzazione di una grande importazione sulla CPU può richiedere ore ed essere eseguita in background. È un comportamento normale e non richiede una GPU (graphics processing unit).
PhotoPrism classifica le immagini con TensorFlow assegnando loro delle etichette, rileva i volti e li raggruppa per persona. Legge inoltre i metadati sulla posizione per creare una mappa dei luoghi. La mappa è la funzionalità che convince molti utenti a continuare a usare il prodotto: una libreria indicizzata in base al luogo in cui sono state scattate le foto offre un modo realmente diverso di consultare vent'anni di immagini. Il riconoscimento facciale è incluso nell'edizione gratuita Community. Gli abbonamenti Essentials e Plus a pagamento aggiungono funzionalità come livelli più dettagliati per la mappa, un numero maggiore di ruoli utente e un'interfaccia per la gestione degli utenti, a partire da pochi euro al mese a luglio 2026.
Immich è completamente gratuito e non prevede un piano a pagamento. Il componente principale di PhotoPrism è gratuito, con funzionalità 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.gzEsegui 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 -fIl 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.
Indipendentemente dalla scelta, invia periodicamente i backup fuori dal server utilizzando backup restic cifrati e deduplicati su storage remoto. Un backup che risiede sullo stesso disco della libreria non è un backup.
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 modo sicuro in entrambe le direzioni. PhotoPrism legge una cartella originals e scrive file YAML sidecar accanto alle immagini, mentre Immich si aspetta di gestire direttamente i contenuti della propria posizione di upload. Puoi configurare PhotoPrism per usare una copia in sola lettura della cartella library di Immich e consultarla, ma non consentire a entrambe le applicazioni di gestire gli stessi file, perché il template di storage di Immich può spostare o rinominare gli asset 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 introduce spesso modifiche incompatibili e un docker compose pull eseguito senza attenzione può impedire l'avvio del database; quindi blocca la versione e leggi le note di rilascio prima di eseguire l'upgrade. Mantieni i file originali in una copia di backup esterna al server per contenere il rischio.
Perché il container di machine learning di Immich continua a riavviarsi?
Viene terminato perché usa troppa memoria. Esegui docker compose ps e cerca l'uscita del servizio di machine learning con codice 137: indica l'intervento dell'out-of-memory killer del kernel. Aggiungi lo swap, assegna al container un limite di memoria in modo che venga rallentato invece di essere terminato oppure disabilita completamente il machine learning su una macchina con 4 GB. La ricerca smette di funzionare senza questo componente, mentre il resto di Immich continua a funzionare normalmente.
PhotoPrism richiede MariaDB o è sufficiente SQLite?
SQLite funziona ed è adatto a una libreria personale, ma PhotoPrism si limita a quattro worker quando lo utilizza. La documentazione consiglia di passare a MariaDB perché 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, per entrambe le applicazioni. Questo spazio copre le miniature generate e le anteprime video transcodificate. Una raccolta di 200 GB richiede circa un volume da 300 GB, lasciando spazio per il database, la copia di backup locale e la crescita futura.