
Indice Serie Homelab
Libertà digitale: creare un ecosistema di servizi personali senza dipendere dalle big tech.
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