Immich : L'Alternative Auto-Hébergée à Google Photos en 2026

Immich, l'alternative auto-hébergée à Google Photos. Backup automatique, reconnaissance faciale, recherche CLIP, transcodage hardware et migration Google Takeout.

Introduction : Reprendre le Contrôle de Vos Photos et Vidéos

En 2026, la question de la souveraineté numérique n'a jamais été aussi pressante. Google Photos, iCloud, Amazon Photos — ces services centralisés stockent des milliards de souvenirs personnels sur des serveurs que vous ne contrôlez pas. Entre les changements de politique de confidentialité, la réduction des quotas gratuits et l'exploitation des données pour entraîner des modèles d'intelligence artificielle, de plus en plus d'utilisateurs cherchent une alternative crédible.

Immich s'est imposé comme la réponse open-source la plus aboutie à ce besoin. Lancé en 2022 par Alex Tran, ce projet a connu une croissance fulgurante pour devenir, en 2026, une plateforme mature capable de rivaliser fonctionnellement avec Google Photos — le tout hébergé sur votre propre infrastructure. Avec plus de 55 000 étoiles sur GitHub, une communauté extrêmement active et un rythme de développement soutenu, Immich représente aujourd'hui le gold standard du self-hosting photo.

Architecture en un coup d'œil

Diagramme - Immich : L'Alternative Auto-Hébergée à Google Photos en 2026

Dans cet article, nous allons explorer en profondeur ce qu'Immich propose, comment l'installer et le configurer, comment migrer depuis Google Photos, et comment tirer le meilleur parti de ses fonctionnalités avancées comme la reconnaissance faciale, la recherche sémantique par IA, le transcodage vidéo matériel et bien plus encore.

Qu'est-ce qu'Immich ?

Immich est une solution de gestion et de sauvegarde de photos et vidéos auto-hébergée, haute performance, conçue pour offrir une expérience utilisateur comparable à Google Photos. Le projet est entièrement open-source, distribué sous licence AGPL-3.0, et repose sur une architecture moderne composée de plusieurs microservices.

Les Caractéristiques Clés

  • Backup automatique depuis les applications mobiles iOS et Android
  • Interface web réactive et moderne construite avec SvelteKit
  • Reconnaissance faciale propulsée par le machine learning
  • Recherche sémantique grâce au modèle CLIP (recherche par description textuelle)
  • Timeline et cartes avec visualisation géographique des photos
  • Albums partagés avec gestion fine des permissions
  • Support des formats RAW (CR2, NEF, ARW, DNG, etc.)
  • Transcodage vidéo matériel (VAAPI, NVENC, QSV)
  • Bibliothèques externes pour indexer des dossiers existants
  • OAuth/OIDC pour l'authentification centralisée
  • API REST complète et documentation OpenAPI
  • Support du stockage S3 en plus du stockage local

Architecture Technique

Immich repose sur une architecture bien pensée, composée de plusieurs services :

  • immich-server : Le serveur principal (API REST, NestJS/TypeScript)
  • immich-machine-learning : Service dédié au ML (Python, ONNX Runtime)
  • PostgreSQL : Base de données principale avec l'extension pgvecto.rs pour la recherche vectorielle
  • Redis : File d'attente pour les jobs asynchrones (thumbnails, transcodage, ML)

Cette séparation des responsabilités permet une mise à l'échelle flexible : vous pouvez par exemple déporter le service de machine learning sur une machine avec GPU dédié tout en gardant le serveur principal sur un NAS modeste.

Installation avec Docker Compose

L'installation d'Immich se fait principalement via Docker Compose. C'est la méthode recommandée par l'équipe et celle qui garantit la meilleure reproductibilité. Voici les prérequis et la procédure complète.

Prérequis

  • Un serveur Linux (Ubuntu 22.04+, Debian 12+, ou toute distribution supportant Docker)
  • Docker Engine 20.10+ et Docker Compose v2
  • Au minimum 4 Go de RAM (8 Go recommandés pour le ML)
  • Espace disque suffisant pour vos photos et vidéos

Préparation du Système

# Installer Docker si ce n'est pas déjà fait
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# Créer le répertoire pour Immich
sudo mkdir -p /opt/immich
cd /opt/immich

# Télécharger les fichiers de configuration officiels
wget -O docker-compose.yml https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
wget -O .env https://github.com/immich-app/immich/releases/latest/download/example.env
wget -O hwaccel.ml.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.ml.yml
wget -O hwaccel.transcoding.yml https://github.com/immich-app/immich/releases/latest/download/hwaccel.transcoding.yml

Le Fichier docker-compose.yml Complet

Voici un fichier docker-compose.yml complet et commenté, basé sur la configuration officielle avec des ajouts pour la production :

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # Le serveur gère à la fois l'API et les microservices (jobs)
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      # Si vous avez une bibliothèque externe :
      # - /chemin/vers/photos/existantes:/mnt/photos-externes:ro
    env_file:
      - .env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "curl -f http://localhost:2283/api/server/ping || exit 1"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 60s

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    # Pour le GPU NVIDIA, décommentez :
    # extends:
    #   file: hwaccel.ml.yml
    #   service: cuda
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      test: ["CMD-SHELL", "python3 -c 'import requests; requests.get(\"http://localhost:3003/ping\")'"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 90s

  redis:
    container_name: immich_redis
    image: docker.io/redis:7.4-alpine
    restart: always
    healthcheck:
      test: redis-cli ping || exit 1
      interval: 10s
      timeout: 5s
      retries: 5
    volumes:
      - redis-data:/data

  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg16-v0.3.0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
    restart: always
    healthcheck:
      test: pg_isready --dbname='${DB_DATABASE_NAME}' --username='${DB_USERNAME}' || exit 1
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      [
        "postgres",
        "-c", "shared_preload_libraries=vectors.so",
        "-c", "search_path=\"$$user\", public, vectors",
        "-c", "logging_collector=on",
        "-c", "max_wal_size=2GB",
        "-c", "shared_buffers=512MB",
        "-c", "wal_compression=on",
      ]

volumes:
  model-cache:
  redis-data:

Configuration du Fichier .env

Le fichier .env contient toutes les variables de configuration. Voici les paramètres essentiels à personnaliser :

# Version d'Immich (laisser 'release' pour la dernière stable)
IMMICH_VERSION=release

# Emplacement des uploads (photos et vidéos)
UPLOAD_LOCATION=/mnt/data/immich/upload

# Configuration PostgreSQL
DB_DATA_LOCATION=/mnt/data/immich/postgres
DB_PASSWORD=VotreMotDePasseTresSecurise2026!
DB_USERNAME=immich
DB_DATABASE_NAME=immich

# Clé secrète pour les JWT (générer avec : openssl rand -base64 128)
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003

Lancement

# Démarrer tous les services
cd /opt/immich
docker compose up -d

# Vérifier que tous les conteneurs sont healthy
docker compose ps

# Suivre les logs en temps réel
docker compose logs -f immich-server

Après le démarrage, Immich est accessible sur http://votre-serveur:2283. Le premier utilisateur créé sera automatiquement administrateur.

Configuration Avancée

PostgreSQL et pgvecto.rs

Immich utilise PostgreSQL avec l'extension pgvecto.rs pour stocker et rechercher les embeddings vectoriels générés par les modèles de machine learning. Cette extension permet la recherche par similarité vectorielle, essentielle pour la recherche sémantique et la reconnaissance faciale.

Quelques optimisations PostgreSQL recommandées pour les grosses bibliothèques (plus de 100 000 photos) :

# Modifier les paramètres PostgreSQL dans le docker-compose.yml
command:
  [
    "postgres",
    "-c", "shared_preload_libraries=vectors.so",
    "-c", "search_path=\"$$user\", public, vectors",
    "-c", "shared_buffers=1GB",
    "-c", "effective_cache_size=3GB",
    "-c", "maintenance_work_mem=512MB",
    "-c", "work_mem=16MB",
    "-c", "max_wal_size=2GB",
    "-c", "checkpoint_completion_target=0.9",
    "-c", "random_page_cost=1.1",
    "-c", "effective_io_concurrency=200",
    "-c", "wal_compression=on",
  ]

Redis : File d'Attente des Jobs

Redis gère la file d'attente des tâches asynchrones d'Immich : génération de thumbnails, extraction de métadonnées EXIF, exécution des modèles ML, transcodage vidéo, etc. Pour les installations avec beaucoup de médias, vous pouvez ajuster la configuration via l'interface d'administration d'Immich (section « Job Settings ») pour contrôler le nombre de workers par type de job.

Machine Learning : Modèles et Accélération

Le service de machine learning d'Immich utilise ONNX Runtime pour exécuter les modèles. Plusieurs modèles sont disponibles et configurables depuis l'interface d'administration :

  • CLIP : Pour la recherche sémantique (ViT-B-16, ViT-B-32, ViT-L-14, XLM-Roberta-Large-ViT-H-14, etc.)
  • Reconnaissance faciale : Buffalo_l (par défaut), Buffalo_s (plus léger)

Pour accélérer l'inférence ML avec un GPU NVIDIA, modifiez le docker-compose.yml :

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}-cuda
    extends:
      file: hwaccel.ml.yml
      service: cuda
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

Immich supporte également l'accélération via OpenVINO (Intel) et ARM NN (processeurs ARM) pour le machine learning.

Applications Mobiles et Interface Web

Applications iOS et Android

Les applications mobiles Immich sont disponibles sur l'App Store et le Google Play Store. Elles offrent une expérience quasi identique à Google Photos :

  • Backup automatique en arrière-plan (photos et vidéos)
  • Backup sélectif par album
  • Connexion Wi-Fi uniquement ou données mobiles
  • Navigation dans la timeline avec défilement rapide
  • Visualisation des albums partagés
  • Recherche (texte, visages, carte)
  • Upload manuel de fichiers
  • Partage via lien

La configuration est simple : entrez l'URL de votre serveur Immich, vos identifiants, puis activez le backup automatique. L'application détecte les nouvelles photos et les envoie automatiquement en arrière-plan.

# Si votre serveur est derrière un reverse proxy, 
# assurez-vous que l'URL externe est accessible :
# https://photos.votredomaine.fr

# Exemple de configuration Nginx pour reverse proxy
server {
    listen 443 ssl http2;
    server_name photos.votredomaine.fr;

    client_max_body_size 50000M;  # Important pour les gros uploads vidéo

    ssl_certificate /etc/letsencrypt/live/photos.votredomaine.fr/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/photos.votredomaine.fr/privkey.pem;

    location / {
        proxy_pass http://localhost:2283;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        # Timeouts pour les gros uploads
        proxy_read_timeout 600s;
        proxy_send_timeout 600s;
        send_timeout 600s;
    }
}

Interface Web

L'interface web d'Immich, construite avec SvelteKit, est réactive et riche en fonctionnalités. Elle comprend :

  • Timeline : Vue chronologique avec défilement rapide et regroupement par date
  • Explorer : Navigation par personnes, lieux, et catégories détectées par le ML
  • Carte : Visualisation géographique basée sur les données GPS EXIF
  • Albums : Création, partage, et organisation
  • Recherche : Recherche textuelle sémantique, par date, par localisation, par type de média
  • Administration : Gestion des utilisateurs, quotas, jobs, et configuration système
  • Trash : Corbeille avec suppression automatique après 30 jours

Reconnaissance Faciale et Recherche Intelligente

Reconnaissance Faciale

La reconnaissance faciale d'Immich repose sur le modèle InsightFace (Buffalo). Le processus se déroule en plusieurs étapes :

  1. Détection : Identification des visages dans chaque photo
  2. Embedding : Génération d'un vecteur numérique pour chaque visage détecté
  3. Clustering : Regroupement automatique des visages similaires
  4. Nommage : L'utilisateur peut nommer chaque personne détectée

Une fois les personnes nommées, vous pouvez les fusionner (si le système a créé plusieurs groupes pour la même personne), les masquer, ou les rechercher. La précision est impressionnante, même avec des photos de qualité variable.

Recherche Sémantique avec CLIP

La fonctionnalité la plus impressionnante d'Immich est sans doute la recherche sémantique, propulsée par le modèle CLIP (Contrastive Language-Image Pre-Training) développé par OpenAI. Ce modèle permet de rechercher des photos en utilisant du langage naturel.

Exemples de recherches possibles :

  • « coucher de soleil sur la plage »
  • « chat noir sur un canapé »
  • « enfants jouant dans la neige »
  • « gâteau d'anniversaire avec des bougies »
  • « voiture rouge garée devant une maison »

Le modèle comprend les concepts visuels et peut retrouver des photos même si aucun tag n'a été manuellement ajouté. Immich propose plusieurs variantes de CLIP, des plus légères aux plus puissantes :

Modèle CLIP RAM Requise Précision Vitesse
ViT-B-32 ~600 Mo Bonne Rapide
ViT-B-16 (défaut) ~800 Mo Très bonne Moyenne
ViT-L-14 ~1.5 Go Excellente Lente
XLM-Roberta-Large-ViT-H-14 ~3 Go Maximale (multilingue) Très lente

Le modèle XLM-Roberta-Large-ViT-H-14 est particulièrement intéressant car il supporte la recherche en français et dans de nombreuses autres langues.

Albums Partagés et Liens de Partage

Immich offre plusieurs mécanismes de partage :

  • Albums partagés : Invitez d'autres utilisateurs Immich à voir (et optionnellement contribuer à) un album
  • Liens de partage : Générez des URLs publiques avec mot de passe optionnel et date d'expiration
  • Partage de bibliothèque : Partagez l'intégralité de votre bibliothèque avec un autre utilisateur (Partner Sharing)

Transcodage Vidéo Hardware

Le transcodage vidéo est l'une des tâches les plus gourmandes en ressources. Immich supporte l'accélération matérielle via plusieurs technologies pour réduire drastiquement les temps de traitement :

VAAPI (Intel/AMD)

Pour les processeurs Intel avec Quick Sync ou les GPU AMD :

  immich-server:
    extends:
      file: hwaccel.transcoding.yml
      service: vaapi
    devices:
      - /dev/dri:/dev/dri

NVENC (NVIDIA)

Pour les GPU NVIDIA :

  immich-server:
    extends:
      file: hwaccel.transcoding.yml
      service: nvenc
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities:
                - gpu
                - video

QSV (Intel Quick Sync Video)

Pour les processeurs Intel récents :

  immich-server:
    extends:
      file: hwaccel.transcoding.yml
      service: qsv
    devices:
      - /dev/dri:/dev/dri

La configuration du transcodage se fait ensuite depuis l'interface d'administration d'Immich. Vous pouvez définir le codec cible (H.264, H.265/HEVC, AV1), la résolution maximale, le bitrate, et la politique de transcodage (tous les fichiers, uniquement les formats non supportés par le navigateur, etc.).

Bibliothèques Externes (External Libraries)

Une fonctionnalité essentielle pour les utilisateurs ayant déjà une collection de photos organisée : les bibliothèques externes. Plutôt que de ré-uploader toutes vos photos, Immich peut indexer des dossiers existants sur votre système de fichiers.

# Dans docker-compose.yml, montez vos dossiers existants
  immich-server:
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /mnt/nas/photos-famille:/mnt/photos-famille:ro
      - /mnt/nas/photos-vacances:/mnt/photos-vacances:ro

Ensuite, dans l'interface d'administration :

  1. Allez dans Administration → Bibliothèques externes
  2. Créez une nouvelle bibliothèque pour l'utilisateur souhaité
  3. Ajoutez les chemins d'import (/mnt/photos-famille, etc.)
  4. Configurez les patterns d'exclusion si nécessaire (par exemple **/Thumbs.db)
  5. Lancez le scan

Immich indexera les fichiers sans les déplacer, générera les thumbnails et lancera le pipeline ML. Le mode lecture seule (:ro) est recommandé pour éviter toute modification accidentelle de vos fichiers originaux.

Authentification OAuth/OIDC

Pour les environnements multi-utilisateurs ou les entreprises, Immich supporte l'authentification via OAuth 2.0 / OpenID Connect. Cela permet l'intégration avec Authentik, Keycloak, Authelia, Google, ou tout autre fournisseur OIDC.

La configuration se fait depuis l'interface d'administration :

  • Issuer URL : L'URL du fournisseur OIDC
  • Client ID et Client Secret : Les identifiants de l'application
  • Scope : Typiquement openid profile email
  • Auto Register : Créer automatiquement les comptes utilisateurs
  • Button Text : Le texte du bouton de connexion
# Exemple de configuration Authentik pour Immich
# Dans Authentik, créez un Provider OAuth2/OIDC avec :
# - Client Type: Confidential
# - Redirect URI: https://photos.votredomaine.fr/auth/login
# - Scopes: openid, profile, email

# Dans Immich (Administration → OAuth) :
# Issuer URL: https://auth.votredomaine.fr/application/o/immich/
# Client ID: votre-client-id
# Client Secret: votre-client-secret
# Scope: openid profile email
# Auto Register: Activé
# Storage Quota (Auto Register): 0 (illimité) ou une valeur en Go

Options de Stockage : Local et S3

Stockage Local

Par défaut, Immich stocke les fichiers sur le système de fichiers local, dans le répertoire défini par UPLOAD_LOCATION. La structure est organisée par utilisateur et par date. C'est l'option la plus simple et la plus performante pour les petites à moyennes installations.

Stockage S3 Compatible

Depuis la version 1.106, Immich supporte le stockage sur des buckets compatibles S3 (AWS S3, MinIO, Backblaze B2, Wasabi, Cloudflare R2, etc.). Cela ouvre la possibilité de :

  • Stocker les photos sur un stockage objet moins coûteux
  • Bénéficier de la réplication et de la durabilité du S3
  • Séparer le stockage du compute

La configuration se fait dans le fichier .env ou directement depuis l'interface d'administration :

# Configuration S3 dans .env
IMMICH_S3_ENABLED=true
IMMICH_S3_BUCKET=immich-photos
IMMICH_S3_ENDPOINT=https://s3.eu-west-3.amazonaws.com
IMMICH_S3_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE
IMMICH_S3_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
IMMICH_S3_REGION=eu-west-3

Migration depuis Google Photos (Google Takeout)

La migration depuis Google Photos est l'un des cas d'usage les plus courants. Voici la procédure complète et éprouvée.

Étape 1 : Exporter depuis Google Takeout

  1. Rendez-vous sur takeout.google.com
  2. Sélectionnez uniquement Google Photos
  3. Choisissez le format d'export : .zip, taille 50 Go
  4. Lancez l'export et attendez la notification par email
  5. Téléchargez toutes les archives

Étape 2 : Préparer les Fichiers avec immich-go

L'outil immich-go (CLI officiel de la communauté) est le meilleur moyen d'importer proprement les données Google Takeout. Il gère les problèmes de métadonnées, les fichiers JSON compagnons, et les doublons.

# Installer immich-go
# Télécharger la dernière release depuis GitHub
wget https://github.com/simulot/immich-go/releases/latest/download/immich-go_Linux_x86_64.tar.gz
tar xzf immich-go_Linux_x86_64.tar.gz
sudo mv immich-go /usr/local/bin/

# Extraire les archives Google Takeout
mkdir -p /tmp/google-takeout
cd /tmp/google-takeout
for f in ~/Downloads/takeout-*.zip; do unzip -o "$f" -d .; done

# Importer dans Immich avec immich-go
immich-go -server=https://photos.votredomaine.fr \
  -api-key=VOTRE_CLE_API \
  upload from-google-photos \
  /tmp/google-takeout/Takeout/Google\ Photos

Étape 3 : Vérification et Nettoyage

# Vérifier le nombre de fichiers importés via l'API
curl -s -H "x-api-key: VOTRE_CLE_API" \
  https://photos.votredomaine.fr/api/server/statistics | jq .

# immich-go génère un rapport des fichiers ignorés ou en erreur
# Consultez le fichier de log pour identifier les problèmes éventuels

L'outil immich-go gère automatiquement :

  • La récupération des dates depuis les fichiers JSON de métadonnées Google
  • La correspondance entre photos et leurs métadonnées (même quand les noms sont tronqués)
  • La détection et l'exclusion des doublons
  • La gestion des Live Photos (association photo + vidéo)
  • La conservation des albums Google Photos

Performance et Hardware Recommandé

Configurations Types

Scénario CPU RAM Stockage Photos/Vidéos
Usage personnel 4 cores (Intel N100) 8 Go 1 To SSD + HDD Jusqu'à 50k
Famille 6 cores (i5/Ryzen 5) 16 Go 2-4 To 50k-200k
Photographe 8+ cores + GPU 32 Go 10+ To RAID 200k-1M+
Petite entreprise 16+ cores + GPU 64 Go NAS dédié 1M+

Conseils de Performance

  • SSD pour la base de données : PostgreSQL bénéficie énormément d'un SSD. Même si vos photos sont sur un HDD, placez le répertoire DB_DATA_LOCATION sur un SSD.
  • SSD pour les thumbnails : Le dossier upload/thumbs est constamment accédé. Un SSD améliore significativement la réactivité de l'interface.
  • GPU pour le ML : Un GPU NVIDIA (même d'entrée de gamme comme une GTX 1650) accélère drastiquement l'indexation ML initiale, passant de plusieurs jours à quelques heures pour une grande bibliothèque.
  • RAM suffisante : Les modèles CLIP et de reconnaissance faciale consomment de la RAM. 8 Go est un minimum confortable ; 16 Go sont préférables si vous utilisez des modèles CLIP plus grands.

Comparaison avec les Alternatives

Fonctionnalité Immich PhotoPrism LibrePhotos Nextcloud Photos
App mobile native Oui (iOS + Android) PWA uniquement Non Oui
Backup auto mobile Oui (arrière-plan) Non Non Oui (limité)
Recherche sémantique CLIP Oui (multilingue) Oui Oui Oui (via Recognize)
Reconnaissance faciale Oui (InsightFace) Oui (TensorFlow) Oui Oui (Recognize)
Support RAW Oui (complet) Oui Limité Limité
Transcodage HW VAAPI, NVENC, QSV FFmpeg Non Non
Stockage S3 Oui Non Non Oui (objectstore)
OAuth/OIDC Oui Non Non Oui
Multi-utilisateurs Oui (avec quotas) Limité Oui Oui
Vitesse de l'interface Excellente Bonne Correcte Moyenne
Rythme de développement Très élevé Modéré Lent Modéré
Licence AGPL-3.0 AGPL-3.0* MIT AGPL-3.0

* PhotoPrism propose une édition « Essentials » gratuite et une édition « Plus » payante avec des fonctionnalités supplémentaires.

Immich se distingue particulièrement par la qualité de ses applications mobiles, la rapidité de son interface web, et son rythme de développement effréné. C'est la solution qui se rapproche le plus de l'expérience Google Photos.

PhotoPrism est une alternative plus mature et stable, avec un focus sur l'indexation de bibliothèques existantes plutôt que le backup mobile.

LibrePhotos était prometteur mais son développement a considérablement ralenti, ce qui en fait un choix risqué pour de nouvelles installations.

Nextcloud Photos est intéressant si vous utilisez déjà Nextcloud, mais l'expérience est nettement en dessous des solutions dédiées, tant en termes de performance que de fonctionnalités ML.

Roadmap et Maturité du Projet

Immich a longtemps affiché un avertissement « ne pas utiliser comme seule solution de backup » sur sa page d'accueil. Cet avertissement, bien que prudent, reflétait l'évolution rapide du schéma de base de données entre les versions. En 2025-2026, le projet a atteint un niveau de maturité considérable :

  • API stable : L'API v1 est désormais considérée stable avec un engagement de non-régression
  • Migrations automatiques : Les mises à jour de schéma DB sont gérées automatiquement
  • Tests extensifs : Suite de tests automatisés couvrant les scénarios critiques
  • Communauté massive : Plus de 55 000 étoiles GitHub, des centaines de contributeurs
  • Financement : L'entreprise FUTO (fondée par Eron Wolf) finance le développement à temps plein d'Alex Tran et de plusieurs développeurs

Fonctionnalités en Développement ou Récentes

  • Tags manuels et automatiques : Système complet de tagging
  • Édition de base : Rotation, recadrage, filtres basiques directement dans l'interface
  • Amélioration continue du ML : Modèles plus précis et plus rapides
  • Meilleure gestion des doublons : Détection et fusion intelligente
  • Notifications : Alertes pour les albums partagés et les souvenirs
  • Souvenirs : « Il y a X ans » comme Google Photos

Sauvegarde et Maintenance

Sauvegarde de la Base de Données

#!/bin/bash
# Script de backup PostgreSQL pour Immich
BACKUP_DIR="/mnt/backup/immich"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p "$BACKUP_DIR"

# Dump de la base de données
docker exec immich_postgres pg_dumpall -U immich | gzip > "$BACKUP_DIR/immich_db_$DATE.sql.gz"

# Rotation des backups (garder les 30 derniers)
ls -t "$BACKUP_DIR"/immich_db_*.sql.gz | tail -n +31 | xargs -r rm

echo "Backup terminé : $BACKUP_DIR/immich_db_$DATE.sql.gz"

Sauvegarde des Fichiers

# Utiliser rsync pour sauvegarder les uploads
rsync -avz --progress \
  /mnt/data/immich/upload/ \
  /mnt/backup/immich/upload/

# Ou avec Restic pour un backup incrémental chiffré
restic -r /mnt/backup/restic-immich backup \
  /mnt/data/immich/upload \
  --exclude="*.tmp" \
  --tag immich

Mise à Jour d'Immich

cd /opt/immich

# Toujours sauvegarder avant une mise à jour
docker exec immich_postgres pg_dumpall -U immich > /tmp/immich_pre_update.sql

# Tirer les nouvelles images
docker compose pull

# Redémarrer avec les nouvelles versions
docker compose up -d

# Vérifier les logs pour d'éventuelles erreurs de migration
docker compose logs -f immich-server

Conclusion

Immich s'est imposé comme la référence incontestable des solutions de gestion de photos auto-hébergées. En 2026, le projet offre une expérience qui rivalise véritablement avec Google Photos : backup mobile fluide, recherche intelligente par IA, reconnaissance faciale précise, interface web rapide et élégante, et un écosystème riche.

L'investissement initial pour l'installation et la migration est certes plus important que de simplement activer la synchronisation Google Photos, mais les bénéfices sont considérables :

  • Vie privée totale : Vos photos ne quittent jamais votre infrastructure
  • Aucune limite de stockage artificielle (seulement la capacité de vos disques)
  • Aucune dépendance vis-à-vis d'un fournisseur cloud
  • Contrôle complet sur vos données et leur traitement
  • Pas de compression forcée de vos photos et vidéos

Si vous hésitez encore, la meilleure approche est de commencer par une installation de test, d'importer quelques centaines de photos pour évaluer l'interface et les fonctionnalités ML, puis de planifier votre migration complète. Le chemin vers la souveraineté numérique commence souvent par la reprise de contrôle sur vos souvenirs photographiques.

Ressources utiles :
Site officiel Immich
GitHub Immich
Documentation officielle
immich-go (outil de migration)
Vous vous êtes abonné avec succès à CodeClan
Parfait ! Ensuite, complétez le paiement pour obtenir un accès complet à tout le contenu premium.
Erreur ! Impossible de s'inscrire. Lien invalide.
Bienvenue ! Vous vous êtes connecté avec succès.
Erreur ! Impossible de se connecter. Veuillez réessayer.
Succès ! Votre compte est entièrement activé, vous avez maintenant accès à tout le contenu.
Erreur ! Le paiement Stripe a échoué.
Succès ! Vos informations de facturation sont mises à jour.
Erreur ! La mise à jour des informations de facturation a échoué.