Gérer ses photos avec Immich en auto-hébergé

Gérer ses photos avec Immich en auto-hébergé

·5 min de lecture·Mis à jour le 24 février 2026

Pourquoi auto-héberger ses photos

Les photos de famille sont probablement les données les plus précieuses qu'on possède, et pourtant elles sont confiées à Google Photos ou iCloud sans réfléchir. Le problème : l'espace gratuit peut être réduit du jour au lendemain, les photos sont compressées, et elles peuvent servir à entraîner des modèles d'IA.

En auto-hébergeant sur le NAS, on récupère la propriété de ses données : aucune limite de stockage cloud, partage familial sans tiers, contrôle total.

Immich : le Google Photos open-source

Immich reproduit l'essence de Google Photos : backup auto depuis le téléphone, reconnaissance faciale, recherche intelligente, albums partagés, timeline fluide. Le projet est très actif.

Ce qui le distingue de Photoprism ou LibrePhotos, ce sont les apps mobiles : iOS et Android font du backup automatique en arrière-plan comme Google Photos. C'est ce qui rend la bascule familiale possible, avec une expérience quasi identique et donc zéro friction.

Architecture et déploiement

Immich se compose de plusieurs services — le serveur principal, PostgreSQL et un service ML pour la reconnaissance faciale et la recherche sémantique — sur un réseau Docker isolé photos_net.

# docker-compose.yml - Immich
services:
  immich-server:
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    container_name: immich-server
    environment:
      - DB_HOSTNAME=immich-postgres
      - DB_USERNAME=immich
      - DB_PASSWORD=${DB_PASSWORD}
      - DB_DATABASE_NAME=immich
      - IMMICH_MACHINE_LEARNING_URL=http://immich-ml:3003
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/data/photos/external:/usr/src/app/external
      - /etc/localtime:/etc/localtime:ro
    networks:
      - photos_net
    depends_on:
      - immich-postgres
      - immich-ml
    restart: unless-stopped

  immich-ml:
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    container_name: immich-ml
    volumes:
      - /mnt/data/apps/photos/ml-cache:/cache
    networks:
      - photos_net
    restart: unless-stopped

  immich-postgres:
    image: docker.io/tensorchord/pgvecto-rs:pg16-v0.2.0
    container_name: immich-postgres
    environment:
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_USER=immich
      - POSTGRES_DB=immich
      - POSTGRES_INITDB_ARGS='--data-checksums'
    volumes:
      - /mnt/data/apps/photos/postgres:/var/lib/postgresql/data
    networks:
      - photos_net
    restart: unless-stopped

networks:
  photos_net:
    name: photos_net

Le .env contient les variables sensibles :

# .env - Immich configuration
IMMICH_VERSION=release
DB_PASSWORD=un_mot_de_passe_solide_ici
UPLOAD_LOCATION=/mnt/data/photos/upload

Interface web sur le port 2283, servie en production via Caddy avec TLS automatique.

Stockage et bibliothèques externes

/mnt/data/
├── apps/photos/
│   ├── postgres/        # Base de données PostgreSQL
│   └── ml-cache/        # Cache des modèles ML
└── photos/
    ├── upload/          # Photos uploadées via l'app
    └── external/        # Bibliothèques importées

Les bibliothèques externes sont la feature clé pour une migration. Avec 50 000 photos déjà organisées en dossiers (Famille/Année/Événement) sur un ancien Synology, tout re-uploader via l'app mobile n'est pas envisageable. Il suffit de monter le dossier dans le container et de déclarer une external library.

Immich scanne, indexe, extrait les metadata EXIF, lance la reconnaissance faciale et le tagging. Les photos apparaissent dans la timeline comme si elles avaient été uploadées nativement, et les fichiers originaux restent à leur place — zéro duplication.

Les fonctionnalités IA

  • Reconnaissance faciale : les visages sont détectés et groupés automatiquement. Nommer quelqu'un une fois suffit à retrouver toutes ses photos.
  • Recherche sémantique (CLIP) : requêtes en langage naturel. « Plage coucher de soleil » retourne les bonnes photos même sans tags, le modèle CLIP comprenant le contenu visuel.
  • Détection d'objets : tagging automatique du contenu (voiture, chien, montagne).

Sur un Intel N95 sans GPU, le ML tourne sur CPU : comptez 2-3 secondes par photo pour tous les modèles combinés, donc plusieurs jours de traitement en arrière-plan pour 50 000 photos. C'est un coût one-shot — ensuite, seules les nouvelles photos sont traitées, quasi instantanément.

Le cache ML dans /mnt/data/apps/photos/ml-cache évite de re-télécharger 2 Go de modèles à chaque redémarrage du container.

App mobile, SSO et backup

L'app Immich (iOS et Android) fait du backup automatique en arrière-plan sur Wi-Fi ou données mobiles, avec une timeline identique, le partage d'albums et les mêmes capacités de recherche IA que le web. La configuration se limite à l'URL du serveur, au login OIDC et à l'activation du backup ; chaque utilisateur a son dossier dans /mnt/data/photos/upload.

Immich supporte nativement OIDC : avec Authelia comme provider, chaque membre de la famille a son compte, son espace photos et ses albums, le partage se faisant via les albums partagés.

Côté sauvegarde, les photos sont sur un RAID Btrfs — première couche de protection, mais un RAID n'est pas un backup. S'y ajoutent un dump PostgreSQL quotidien via cron (pg_dump, stocké chiffré) et des snapshots Btrfs des photos avec rétention (7 quotidiens, 4 hebdomadaires). Les photos étant immuables par nature, le snapshot suffit ; PostgreSQL, lui, demande un dump cohérent.

Bilan

Immich offre une expérience assez proche de Google Photos pour permettre une transition familiale sans friction, avec un contrôle total sur les données. Les bibliothèques externes rendent la migration depuis un Synology indolore, et les fonctionnalités IA fonctionnent remarquablement bien même sur un CPU modeste.

PartagerLinkedInXBluesky

Articles similaires