Indice Serie Homelab
Libertà digitale: creare un ecosistema di servizi personali senza dipendere dalle big tech.
- Homelab: Necessità o Capriccio?
- Homelab: Proxmox e Container LXC
- Homelab: Setup Immich
- Homelab: Setup Navidrome
- Homelab: Accesso Remoto Sicuro
- Homelab: Migrazione da iCloud a Immich
- Homelab: Setup AFFiNE
- Homelab: Strategia Backup KISS
- Homelab: Migrazione di Rete e Wireguard
- Homelab: UPS e Network UPS Tools
- Homelab: Da AFFiNE a Obsidian con Syncthing
Dal Container di Test al Deploy Reale Link to heading
Nel precedente articolo abbiamo configurato Proxmox, creato un container LXC di test e installato Docker. Ora è arrivato il momento di fare sul serio: creare il container dedicato per Immich e configurare lo storage esterno definitivo.
Configurazione Storage Esterno Link to heading
Nell’articolo precedente abbiamo accennato alla strategia di separare sistema e dati. Ora implementiamo concretamente questa separazione configurando il disco esterno hermes.
Setup del Disco Esterno Link to heading
Colleghiamo l’SSD esterno da 256GB al mini PC e procediamo con la configurazione completa:
# Dall'HOST PROXMOX - verificare dischi disponibili
lsblk
# Output atteso - il nuovo disco dovrebbe apparire come /dev/sda
# sda 8:0 0 238.5G 0 disk
# nvme0n1 259:0 0 238.5G 0 disk (disco sistema)
Formattazione e Preparazione Link to heading
# Dall'HOST PROXMOX
# Se il disco ha già dati, pulirlo
wipefs -a /dev/sda
# Creare partizione Linux
echo "n
p
1
w" | fdisk /dev/sda
# Formattare con ext4
mkfs.ext4 -F /dev/sda1
# Etichetta per riconoscimento
e2label /dev/sda1 hermes
Configurazione Storage Condiviso hermes Link to heading
Configuriamo il disco hermes come Directory Storage in Proxmox per condividerlo tra i container dell’homelab.
# Dall'HOST PROXMOX - non dal container!
# Creare directory di mount
mkdir -p /mnt/hermes
# Montare il disco
mount /dev/sda1 /mnt/hermes
# Verificare che sia montato correttamente
df -h /mnt/hermes
# Dovrebbe mostrare qualcosa come:
# /dev/sda1 222G xxx xxx x% /mnt/hermes
# NON: /dev/mapper/pve-root
Aggiungere Storage hermes a Proxmox Link to heading
Aggiungiamo il disco come Directory Storage in Proxmox:
Via Interfaccia Web Link to heading
- Datacenter → Storage → Add → Directory
- ID:
hermes - Directory:
/mnt/hermes - Content: Selezionare Container (VZDump backup files sarà disponibile automaticamente)
- Enable: ✓ Enabled

Rendere Mount Permanente Link to heading
# Dall'HOST PROXMOX
# Ottenere UUID del disco
UUID=$(blkid /dev/sda1 -s UUID -o value)
echo "UUID trovato: $UUID"
# Aggiungere al fstab per mount automatico al riavvio
echo "UUID=$UUID /mnt/hermes ext4 defaults 0 2" >> /etc/fstab
# Testare mount dal fstab
umount /mnt/hermes && mount -a
# Verificare che funzioni
df -h /mnt/hermes
Preparare Struttura Directory Link to heading
# Dall'HOST PROXMOX
# Creare directory per i servizi
mkdir -p /mnt/hermes/{immich,navidrome,shared}
# Creare sottodirectory per Immich
mkdir -p /mnt/hermes/immich/{upload,database,redis-data}
# Verificare struttura
ls -la /mnt/hermes/
# Output dovrebbe mostrare:
# drwxr-xr-x immich/
# drwxr-xr-x navidrome/
# drwxr-xr-x shared/
Mount Point Immich su hermes Link to heading
Aggiungere il mount point specifico per Immich al container, puntando alla sottodirectory immich dello storage condiviso:
Via Interfaccia Web Proxmox Link to heading
- Selezionare il container docker-immich
- Resources → Add → Mount Point
- Mount Point ID:
mp0(viene assegnato automaticamente) - Storage:
hermes - Disk size:
32 GB(dimensione iniziale, espandibile) - Path in Container:
/immich(dove sarà montato nel container) - Backup: ✓ (raccomandato per i dati)
- Enable: NOT Enabled

Setup Docker nel Container Immich Link to heading
Installazione Docker nel nuovo container dedicato:
# Entrare nel container dedicato
pct enter 102
# Setup Docker (stesso processo del container di test)
apt update && apt install -y curl
curl -fsSL https://get.docker.com | sudo sh
usermod -aG docker $USER
# Verificare installazione
docker --version
# Riavviare per applicare gruppo docker
exit
pct reboot 102
pct enter 102
Verifica Mount Point Link to heading
# Verificare che il mount point sia disponibile
df -h
ls -la /immich/
# Testare scrittura
touch /immich/test-write
ls -la /immich/test-write
rm /immich/test-write
# Creare directory necessarie per Immich
mkdir -p /immich/{upload,database,redis-data}
Setup Immich con Guida Ufficiale Link to heading
Seguiamo la guida ufficiale di Immich per Docker Compose, adattandola al nostro storage esterno.
Step 1 - Download File Necessari Link to heading
# Creare directory di lavoro
mkdir -p /root/immich-app
cd /root/immich-app
# Scaricare docker-compose.yml ufficiale
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
# Scaricare file .env di esempio
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
# Verificare che i file siano stati scaricati
ls -la
Step 2 - Configurazione File .env Link to heading
Modifichiamo il file .env per il nostro setup con storage esterno:
# Editare il file .env
nano .env
Configurazione .env personalizzata:
# Storage esterno per foto e backup
UPLOAD_LOCATION=/immich/upload
# Database su storage esterno
DB_DATA_LOCATION=/immich/database
# Timezone (decommentare e personalizzare)
TZ=Europe/Rome
# Versione Immich (pinned alla release)
IMMICH_VERSION=release
# Password database (cambiare con una sicura!)
DB_PASSWORD=immich_password_sicura_123
# Valori di default (non modificare)
DB_USERNAME=postgres
DB_DATABASE_NAME=immich
DB_PASSWORD con una password sicura usando solo caratteri A-Za-z0-9. Usare pwgen o generatori online per creare password casuali.Step 3 - Verifica Docker Compose Link to heading
Il file docker-compose.yml scaricato è quello ufficiale e aggiornato. Per il nostro setup, dovremmo verificare che punti ai path corretti:
# Verificare che il docker-compose.yml usi le variabili .env
cat docker-compose.yml | grep -A5 -B5 "UPLOAD_LOCATION\|DB_DATA_LOCATION"
.env per configurare i volumi. Non è necessario modificare manualmente il YAML.Configurazioni Avanzate Link to heading
Per personalizzazioni aggiuntive, consultare la documentazione delle variabili ambiente di Immich.
Configurazioni Comuni Link to heading
# Nel file .env, aggiungere configurazioni opzionali:
# Transcoding video (per SSD esterno)
# FFMPEG_TRANSCODE=all
# Machine Learning (riconoscimento facciale)
# MACHINE_LEARNING_ENABLED=true
# Log level per debug
# LOG_LEVEL=verbose
Step 4 - Preparazione Directory Storage Link to heading
# Nel container, verificare che lo storage esterno sia disponibile
df -h /immich/
# Dovrebbe mostrare ~47GB disponibili (il disco hermes)
# Se mostra pochi GB, verificare il mount point dall'host Proxmox
# Creare directory per Immich
mkdir -p /immich/{upload,database}
# Verificare spazio e permessi
ls -la /immich/
id # Verificare gruppo docker
Step 5 - Primo Avvio Link to heading
Seguendo la guida ufficiale, avviamo Immich:
# Dalla directory del progetto
cd /root/immich-app
# Avvio con Docker Compose (comando ufficiale)
docker compose up -d
# Verifica stato container
docker compose ps
# Controllo log per eventuali errori
docker compose logs immich-server

Step 6 - Health Check e Troubleshooting Link to heading
# Verificare che tutti i container siano healthy
docker compose ps
# Se ci sono errori di health check con Docker Engine < v25
# Commentare la riga start_interval nel docker-compose.yml
sed -i 's/start_interval/#start_interval/' docker-compose.yml
Accesso e Prima Configurazione Link to heading
Una volta avviato, Immich sarà accessibile su http://IP_CONTAINER:2283.
Setup iniziale:
- Creare account admin
- Configurare librerie foto
- Installare app mobile test connessione
- Test upload di alcune foto per verificare funzionamento
Prossimi Passi Link to heading
Con Immich operativo e le prime foto caricate, l’homelab inizia a prendere vita. Il primo servizio è online e funzionante, ma la strada è ancora lunga!
I prossimi articoli della serie copriranno:
- Backup automatici del container e dei dati
- Test distruggi container e ripristino dei backup
- Migrazione da iCloud Foto ad Immich
→ Continua con: Homelab: Setup Navidrome per Streaming Musicale Privato