PhotoPrism o Immich: quale server fotografico scegliere?
Confronto pratico tra PhotoPrism e Immich: requisiti RAM reali, app mobili, mappe e comandi di backup Docker da usare su un VPS.
PhotoPrism e Immich: la risposta breve
PhotoPrism e Immich risolvono due problemi diversi, non sono due versioni dello stesso prodotto. Immich sostituisce Google Photos: un'app per telefono esegue automaticamente il backup del rullino fotografico e la sequenza temporale risultante è familiare a chiunque abbandoni la galleria del telefono. PhotoPrism organizza una libreria fotografica già esistente: indicizza le cartelle di file presenti sul disco, legge i relativi metadati, li visualizza su una mappa e lascia i file esattamente dove si trovavano.
Scegli Immich se il problema è "il mio 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 VPS normale ed entrambi indicizzano e cercano nella tua libreria senza inviare dati a terze parti.
La differenza di filosofia e perché determina tutto
Immich gestisce i file. Gli si indica una posizione di caricamento, l'app del telefono o il caricatore web invia gli originali e Immich li memorizza nel proprio percorso con una propria convenzione per i nomi. Il database contiene le informazioni definitive su album, volti e ricerca. Questo design 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 vi crea sopra un indice. La struttura delle directory rimane invariata. Se domani si rimuove PhotoPrism, le foto restano nelle stesse cartelle con gli stessi nomi e PhotoPrism avrà scritto accanto a esse file YAML sidecar che descrivono le informazioni raccolte.
Questa singola differenza spiega gran parte del resto. Immich offre un supporto mobile efficace perché controlla l'acquisizione dei file. PhotoPrism è più adatto alla gestione di una libreria esistente perché non modifica la struttura già in uso. Immich è la scelta migliore per una famiglia le cui foto si trovano sui telefoni. PhotoPrism è la scelta migliore per un archivio che si trova su un disco.
Hardwarebedarf: Immich benötigt mehr
Die dokumentierten Mindestanforderungen an den Arbeitsspeicher liegen weit auseinander. Auf einem kleinen VPS ist das meistens 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 nennt 6 GB RAM als Minimum und 8 GB als Empfehlung. Außerdem wird darauf hingewiesen, dass die Anwendung auf einer Maschine mit 4 GB nur mit deaktiviertem Machine Learning ausgeführt werden kann. PhotoPrism nennt 3 GB physischen Arbeitsspeicher und 2 CPU-Kerne. Die RAM-Größe sollte dabei 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-Modelle (contrastive language image pretraining) und Modelle zur Gesichtserkennung in den Arbeitsspeicher. Auf einer Maschine mit 2 GB beendet der Kernel diesen Container. Docker meldet dann den Exit-Code 137. Das ist das typische Ergebnis eines Out-of-Memory-Kills. Die TensorFlow-Modelle von PhotoPrism sind kleiner. Bei Speichermangel reduziert PhotoPrism den Funktionsumfang, statt den Prozess zu beenden: Auf Maschinen mit 1 GB oder weniger deaktiviert es die RAW-Konvertierung und TensorFlow, anstatt abzustürzen.
Beide Projekte empfehlen Swap. In der Dokumentation von PhotoPrism wird ausdrücklich mindestens 4 GB Swap auf dem Server verlangt. 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. Wird 0B ausgegeben, ist swapon fehlgeschlagen. Ursache ist meistens, dass das Dateisystem fallocate nicht unterstützt. In diesem Fall dient sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 als Fallback. Auch die Speichergrenzen für Container sind hier wichtig. Mit Speichergrenzen in Docker Compose festlegen verhindern Sie, dass ein einzelner speicherintensiver Dienst die gesamte Maschine lahmlegt.
Eine weitere Anforderung wird häufig übersehen. Die Postgres-Datenbank von Immich muss auf einem normalen Unix-Dateisystem mit echten Besitz- und Berechtigungen liegen. Der Speicher muss lokal sein. Eine Netzwerkfreigabe ist nicht zulässig. PhotoPrism stellt dieselbe Anforderung an seine Datenbankdateien. Keine der beiden Anwendungen sollte ihre Datenbank auf einem eingebundenen Object Store betreiben.
Come installare ciascuno
Entrambe le installazioni usano un file Compose del fornitore e un comando. Configura 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.envModifica .env prima di avviare qualsiasi servizio. UPLOAD_LOCATION è la directory in cui verranno archiviati gli originali e DB_PASSWORD deve essere modificato rispetto al valore predefinito usando solo i caratteri A-Za-z0-9, perché i caratteri speciali interrompono la stringa di connessione. Avvia quindi il servizio.
docker compose up -d
docker compose psL'interfaccia web è disponibile sulla porta 2283. Il primo account registrato tramite quella pagina diventa l'amministratore. Accedi quindi subito e completa la registrazione, invece di lasciare un'istanza accessibile 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.yamlApri compose.yaml e modifica PHOTOPRISM_ADMIN_PASSWORD prima del primo avvio. La documentazione è chiara: l'applicazione si avvia con la password iniziale presente nel file, la lunghezza minima è di 8 caratteri e il valore predefinito non deve mai essere usato su un server pubblico. Imposta 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 deve essere esposta direttamente. Configura un reverse proxy con TLS (sicurezza del livello di trasporto) davanti all'applicazione, come nella configurazione usata per un'istanza Nextcloud self-hosted con Docker, TLS e backup.
Quale offre la migliore app per telefono
È l'aspetto in cui i due progetti sono più distanti, ed è il motivo per cui la maggior parte delle persone sceglie Immich.
Immich rilascia app ufficiali per Android e iOS. Eseguono il backup in background del rullino fotografico, quindi le nuove foto vengono trasferite dal telefono senza dover aprire alcuna app. L'app richiede un endpoint HTTPS, quindi il reverse proxy è indispensabile se prevedi di usarla fuori casa.
PhotoPrism non dispone di un'app nativa ufficiale. Offre una progressive web app, che puoi aggiungere alla schermata Home dal browser, e documenta WebDAV (web distributed authoring and versioning) come metodo per sincronizzare le foto dal telefono. Il progetto consiglia un'app di terze parti chiamata PhotoSync, configurata per usare la directory /import/ o /originals/ tramite WebDAV. Funziona, ma è un'app a pagamento di terze parti che svolge un'attività eseguita da Immich direttamente 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 ricerche semantiche nella libreria usando CLIP. Una query come "bicycle rossa nella neve" trova foto che nessuno ha mai taggato. Esegue anche 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. È un comportamento normale e non richiede una GPU (graphics processing unit).
PhotoPrism classifica le immagini con TensorFlow in base alle etichette, rileva i volti e li raggruppa per persona. Legge anche i metadati della posizione per creare una mappa dei luoghi. La mappa è la funzionalità che spinge molti utenti a restare: 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 dei volti è incluso nell'edizione gratuita Community. Gli abbonamenti a pagamento Essentials e Plus aggiungono funzioni come livelli della mappa più avanzati, un numero maggiore di ruoli utente e un'interfaccia per la gestione degli utenti. A luglio 2026 partono da pochi euro al mese.
Immich è completamente gratuito e non offre un piano a pagamento. Il componente principale di PhotoPrism è gratuito, con funzioni aggiuntive opzionali a pagamento.
I backup determinano se conserverai tutto
Un server fotografico senza backup è a un solo guasto del disco dalla perdita di tutto ciò che una famiglia possiede. 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 posizione 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 cartelle che contengono dati non sostituibili sono upload, library e profile. Le cartelle thumbs e encoded-video possono essere rigenerate, al costo di ore di tempo CPU. Un dump del database da solo non ripristina nulla, perché contiene solo 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 cartella originals e la cartella storage. Poiché PhotoPrism scrive anche file YAML sidecar che descrivono ogni foto, un indice perso può essere ricostruito dai soli file. Questo è un vantaggio concreto per un archivio che prevedi di conservare per decenni.
Qualunque applicazione tu scelga, invia questi backup fuori dal server secondo una pianificazione, usando backup restic crittografati 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 l’esperienza sull’app mobile è il suo punto di forza. La nostra guida passo passo all’installazione di Immich descrive in dettaglio le terminazioni per esaurimento della memoria e i problemi che possono verificarsi durante gli aggiornamenti.
Usa PhotoPrism se hai già un archivio fotografico su disco, se ti interessano mappe e metadati e vuoi mantenere la tua struttura di cartelle, oppure se il tuo VPS ha 4 GB di RAM e preferisci una libreria funzionante a una libreria che usa lo swap. È lo strumento migliore per organizzare e selezionare le foto, e richiede meno risorse sull’hardware con poca memoria.
È ragionevole eseguire anche entrambi. 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 il contenuto della posizione di upload. Puoi configurare PhotoPrism per usare una copia in sola lettura della cartella library di Immich e sfogliarla, ma non permettere 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?
No, nessuna applicazione self-hosted dovrebbe contenere l'unica copia di qualcosa. Immich rilascia spesso modifiche incompatibili e un docker compose pull eseguito senza attenzione può impedire l'avvio del database. Fissa quindi la versione e leggi le note di rilascio prima di eseguire l'upgrade. Conserva i file originali in un backup esterno al server, così il rischio rimane contenuto.
Perché il container di machine learning di Immich continua a riavviarsi?
Viene terminato perché utilizza troppa memoria. Esegui docker compose ps e cerca il servizio di machine learning che termina con il codice 137, che indica l'intervento dell'out of memory killer del kernel. Aggiungi swap oppure assegna al container un limite di memoria, in modo che venga limitato invece di essere terminato. In alternativa, disabilita completamente il machine learning su una macchina con 4 GB. La ricerca smette di funzionare senza questo componente, ma 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 all'incirca un volume da 300 GB, lasciando spazio per il database, la copia di backup locale e la crescita futura.