• Home
  • Auto-Hébergement
  • Installer Immich avec Docker, l'alternative open source à Google Photos que vous attendiez
Installer Immich avec Docker, l'alternative open source à Google Photos que vous attendiez
Par Guillaume REYNAUD profile image Guillaume REYNAUD
14 min read

Installer Immich avec Docker, l'alternative open source à Google Photos que vous attendiez

Guide complet pour installer Immich avec Docker : configuration, structure des volumes, accès mobile et sauvegarde automatique de vos photos, sans dépendre du cloud de Google.

Vous en avez assez de payer chaque année pour du stockage Google Photos ou iCloud Photos ? Vous souhaitez reprendre le contrôle total de vos photos et vidéos sans dépendre d'un service cloud tiers ? Immich est fait pour vous. Ce guide vous accompagne pas à pas pour déployer votre propre serveur Immich avec Docker, Docker Compose, et une intégration propre du reverse proxy Traefik.

Prérequis : Docker, Docker Compose et Traefik sont déjà installés et opérationnels sur votre machine. Ce guide prend ces trois composants comme acquis.

Qu'est-ce qu'Immich ? La meilleure alternative à google photos en open source

Qu'est-ce qu'Immich ? La meilleure alternative à google photos en open source

Immich est une application de gestion de photos et vidéos auto-hébergée (self-hosted), développée principalement en TypeScript. Son objectif est simple : offrir une expérience proche de Google Photos ou iCloud Photos, mais sur votre propre infrastructure, avec vos propres règles.

Depuis sa version 2.0, sortie en octobre 2025 après 1 337 jours de développement et 271 versions publiées sur GitHub, Immich est considéré comme stable et prêt pour la production. Avec plus de 81 000 étoiles sur GitHub, l'engouement communautaire ne fait aucun doute.

Ce que vous pouvez faire avec Immich

Immich est riche en fonctionnalités, en voici les principales :

  • Sauvegarde automatique des photos et vidéos depuis mobile (Android et iOS)
  • Interface web moderne avec affichage chronologique et mode carte
  • Reconnaissance faciale intégrée (machine learning)
  • Détection de doublons
  • Albums collaboratifs et partage sécurisé (lien avec mot de passe et expiration)
  • Gestion multi-utilisateurs avec quota individuel
  • Recherche par métadonnées (date, lieu, appareil photo, etc.)
  • Authentification via OAuth2, LDAP ou base utilisateurs interne
  • API REST complète
  • Import/export de la configuration en JSON

Pour découvrir la roadmap et les nouvelles fonctionnalités à venir, rendez-vous sur immich.app/roadmap.

Architecture : les 4 conteneurs du stack Immich

Lorsque vous installer immich via Docker Compose, le stack déploie quatre services :

  • immich_server — le cœur de l'application : API, interface web, gestion des uploads
  • immich_machine_learning — analyse d'images et reconnaissance faciale via des modèles de ML
  • immich_redis — système de cache et de file d'attente pour les performances
  • immich_postgres — base de données PostgreSQL stockant toutes les métadonnées

Préparer l'environnement

Déclarer votre nom de domaine

Mon domaine étant hébergé chez OVH, je dois créer mon sous-domaine depuis leur interface.
Il faut aller dans WebCloud -> Zones DNS -> Ajouter une entrée

Déclarer votre nom de domaine chez OVH


J'utilise un CNANME car je ne dispose pas d'adresse IP fixe. J'utilise la fonctionnalité DynHost de OVH et le client sur ma Livebox pour héberger des applications chez-moi

Créer l'arborescence de dossiers

Toutes les données d'Immich seront stockées sous /opt/containers/immich. Créez les répertoires nécessaires :

sudo mkdir -p /opt/containers/immich/{library,postgres,model-cache}
cd /opt/containers/immich

La structure finale du projet sera la suivante :

Arborescence finale du projet d'autohébergement d'Immich
Ligne de commande pour créer vos répertoires en 1 seule ligne

Le fichier docker-compose.yml : version robuste avec Traefik

Le fichier docker-compose d'Immich est directement disponible sur le compte GitHub de NetworkPulse, vous n'avez donc pas à le créer de zéro. Il orchestre quatre services interdépendants qui fonctionnent ensemble.

💡
Vous retrouverez l’intégralité de mon fichier compose.yaml sur mon compte Github (docker-compose Immich). Pour éviter de surcharger inutilement cet article, je n’ai pas mis le contenu du fichier compose, de plus il est assez long. Tout est détaillé sur le compte GitHub.

Les quatre services :

  • immich-server est le cœur de l'application, il gère l'interface web et l'API.
  • immich-machine-learning prend en charge la reconnaissance faciale et la classification intelligente des photos — il utilise un volume nommé model-cache pour mettre en cache les modèles d'IA et éviter de les re-télécharger à chaque redémarrage.
  • redis(via l'image Valkey, un fork open-source) sert de cache et de file de messages entre les services.
  • Enfin, database utilise une image PostgreSQL personnalisée avec les extensions pgvecto.rs et VectorChord, indispensables pour la recherche d'images par similarité et la reconnaissance intelligente.
Les 4 services d'Immich en action sous Docker

Les subtilités du fichier : la syntaxe ${IMMICH_VERSION:-release} sur les images signifie que si vous ne définissez pas de version, Docker utilisera automatiquement le tag release, soit toujours la dernière version stable.

Le volume /etc/localtime:/etc/localtime:ro monte le fuseau horaire de votre serveur dans les conteneurs en lecture seule — sans cela, vos photos auraient des horodatages décalés.

L'image PostgreSQL est épinglée par son hash SHA256 (@sha256:bcf6...), ce qui garantit que vous téléchargerez toujours exactement la même image, même si le tag venait à changer.

L'option shm_size: 128mb alloue de la mémoire partagée supplémentaire à PostgreSQL, nécessaire pour éviter des erreurs sous charge.

Enfin, depends_on garantit que Redis et PostgreSQL démarrent avant le serveur Immich, et les healthcheck vérifient que chaque service est réellement opérationnel, pas seulement démarré.

Portion de code du docker compose de Immich

Les labels Traefik sont posés uniquement sur immich-server et sont la partie la plus importante à personnaliser.

  • traefik.enable=true signale à Traefik de prendre en charge ce conteneur.
  • La règle Host(\immich.votredomaine.com)définit le nom de domaine sur lequel Immich sera accessible — c'est la ligne que vous devez absolument adapter avec votre propre domaine.
  • L'entrypointwebsecureindique que Traefik gère le HTTPS en amont, le certificat SSL étant obtenu automatiquement par Traefik lui-même via let's Encrypt.
  • La communication entre Traefik et le conteneur se fait ensuite en HTTP simple sur le port interne2283, ce qui est parfaitement normal au sein du réseau Docker interne.
  • Tous les services partagent le réseau externe web de Traefik : aucun port n'est donc exposé directement sur l'hôte, ce qui est la bonne approche en production.
Les labels Traefik sont posés uniquement sur immich-server et sont la partie la plus importante à personnaliser.

Dans Portainer, lors du déploiement de la stack, renseignez les variables d'environnement suivantes dans l'onglet "Environment variables", attention cependant ne ne pas oublier la référence aux variables dans le docker-compose avec la directive env_file:

  • UPLOAD_LOCATION : chemin sur votre serveur où seront stockées vos photos et vidéos
  • DB_DATA_LOCATION : chemin de stockage des données PostgreSQL
  • DB_PASSWORD, DB_USERNAME, DB_DATABASE_NAME : identifiants de la base de données
  • IMMICH_VERSION : optionnel, permet de figer une version précise
Immich nécessite un fichier stack.env pour les variables
💡 UPLOAD_LOCATION et DB_DATA_LOCATION sont vos données critiques. Une perte de l'un ou de l'autre signifie une perte définitive de vos photos ou de votre base de données. Mettez en place une sauvegarde régulière de ces deux emplacements avant toute chose. Vous pouvez consulter mon tutoriel sur Portabase qui vous explique comment sauvegarder vos bases.
Points clés de cette configuration :Le port 2283 n'est pas exposé directement sur l'hôte, Traefik est le seul point d'entrée sur le port 443.Le readTimeout Traefik est porté à 600 secondes pour éviter les erreurs lors de l'upload de grandes vidéos (erreur HTTP 499 avec le timeout par défaut de 60s). Vous devez rajouter ces options dans le fichier traefik.yml sur votre entrypoints 443. Par défaut, cette valeur est fixée à 60 secondes, ce qui entraîne l'arrêt du téléchargement des vidéos après 1 minute. Avec cette configuration, l'opération échouera après 10 minutes, ce qui est suffisant dans la plupart des cas. Augmentez cette valeur si nécessaire.
La variable readTimeout de Traefik est portée à 600 secondes pour éviter des erreurs HTTP 499 pour des vidéos importantes

Maintenant vous pouvez démarrer votre stack. Au bout de quelques minutes vous arrivez à la mire de configuration de Immich.

Premier pas avec Immich

Premiers pas avec Immich

Création d'un utilisateur Admin pour gérer la plateforme

La première étape consiste à créer un compte administrateur sur Immich. Puis connectez-vous à votre compte. Suivez les instruction à l'écran pour choisir un thème, une langue, vie privée (accès à des services externes comme la carte, ...)

Vous pouvez ensuite décider d'activer ou non le moteur de modèle de stockage, qui a pour rôle d'organiser automatiquement les fichiers selon leurs noms. Différents modèles sont disponibles, offrant la possibilité de créer un dossier par mois, ou encore un dossier distinct pour chaque jour de l'année. Dans la liste Préréglage vous pouvez sélectionner celui qui vous convient. Personnellement j'ai choisi le modèle Y/MM/filename ce qui donne 2026/06/IMAGE.jpg

Enfin, le logiciel rappelle à juste titre l'importance de la sauvegarde des données. Car si l'auto-hébergement offre une grande liberté, vous restez seul responsable de la sécurité et de la préservation de vos fichiers.

Présentation d'immich

L'interface d'immich s'articule autour de deux grandes sections : l'espace utilisateur et l'espace administrateur. La première permet d'envoyer, d'organiser et de consulter les photos, chaque utilisateur disposant de son propre espace personnel. La seconde offre la possibilité de gérer les comptes utilisateurs et de configurer les différents paramètres de l'instance immich.

L'interface d'immich s'articule autour de deux grandes sections : l'espace utilisateur et l'espace administrateur.

Côté serveur, les bibliothèques des utilisateurs sont regroupées dans le répertoire library/library, avec un sous-dossier dédié à chacun d'eux. Le dossier admin correspond à l'espace de l'utilisateur créé lors de la configuration initiale. Les dossiers suivants ne sont quant à eux pas nommés d'après le nom d'utilisateur, mais d'après son identifiant unique (vous pouvez le trouver dans le paramètre du compte): une approche logique, puisque le nom d'utilisateur peut être modifié à tout moment.

Organisation des répertoires des photos sous Immich

L'interface soignée d'Immich affiche les photos et vidéos selon plusieurs modes de visualisation. Les médias sont automatiquement classés par ordre chronologique et présentés sous forme de vignettes. La barre latérale donne accès rapidement aux différentes sections, comme les albums, les favoris ou la corbeille.

Immich intègre également une navigation géographique, chaque média étant positionné sur un planisphère interactif. Cette fonctionnalité repose sur les métadonnées EXIF des photos pour récupérer les coordonnées GPS ; en leur absence, l'emplacement devra être renseigné manuellement (avec la possibilité de traiter plusieurs fichiers en lot). Dans tous les cas, c'est une fonctionnalité bienvenue qui contribue à offrir une expérience comparable à celle de Google Photos. La reconnaissance faciale complète le tableau, en permettant de retrouver aisément l'ensemble des photos d'une même personne.

La visionneuse intégrée d'Immich permet de consulter aussi bien les photos que les vidéos, et d'accéder aux métadonnées de chaque média (localisation, nom du fichier, appareil photo utilisé, etc.). La gestion par albums offre la possibilité de regrouper des médias par période ou par thématique, ce qui s'avère particulièrement pratique pour rassembler les souvenirs d'un événement ou d'un voyage. Immich permet par ailleurs de partager albums et médias individuels via un lien personnalisable, avec des options de sécurité telles que la protection par mot de passe ou l'expiration automatique. Sans être une solution véritablement collaborative, Immich intègre néanmoins une dimension de partage non négligeable.

L'application mobile d'Immich

Disponible sur Android et iOS, l'application mobile d'Immich est essentielle pour tirer pleinement parti de la solution. La plupart des utilisateurs se servent de leur smartphone pour capturer photos et vidéos : l'application permet de les sauvegarder automatiquement sur votre serveur, à la manière de Google Photos ou iCloud.

L'application mobile d'Immich

Au premier lancement, il suffit de renseigner l'adresse du serveur, son identifiant et son mot de passe pour accéder à l'ensemble de sa bibliothèque, incluant la corbeille, l'archive et le répertoire sécurisé par code PIN. L'application regorge de fonctionnalités pratiques, parmi lesquelles la bascule automatique entre l'adresse locale et l'adresse externe du serveur selon le réseau utilisé (Wi-Fi domestique ou connexion extérieure).

Organisation des Photos grâce à la timeline

Pour ma part je n'ai pas choisi la sauvegarde automatique de mes photos sur mon téléphone vers mon serveur Immich. Je préfère sélectionner et trier mes photos que j'envoie sur mon serveur depuis la Bibliothèque de Immich.

Importer ses photos existantes depuis Google Photos ou iCloud

Une fois immich installé, vient rapidement la question de la migration : comment rapatrier des années de photos stockées sur Google Photos ou iCloud ? L'envoi manuel via l'interface web ou les applications mobiles fonctionne pour quelques clichés, mais devient vite impraticable sur une bibliothèque de plusieurs dizaines de milliers de fichiers. C'est précisément le cas d'usage couvert par immich-go.

Pourquoi immich-go plutôt qu'un import manuel

immich-go est un projet communautaire indépendant, distribué sous forme d'un binaire unique pas besoin d'installer Node.js, Python ou un environnement Docker pour le faire tourner. Son intérêt principal réside dans sa capacité à interpréter correctement la structure parfois chaotique des archives Google Takeout : il associe les fichiers JSON de métadonnées à leurs photos correspondantes pour restaurer la géolocalisation, la date de prise de vue originale et l'organisation en albums, des informations qui se perdraient avec un simple glisser-déposer.

Au-delà de Google Photos, l'outil sait également traiter les exports iCloud, ingérer des dossiers de fichiers locaux, ou encore lire directement des archives ZIP sans extraction préalable.

Étapes de la migration

1. Exporter la bibliothèque source

Utiliser Google Takeout pour exporter vos Photos de Google Photos vers Immich


Sur Google Takeout, sélectionnez exclusivement le service Google Photos, choisissez le format ZIP, et optez pour des archives découpées en 50 Go afin d'éviter de manipuler un nombre excessif de fichiers volumineux.

Exportation de vos photos Google Photos vers Immich


2. Créer une clé d'authentification
Rendez-vous dans les paramètres de votre compte immich, section Clés API, pour générer le jeton qui permettra à immich-go de communiquer avec votre instance.

Créer une clé d'authentification sous Immich pour utiliser ses API pour importer vos photos

3. Tester puis exécuter l'import
Commencez systématiquement par un passage en mode simulation grâce à l'option --dry-run : cela permet de vérifier ce que l'outil s'apprête à importer sans toucher à votre bibliothèque. Une fois le résultat validé, relancez la même commande en retirant ce paramètre pour procéder à l'import effectif.

L'utilitaire immich§go permet de tester l'importation avant de la lancer réellement
L'utilitire immich-go vous permet d'importer facilement vos photos dans Immich grâce aux APIs

Après l'import

immich prend alors le relais : indexation des nouveaux fichiers, génération des miniatures et lancement de la reconnaissance faciale sur l'ensemble des médias importés. Si certaines photos se retrouvent dupliquées — un cas fréquent lors de migrations multiples ou d'exports qui se chevauchent — la fonction de détection des doublons intégrée à immich permet de faire le ménage en quelques clics.

Le projet est open source et activement maintenu, son code source et sa documentation sont disponibles sur le dépôt simulot/immich-go.

Ajouter un bibliohèque externe dans Immich

Au départ, j'utilisais uniquement Immich pour sauvegarder les photos de mon téléphone. mais vu que le logiciel est extrêmement performant et pratique j'ai décidé de basculer les images de famille sur Immich.

Actuellement mes images sont sauvegardées sur un compte Pcloud et sont classées selon le format suivant : ANNEE/DATE-EVENEMENT

Ajouter un bibliohèque externe dans Immich

Le problème avec Immich, c'est qu'il ne peut pas séparer les photos de mon téléphone et celles de la famille, tout est mélangé dans la timeline et cela ne me convenait pas.

J'ai donc trouvé la solution. j'ai créé un autre compte utilisateur (il faut qu'il soit admin), pour gérer les photos de famille et j'ai ensuite connecté mon répertoire Pcloud à Immich.

Utiliser les bibliothèques externes d'Immich pour ajouter des photos dans Immich qui sont sur un support externe

Voici comment ajouter une bibliothèque externe à Immich. Il faut aller dans Administration > Bibliothèque externes.

Créer une nouvelle bibliothèque pour vos photos de famille

Créer une bibliothèque en saisissant un nom.

Dans Dossier sélectionner le dossier ou sont stockés vos photos (Pour ma part j'ai utilisé rclone pour monter mon répertoire Pcloud via webdav). Il ne faut pas oublié aussi de rajouter le chemin dans votre fichier docker-compose pour que Immich puisse le voir.

Puis maintenant cliquer sur Analyser. C'est la phase la plus longue, il va les indexer, créer les métas, reconnaitre les visages, ... J'ai rajouté d'un coup environ 30000 photos et il a fallu 1 journée pour que la base soit disponible. Il faut donc être patient.

FAQ

Q: Immich est-il vraiment gratuit ?
Oui, entièrement. Le code source est open source et toutes les fonctionnalités sont accessibles sans payer. Les licences proposées par l'équipe sont purement un moyen de soutenir financièrement le projet, sans débloquer quoi que ce soit de plus.


Q: Mes photos sont-elles envoyées sur un serveur externe ?
Non. Avec ce déploiement, vos photos et vidéos restent stockées sur votre propre ser
veur, dans le dossier défini par UPLOAD_LOCATION. Aucune donnée ne transite vers les serveurs d'Immich ou d'un tiers, contrairement à un service Cloud classique.


Q: Puis-je accéder à Immich depuis l'extérieur de mon réseau local ?
Oui, c'est tout l'intérêt de la configuration avec Traefik présentée dans ce tutoriel. Le reverse proxy expose Immich en HTTPS sur votre nom de domaine, avec un certificat SSL géré automatiquement, sans avoir à ouvrir de port directement sur votre serveur.


Q: Que se passe-t-il si je perds mes fichiers ?
Sans sauvegarde, vous perdez définitivement vos photos et votre base de données. Les deux dossiers critiques à sauvegarder régulièrement sont ceux définis par UPLOAD_LOCATION (vos médias) et DB_DATA_LOCATION (la base PostgreSQL). Aucune des deux n'est récupérable sans backup.


Q: La reconnaissance faciale et la recherche par similarité fonctionnent-elles hors ligne ?
Oui. Le service immich-machine-learning exécute localement, sur votre propre serveur, tous les modèles d'intelligence artificielle. Aucune image n'est envoyée à un service externe pour être analysée.


Q: Comment mettre à jour Immich ?
Si vous utilisez le tag release (comportement par défaut quand IMMICH_VERSION n'est pas défini), il suffit de redéployer la stack dans Portainer pour récupérer la dernière version stable. Si vous avez figé une version précise, modifiez la variable IMMICH_VERSION avant de redéployer.


Q: Puis-je utiliser Immich sans Traefik ?
Oui, mais vous perdrez l'accès HTTPS automatisé et l'exposition simplifiée sur un nom de domaine. Il faudrait alors exposer manuellement le port 2283 du conteneur immich-server, ce qui est moins sécurisé et moins pratique pour un accès distant.

Conclusion

Immich s'impose aujourd'hui comme une alternative mature et sérieuse à Google Photos, sans dépendre d'un quelconque service Cloud tiers. Grâce à son interface moderne, ses fonctionnalités de cartographie, de reconnaissance faciale et de classification automatique, sa gestion d'albums collaboratifs et son application mobile capable de synchroniser vos photos en arrière-plan, Immich répond pleinement aux usages des utilisateurs habitués aux solutions Cloud grand public avec un avantage de taille : vous retrouvez la pleine maîtrise de vos données.

Combiné à un déploiement via Docker et Portainer, et sécurisé derrière un reverse proxy Traefik, Immich devient une solution self-hosted robuste, accessible depuis n'importe où en HTTPS, sans jamais transiter par les serveurs d'un tiers. C'est exactement le type de projet qui illustre tout l'intérêt de l'auto-hébergement : reprendre le contrôle de ses souvenirs personnels, sans compromis sur l'expérience utilisateur.

Enfin, même si Immich est une solution open source totalement gratuite, sachez que le soutien financier au projet aide à assurer sa pérennité. C'est le nerf de la guerre pour tout projet open source porté par une petite équipe. Bien que totalement facultatif, il existe des licences serveur à 100 dollars et des licences par utilisateur à 25 dollars (à vie). Payer permet simplement de soutenir le développement du projet, sans débloquer de fonctionnalités supplémentaires une démarche de soutien, pas un modèle freemium déguisé.

Signature
Par Guillaume REYNAUD profile image Guillaume REYNAUD
Mis à jour le
Auto-Hébergement