Fransys

Blog technique — Architecture, Cloud & DevOps

BlogServicesContactÀ propos

Suivez-moi

githubGitHublinkedinLinkedinmailMail

© 2026 Fransys • Fransys

Fransys

Catégories

  • Tous les articles
  • Tags
  • productivite10
  • nas10
  • ia8
  • securite7
  • linux6
  • claude-code6
  • auto-hebergement6
  • neovim5
  • docker5
  • editeur4
  • mcp3
  • vpn3
  • reseau3
  • lua2
  • terminal2
nasdockerauto-hebergementphotos

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

Publié le
24 février 2026·5 min de lecture
Avatar François GUERLEZFrançois GUERLEZ

Pourquoi auto-héberger ses photos ?

C'est la donnée qu'on protège le moins bien. Les photos de famille, c'est probablement le truc le plus précieux qu'on possède digitalement. Et pourtant, on les confie à Google Photos ou iCloud sans réfléchir. Le problème ? T'es otage. Google peut réduire l'espace gratuit du jour au lendemain (spoiler : il l'a fait). Il peut compresser tes photos (spoiler : il le fait). Pire, il peut utiliser tes photos pour entraîner des modèles d'IA. Les photos de tes enfants. Tu trouves pas ça chelou, toi ?

En auto-hébergeant sur le NAS, tu récupères la propriété de tes données. Zéro limite de stockage cloud. Partage avec la famille sans passer par un tiers. C'est toi qui contrôles tout.

Immich : le Google Photos qu'on voulait

Immich, c'est une appli open-source qui 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 - à chaque release c'est du nouveau, du vrai.

Ce qui l'écarte de ses concurrents (Photoprism, LibrePhotos)? Les apps mobiles. iOS et Android qui font du backup automatique en arrière-plan comme Google Photos. Honnêtement, c'est ce qui a convaincu ma famille de basculer : l'expérience est quasi identique, donc zéro friction.

Architecture et déploiement

Immich c'est plusieurs services : le serveur principal, PostgreSQL, et un service ML pour la reconnaissance faciale et la recherche sémantique. Tout ça 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 fichier .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. En prod, ça passe par Caddy avec TLS auto.

Stockage et bibliothèques externes

Orga des répertoires

/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

Migration depuis un ancien NAS

La feature qui m'a sauvé la vie? Les bibliothèques externes. Quand j'ai migré depuis mon vieux Synology, j'avais 50 000 photos organizées en dossiers (Famille/Année/Événement). Re-uploader tout via l'app mobile? Galère. Au lieu de ça, j'ai juste monté le dossier dans le container et déclaré une external library dans Immich.

Immich scanne tout, indexe, extrait les metadata EXIF, lance la reconnaissance faciale et le tagging. Les photos apparaissent dans la timeline comme si j'avais tout uploadé nativement. L'avantage : les fichiers originaux restent à leur place, zéro duplication.

Les fonctionnalités IA (c'est dingue)

C'est là qu'Immich excelle vraiment.

  • Reconnaissance faciale : Immich détecte et groupe les visages auto. Nomme quelqu'un une fois, toutes ses photos sont retrouvées. Tape "Jules au ski" - boum, ça sort.
  • Recherche sémantique (CLIP) : recherche en langage naturel. "Plage coucher de soleil" retourne les photos, même sans tags. Le modèle CLIP comprend le contenu visuel.
  • Détection d'objets : les photos sont automatiquement taguées avec ce qu'elles contiennent (voiture, chien, montagne, etc.).

Perf sur Intel N95

Le ML tourne sur CPU, pas de GPU. Sur le N95 (4 cores), c'est lent au démarrage - comptez 2-3 secondes par photo pour tous les modèles combinés. 50 000 photos? Plusieurs jours de traitement d'arrière-plan. Mais c'est un travail one-shot. Après? Seules les nouvelles photos sont traitées, quasi instantané.

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. Premier lancement = long. Après ça? Démarrage rapide.

App mobile et backup automatique

L'app Immich (iOS et Android) remplace Google Photos sans regrets :

  • Backup auto en arrière-plan, Wi-Fi ou données mobiles
  • Timeline identique
  • Partage d'albums
  • Recherche avec les mêmes capacités IA que le web

Config simple : URL du serveur, login OIDC (Authelia), activer le backup. Photos vont dans /mnt/data/photos/upload, chaque user a son dossier.

SSO et authentification

Immich supporte nativement OIDC. Sur mon install, Authelia est le provider. Chaque membre de la famille a son compte, son espace photos, ses albums. Partage entre users via les albums partagés - exactement comme Google Photos.

Stratégie de backup

Photos sur un RAID Btrfs. Première couche de protection. Mais le RAID c'est pas un backup.

  • Dump PostgreSQL quotidien : cron exécute pg_dump, stocke le dump chiffré
  • Snapshots Btrfs des photos : snapshots auto avec rétention (7 jours de quotidiens, 4 hebdomadaires)

Photos = immuables par nature. Snapshot Btrfs suffit. PostgreSQL? Faut un dump cohérent.

Résultat final

Immich a changé comment ma famille gère les photos. Expérience assez proche de Google Photos pour une transition sans friction. Control total sur les données. Bibliothèques externes = migration indolore depuis Synology. IA features (reconnaissance faciale, recherche) marchent remarquablement bien même sur du CPU modeste. C'est l'appli auto-hébergée qui apporte le plus de valeur au quotidien, franchement.

Article précédent

← Optimiser sa configuration Claude Code pour le développement

Article suivant

Status line Claude Code : afficher sa consommation API en temps réel→
← Retour au blog

Sommaire

  • Pourquoi auto-héberger ses photos ?
  • Immich : le Google Photos qu'on voulait
  • Architecture et déploiement
  • Stockage et bibliothèques externes
  • Orga des répertoires
  • Migration depuis un ancien NAS
  • Les fonctionnalités IA (c'est dingue)
  • Perf sur Intel N95
  • App mobile et backup automatique
  • SSO et authentification
  • Stratégie de backup
  • Résultat final