Immich: come installare il proprio cloud per foto e video su un VPS
Immich è un servizio self-hosted per archiviare e caricare automaticamente foto e video. Offre applicazioni mobili, un'interfaccia web, album, ricerca intelligente e riconoscimento facciale, conservando la libreria sul server scelto dall'utente.
Di seguito vedremo i requisiti di Immich, l'installazione su Ubuntu tramite Docker Compose, la configurazione di HTTPS, il collegamento dello smartphone e il backup esterno.
Immich in sei passaggi
- Creare un VPS Linux con RAM e spazio su disco sufficienti.
- Puntare un sottodominio, ad esempio
photos.example.com, all'indirizzo IP del server. - Installare Docker e scaricare la configurazione ufficiale di Immich.
- Indicare i percorsi della libreria multimediale e del database, quindi avviare i container.
- Chiudere verso l'esterno la porta interna e configurare HTTPS.
- Installare l'app mobile e configurare un backup esterno.
Che cos'è Immich
Immich è un'applicazione open source per gestire autonomamente una libreria di foto e video. Le immagini vengono mostrate su una linea temporale, possono essere raccolte in album, trovate tramite la ricerca e caricate automaticamente dallo smartphone al server.
La principale differenza rispetto a un normale servizio fotografico cloud è il controllo sul lato server. I file si trovano sul proprio VPS o server domestico, ma il proprietario deve occuparsi dello spazio libero, degli aggiornamenti, della sicurezza e dei backup.
| Parametro | Servizio fotografico cloud | Immich |
|---|---|---|
| Dove vengono archiviati i file | Presso il provider | Sul proprio server |
| Manutenzione | Eseguita dal provider | Eseguita dal proprietario |
| Costi | Piano in base allo spazio | VPS, disco e backup |
Immich non è di per sé un backup. Se le foto esistono soltanto su un VPS, un guasto del disco o una cancellazione accidentale possono comunque distruggere l'archivio.
Funzionalità principali di Immich
- Caricamento automatico. Le app per Android e iOS inviano foto e video dagli album selezionati. Per impostazione predefinita viene usato il Wi-Fi e i file già presenti vengono ignorati in base al checksum.
- Ricerca intelligente. Il servizio consente di cercare per persona, luogo, data, fotocamera, testo presente nell'immagine e descrizione del contenuto. I volti vengono raggruppati e in seguito possono essere associati a un nome.
- Album e condivisione. Sono supportati più utenti, album condivisi, condivisione con un partner e link pubblici con password e data di scadenza.
- Mappa e metadati. Immich legge i dati EXIF, mostra il luogo dello scatto, crea ricordi e supporta preferiti, archivio e librerie esterne.
Il machine learning utilizza soprattutto CPU e RAM durante la prima importazione. Dopo la creazione delle miniature e degli indici, il carico quotidiano solitamente diminuisce.
Requisiti server di Immich
I requisiti ufficiali per le versioni attuali sono:
- un sistema Linux o Unix-like a 64 bit;
- almeno 2 core CPU, 4 consigliati;
- almeno 6 GB di RAM, 8 GB consigliati;
- Docker Engine con il plugin
docker compose; - un SSD locale per il database PostgreSQL;
- spazio per file originali, miniature e video transcodificati.
Immich può essere eseguito su un server con 4 GB di RAM disattivando le funzioni di machine learning. Per il riconoscimento facciale e la ricerca intelligente è preferibile scegliere fin dall'inizio 8 GB.
Le miniature e i file transcodificati aggiungono in media il 10–20% alle dimensioni della libreria multimediale. Per un archivio da 200 GB è opportuno riservare almeno 240–260 GB. La directory del database DB_DATA_LOCATION deve trovarsi su un SSD locale e non su un'unità di rete.
Una configurazione iniziale pratica comprende 4 vCPU, 8 GB di RAM, Ubuntu 24.04 LTS e un SSD con una capacità superiore del 20–30% rispetto alla libreria originale. Una scheda video dedicata non è obbligatoria, ma può velocizzare l'elaborazione di un archivio di grandi dimensioni.
Come installare Immich su un VPS
L'esempio utilizza Ubuntu 24.04 e il sottodominio photos.example.com.
1. Configura il DNS e prepara Ubuntu
Crea un record DNS A che punti all'indirizzo IPv4 del VPS. Quindi collegati tramite SSH:
ssh root@SERVER_IP
apt update && apt upgrade -y
ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp
ufw enableNon chiudere la sessione SSH corrente finché non avrai verificato che una nuova connessione funzioni correttamente.
2. Installa Docker e Docker Compose
apt install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
-o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources > /dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install -y docker-ce docker-ce-cli containerd.io \
docker-buildx-plugin docker-compose-plugin
docker compose versionÈ necessario usare esattamente il comando docker compose: il vecchio docker-compose non è più supportato dal progetto.
3. Scarica e configura Immich
mkdir -p /opt/immich /srv/immich-data
cd /opt/immich
curl -L -o docker-compose.yml \
https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
curl -L -o .env \
https://github.com/immich-app/immich/releases/latest/download/example.envApri il file:
nano /opt/immich/.envModifica i parametri principali:
UPLOAD_LOCATION=/srv/immich-data
DB_DATA_LOCATION=/opt/immich/postgres
TZ=Europe/Berlin
DB_PASSWORD=REPLACE_WITH_A_LONG_PASSWORDIndica il tuo fuso orario. La password di PostgreSQL deve essere composta da lettere latine e numeri; il comando openssl rand -hex 24 genera un valore casuale. Lascia le altre righe come appaiono nel file example.env corrente.
4. Chiudi la porta interna e avvia i container
In docker-compose.yml, trova la porta del servizio immich-server:
ports:
- '2283:2283'Sostituiscila con:
ports:
- '127.0.0.1:2283:2283'Ora la porta è accessibile soltanto dal VPS stesso. Avvia il servizio:
cd /opt/immich
docker compose up -d
docker compose psPer la diagnostica usa docker compose logs --tail=200.
5. Configura HTTPS con Caddy
apt install -y caddy
cat > /etc/caddy/Caddyfile <<'EOF'
photos.example.com {
reverse_proxy 127.0.0.1:2283
}
EOF
caddy validate --config /etc/caddy/Caddyfile
systemctl reload caddyCaddy richiederà automaticamente il certificato se il DNS punta al VPS e le porte 80 e 443 sono accessibili. Immich deve funzionare nella radice di un dominio o sottodominio; un indirizzo come example.com/immich non è supportato.
6. Crea l'amministratore e collega lo smartphone
Apri https://photos.example.com. Il primo utente registrato diventa amministratore e può creare altri account.
Installa Immich dall'App Store o da Google Play. Nella schermata di accesso inserisci l'indirizzo senza /api:
https://photos.example.comSeleziona gli album e attiva il backup. La prima importazione può richiedere tempo: il server crea le miniature, riconosce i volti, indicizza la ricerca ed elabora i video.
Aggiornare Immich
Prima dell'aggiornamento leggi le note di rilascio, soprattutto quando passi a una nuova versione principale:
cd /opt/immich
docker compose pull
docker compose up -d
docker image pruneAggiorna prima le applicazioni mobili e poi il server. Il ripristino del database a una versione precedente potrebbe non essere supportato senza istruzioni specifiche.
Backup di Immich
Immich crea automaticamente dump di PostgreSQL, ma questi contengono solo il database e i metadati, non le foto e i video. Per un ripristino completo, salva:
- l'intera directory
/srv/immich-data; /opt/immich/.envedocker-compose.yml;- la configurazione di Caddy.
Una copia sullo stesso VPS non protegge da un guasto del disco o dall'eliminazione del server. Invia i dati a un altro server, a un NAS o a uno storage a oggetti e segui la strategia di backup 3-2-1. Verifica periodicamente un ripristino di prova, invece di controllare soltanto che i file di backup siano presenti.
Quale VPS scegliere per Immich
Per utilizzare pienamente il riconoscimento facciale e la ricerca intelligente, è ragionevole scegliere un VPS con almeno 4 vCPU e 8 GB di RAM. Calcola le dimensioni del disco in base alla libreria multimediale, lasciando spazio aggiuntivo per miniature, video e crescita dell'archivio.
Un VPS Linux di tropic.host con IP statico e storage SSD è adatto a questo scopo. Puoi iniziare con una configurazione da 8 GB di RAM e aumentare le risorse man mano che la libreria cresce. Conserva il database PostgreSQL su un disco locale veloce e il backup al di fuori di questo VPS.
Un VPS è comodo per accedere 24 ore su 24 da qualsiasi rete. Per un archivio di diversi terabyte, un server domestico può essere più economico, ma dovrai garantire autonomamente alimentazione, accesso esterno e ridondanza.
Limiti di Immich
Il self-hosting non garantisce l'affidabilità. Una password debole, la porta 2283 esposta, container non aggiornati o l'assenza di un backup esterno creano un rischio di perdita dei dati.
Immich non è inoltre una copia esatta di Google Photos o iCloud: le funzioni di modifica e sincronizzazione in background sono diverse, mentre la velocità di analisi dipende dall'hardware. Prima di trasferire l'unica copia del tuo archivio, prova il servizio con una piccola libreria.
Conclusione
Immich permette di creare una galleria fotografica personale con caricamento da mobile, album, riconoscimento facciale, ricerca e condivisione. Per la versione attuale è consigliabile preparare un VPS Linux con 4 core, 8 GB di RAM e un SSD con almeno il 20–30% di capacità aggiuntiva.
Dopo l'installazione configura HTTPS, gli aggiornamenti e un backup esterno della directory multimediale insieme al database. È il backup, non il semplice fatto di usare il self-hosting, a proteggere le foto dalla perdita.
FAQ
Immich è gratuito?
Il server Immich è distribuito come software open source e può funzionare senza un abbonamento obbligatorio. Restano a pagamento il VPS, il dominio, lo spazio su disco e i backup.
Quanta RAM richiede Immich?
Il minimo ufficiale è 6 GB di RAM, mentre la quantità consigliata è 8 GB. Con 4 GB sarà necessario disattivare il machine learning.
È possibile installare Immich senza dominio?
Tecnicamente sì, ma per un accesso permanente dallo smartphone è preferibile usare un dominio e HTTPS. In questo modo si proteggono l'autenticazione e il trasferimento dei file.
Immich sostituisce un backup delle foto?
No. Copia separatamente la libreria multimediale e il database su un altro dispositivo o in un'altra posizione.
È possibile trasferire un archivio fotografico esistente?
Sì. I file possono essere caricati tramite l'interfaccia web o la CLI, oppure una directory può essere collegata come libreria esterna. Prima di un'importazione massiva, crea una copia dei dati originali.
