Skip to main content

8.2 - Sauvegarder PostgreSQL

Immich crée automatiquement des dumps PostgreSQL dans :

UPLOAD_LOCATION/backups

La rétention et l'horaire se règlent dans :

Administration > Settings > Backup

Le réglage par défaut documenté est un dump quotidien à 02:00 avec conservation des 14 derniers dumps.

Déclencher un dump depuis Immich

Administration > Job Queues > Create job > Create Database Dump

Dump manuel Docker

Identifier le conteneur :

docker ps --format '{{.Names}} {{.Image}}' | grep -Ei 'immich.*postgres|postgres.*immich'

Créer un dump :

mkdir -p /srv/backups/immich

docker exec -t immich_postgres \
  pg_dump --clean --if-exists --dbname=immich --username=postgres \
  | gzip > /srv/backups/immich/immich-$(date +%F-%H%M).sql.gz

Vérifier :

gzip -t /srv/backups/immich/immich-AAAA-MM-JJ-HHMM.sql.gz
ls -lh /srv/backups/immich

TrueNAS

Découvrir le conteneur exact :

sudo docker ps --format '{{.Names}} {{.Image}}' | grep -Ei 'immich|postgres|vector'

Puis adapter :

sudo docker exec -t NOM_CONTENEUR_POSTGRES \
  pg_dump --clean --if-exists --dbname=immich --username=postgres \
  | gzip > /mnt/HDD_DATA_TRUENAS/IMMICH/data/backups/manuel-$(date +%F-%H%M).sql.gz

Ce que le dump ne contient pas

  • photos ;
  • vidéos ;
  • miniatures ;
  • fichiers externes ;
  • configuration .env ;
  • paramètres du reverse proxy.

Règles

  • ne pas utiliser une copie brute du dossier PostgreSQL comme seule sauvegarde ;
  • protéger le dump avec les mêmes exigences de confidentialité que les photos ;
  • copier le dump hors du serveur ;
  • tester gzip -t ;
  • tester une restauration ;
  • utiliser une version compatible.

Le processus de restauration a changé avec Immich v2.5.0. Pour un ancien dump, consulter la documentation correspondant à la version de création.

Référence : https://docs.immich.app/administration/backup-and-restore/