SSD Nodes Learn Hosting plans →
Guides Matt ConnorPar Matt Connor · Mis à jour le 2026-08-27

PhotoPrism ou Immich : quel serveur photo choisir ?

Comparez PhotoPrism et Immich : RAM minimale réelle, applications mobiles, cartes et commandes de sauvegarde exactes pour un déploiement Docker sur VPS.

PhotoPrism ou Immich : réponse courte

PhotoPrism ou Immich, c’est le choix entre deux usages différents, pas entre deux versions d’un même produit. Immich remplace Google Photos : une application mobile sauvegarde automatiquement les photos de votre appareil, et la timeline obtenue est familière à toute personne qui abandonne la galerie de son téléphone. PhotoPrism organise une photothèque que vous possédez déjà : il indexe les dossiers de fichiers présents sur le disque, lit leurs métadonnées, les place sur une carte et laisse les fichiers exactement à leur emplacement.

Choisissez Immich si le problème est le suivant : « mon téléphone est plein et je veux quitter Google Photos ». Choisissez PhotoPrism si le problème est le suivant : « j’ai 400 GB de photos sur un disque et je ne retrouve rien ». Les deux sont open source, s’exécutent sous forme de conteneurs Docker sur un VPS standard et indexent et recherchent votre photothèque sans envoyer quoi que ce soit à un tiers.

La séparation des philosophies, et pourquoi elle détermine tout

Immich gère les fichiers. Vous lui indiquez un emplacement d’importation, l’application mobile ou l’interface web d’importation y envoie les originaux, puis Immich les stocke dans son propre chemin avec sa propre convention de nommage. La base de données contient les informations de référence sur les albums, les visages et la recherche. Cette conception explique la qualité de l’expérience mobile : le serveur connaît toujours l’état complet de chaque élément.

PhotoPrism lit les fichiers. Vous montez un dossier originals que vous contrôlez déjà, puis PhotoPrism construit un index par-dessus. Votre arborescence reste la vôtre. Si vous supprimez PhotoPrism demain, les photos restent dans les mêmes dossiers avec les mêmes noms, et PhotoPrism aura écrit à côté des fichiers des fichiers YAML sidecar décrivant ce qu’il a identifié.

Cette seule différence explique l’essentiel du reste. Immich offre une prise en charge mobile complète parce qu’il contrôle l’importation. PhotoPrism excelle dans la gestion d’une photothèque parce qu’il ne se heurte jamais à votre structure existante. Immich convient mieux à une famille dont les photos sont stockées sur les téléphones. PhotoPrism convient mieux à une archive stockée sur un disque.

Appétit matériel : Immich en demande davantage

Les seuils de mémoire documentés sont très différents, et sur un petit VPS, c’est généralement le facteur déterminant.

ChartDocumented memory requirement, as of July 2026
The data behind this chart
[
  {
    "label": "Immich",
    "min_ram_gb": 6,
    "recommended_ram_gb": 8
  },
  {
    "label": "PhotoPrism",
    "min_ram_gb": 3,
    "recommended_ram_gb": 4
  }
]

Immich documente 6 Go de RAM au minimum et 8 Go comme valeur recommandée. La documentation précise qu’une machine de 4 Go ne peut l’exécuter qu’avec le machine learning désactivé. PhotoPrism documente 3 Go de mémoire physique et deux cœurs CPU. Le projet indique également que la quantité de RAM doit correspondre au nombre de cœurs.

L’écart est réel et vient du conteneur de machine learning. Immich exécute ses modèles dans un service immich-machine-learning séparé qui charge en mémoire CLIP (contrastive language image pretraining) et des modèles de détection des visages. Sur une machine de 2 Go, le kernel tue ce conteneur. Docker l’affiche alors avec le code de sortie 137, ce qui correspond à un kill pour manque de mémoire. Les modèles TensorFlow de PhotoPrism sont plus petits, et l’application se dégrade au lieu de s’arrêter : sur les machines disposant de 1 Go ou moins, elle désactive la conversion RAW et TensorFlow plutôt que de planter.

Les deux projets recommandent d’utiliser du swap. La documentation de PhotoPrism demande explicitement au moins 4 Go de swap sur le serveur. Ajoutez-le avant d’installer l’un ou l’autre.

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
free -h

free -h doit maintenant afficher une ligne Swap: indiquant 4.0Gi. Si la commande affiche 0B, alors swapon a échoué, généralement parce que le système de fichiers ne prend pas en charge fallocate, et sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 est utilisé comme solution de repli. Les plafonds de mémoire des conteneurs sont également importants ici. Définir des limites de mémoire dans Docker Compose permet d’empêcher un service trop gourmand de saturer toute la machine.

Une autre exigence est souvent oubliée. La base de données Postgres d’Immich doit se trouver sur un système de fichiers Unix normal, avec de véritables propriétaires et permissions, sur un stockage local, jamais sur un partage réseau. PhotoPrism indique la même chose pour ses fichiers de base de données. Aucune de ces applications ne peut être exécutée de manière sûre avec sa base de données sur un object store monté.

Comment installer chacun

Les deux installations utilisent un fichier Compose fourni par l’éditeur et une commande. Installez d’abord Docker Engine et le plugin Compose, comme indiqué dans notre guide de Docker Compose sur un VPS.

Immich publie son fichier Compose et un fichier d’environnement d’exemple à chaque release.

sudo mkdir -p /opt/immich && cd /opt/immich
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

Modifiez .env avant tout démarrage. UPLOAD_LOCATION indique où seront stockés vos originaux. DB_PASSWORD doit être remplacé par une valeur composée uniquement des caractères A-Za-z0-9, car les caractères spéciaux cassent la chaîne de connexion. Démarrez ensuite le service.

docker compose up -d
docker compose ps

L’interface web écoute sur le port 2283. Le premier compte créé depuis cette page devient administrateur. Ouvrez donc cette page et créez immédiatement le compte, au lieu de laisser une instance accessible sur Internet.

PhotoPrism fournit un fichier Compose qui inclut déjà MariaDB.

sudo mkdir -p /opt/photoprism && cd /opt/photoprism
wget https://dl.photoprism.app/docker/compose.yaml

Ouvrez compose.yaml et modifiez PHOTOPRISM_ADMIN_PASSWORD avant le premier démarrage. La documentation est claire à ce sujet : l’application démarre avec le mot de passe initial indiqué dans ce fichier, sa longueur minimale est de 8 caractères et la valeur par défaut ne doit jamais être utilisée sur un serveur public. Définissez en même temps le volume originals sur le dossier qui contient vos photos.

docker compose up -d
docker compose logs -f photoprism

PhotoPrism répond sur le port 2342 avec l’utilisateur admin. Aucune des deux applications ne doit être exposée directement. Placez un reverse proxy avec TLS (transport layer security) devant elles, selon la même architecture que celle utilisée pour un Nextcloud auto-hébergé avec Docker, TLS et sauvegardes. Si ce VPS héberge ensuite autre chose que des photos, appliquez la même règle à chaque service ajouté, car un relais RustDesk auto-hébergé a seulement besoin que ses deux ports soient accessibles, et de rien d’autre.

Lequel propose la meilleure application mobile

C’est sur ce point que les deux projets sont le plus éloignés, et c’est la raison pour laquelle la plupart des utilisateurs finissent par choisir Immich.

Immich fournit des applications officielles pour Android et iOS. Elles sauvegardent automatiquement la pellicule en arrière-plan : les nouvelles photos quittent le téléphone sans que personne n’ait besoin d’ouvrir l’application. L’application exige un endpoint HTTPS. Le reverse proxy est donc indispensable si vous prévoyez de l’utiliser hors de chez vous.

PhotoPrism ne propose pas d’application native officielle. Il fournit une progressive web app que vous ajoutez à l’écran d’accueil depuis le navigateur. Sa documentation présente WebDAV (web distributed authoring and versioning) comme la méthode de synchronisation depuis un téléphone. Le projet recommande pour cela une application tierce appelée PhotoSync, configurée avec le répertoire /import/ ou /originals/ via WebDAV. La solution fonctionne, mais elle repose sur une application tierce payante pour une fonction qu’Immich intègre directement à son propre client.

Si la sauvegarde automatique des photos de plusieurs membres de la famille est indispensable, le choix est arrêté : Immich.

Ce que le machine learning vous apporte réellement

Immich effectue une recherche sémantique dans votre photothèque avec CLIP. Une requête comme « vélo rouge dans la neige » trouve donc des photos que personne n’a jamais taguées. Il détecte et regroupe également les visages, et repère les doublons. L’indexation d’un import volumineux sur CPU peut s’exécuter pendant plusieurs heures en arrière-plan. C’est normal et un GPU (unité de traitement graphique) n’est pas nécessaire.

PhotoPrism classe les images avec TensorFlow et leur attribue des labels. Il détecte les visages et les regroupe par personne. Il lit aussi les métadonnées de localisation pour créer une carte des lieux. Cette carte est la fonctionnalité qui incite les utilisateurs à rester : une photothèque indexée par lieu offre une manière réellement différente de parcourir vingt ans de photos. La même idée fonctionne avec d’autres collections multimédias. L’interface de vidéoclub des années 90 de Halcyon pour Jellyfin en est la version dédiée aux films : elle permet de parcourir les contenus par rayon plutôt que par liste. La reconnaissance faciale est incluse dans l’édition gratuite Community. Les abonnements payants Essentials et Plus ajoutent notamment des couches cartographiques plus détaillées, davantage de rôles utilisateur et une interface de gestion des utilisateurs. En juillet 2026, ils commencent à quelques euros par mois.

Immich est entièrement gratuit et ne propose aucun niveau payant. Le cœur de PhotoPrism est gratuit, avec des fonctionnalités payantes optionnelles.

Les sauvegardes déterminent si vous pourrez conserver vos données

Un serveur photo sans sauvegarde peut perdre toutes les photos d’une famille à la première panne de disque. Les deux applications nécessitent 2 sauvegardes : la base de données et les fichiers.

Pour Immich, exportez la base de données depuis le conteneur Postgres et copiez l’emplacement des téléchargements.

docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gz

Sauvegardez ensuite UPLOAD_LOCATION. Les dossiers contenant les données irremplaçables sont upload, library et profile. Les dossiers thumbs et encoded-video peuvent être régénérés, au prix de plusieurs heures de calcul CPU. Un export de la base de données ne suffit pas à lui seul, car il ne contient que les métadonnées.

Pour PhotoPrism, l’index possède sa propre commande.

docker compose exec photoprism photoprism backup -i -f

Cette commande écrit un export SQL dans storage/backup/. Copiez ensuite le dossier originals et le dossier storage. PhotoPrism écrit également des fichiers YAML sidecar qui décrivent chaque photo. L’index perdu peut donc être reconstruit à partir des fichiers seuls. C’est un avantage important pour une archive que vous prévoyez de conserver pendant plusieurs décennies.

Quel que soit votre choix, envoyez régulièrement ces sauvegardes vers un emplacement distant avec des sauvegardes restic chiffrées et dédupliquées vers un stockage distant. Une sauvegarde stockée sur le même disque que la bibliothèque n’est pas une sauvegarde. Configurez la tâche pour signaler toute erreur, car une sauvegarde qui s’est arrêtée silencieusement en mars ressemble exactement à une sauvegarde exécutée la nuit dernière jusqu’au jour où vous en avez besoin. Un serveur ntfy auto-hébergé vous transmettra cette erreur sur votre téléphone le soir même.

Lequel devez-vous utiliser

Utilisez Immich si vos photos sont sur des téléphones, si plusieurs personnes doivent sauvegarder leur pellicule et si vous pouvez fournir au serveur au moins 6 GB de RAM. C’est ce qui se rapproche le plus de Google Photos en auto-hébergement, et l’expérience mobile est son principal intérêt. Notre guide d’installation détaillé d’Immich explique les arrêts dus au manque de mémoire et les pièges liés aux mises à niveau.

Utilisez PhotoPrism si vous avez déjà une archive photo sur disque, si vous accordez de l’importance aux cartes et aux métadonnées tout en souhaitant conserver votre propre arborescence, ou si votre VPS dispose de 4 GB de RAM et que vous préférez une bibliothèque fonctionnelle à une bibliothèque qui utilise le swap. C’est le meilleur outil pour organiser et sélectionner les photos, et il sollicite moins les petites configurations.

Utiliser les deux est également pertinent. Immich gère l’import quotidien des photos depuis les téléphones. Une fois par an, vous triez les photos à conserver dans votre archive, puis vous laissez PhotoPrism les indexer. Ils ne se gênent pas, car PhotoPrism lit les dossiers tandis qu’Immich gère son propre stockage.

FAQ

PhotoPrism et Immich peuvent-ils utiliser le même dossier de photos ?

Pas de manière sûre dans les deux sens. PhotoPrism lit un dossier originals et écrit des fichiers YAML sidecar à côté de vos images, tandis qu’Immich considère que le contenu de son emplacement d’upload lui appartient. Vous pouvez configurer PhotoPrism pour utiliser une copie en lecture seule du dossier library d’Immich afin de le parcourir, mais ne laissez pas les deux applications gérer les mêmes fichiers. Le template de stockage d’Immich peut déplacer ou renommer des éléments utilisés par PhotoPrism pendant l’indexation.

Immich est-il suffisamment stable pour conserver l’unique copie de mes photos ?

Aucune application auto-hébergée ne doit conserver l’unique copie de quoi que ce soit. Immich publie souvent des changements incompatibles, et un docker compose pull imprudent peut empêcher la base de données de démarrer. Épinglez donc votre version et lisez les notes de version avant toute mise à niveau. Conservez les fichiers d’origine dans une sauvegarde située hors du serveur pour limiter le risque.

Pourquoi le conteneur de machine learning d’Immich redémarre-t-il sans cesse ?

Il est tué parce qu’il utilise trop de mémoire. Exécutez docker compose ps et recherchez l’arrêt du service de machine learning avec le code 137. Ce code indique l’intervention de l’out of memory killer du kernel. Ajoutez du swap, ou définissez une limite mémoire pour le conteneur afin qu’il soit limité plutôt que tué. Vous pouvez aussi désactiver complètement le machine learning sur une machine dotée de 4 GB de mémoire. La recherche ne fonctionnera plus sans lui, mais le reste d’Immich continuera de fonctionner.

PhotoPrism a-t-il besoin de MariaDB, ou SQLite suffit-il ?

SQLite fonctionne et convient à une bibliothèque personnelle, mais PhotoPrism se limite à quatre workers lorsqu’il l’utilise. La documentation recommande de passer à MariaDB, qui gère mieux une forte concurrence. Le fichier compose fourni par le projet inclut déjà MariaDB. La méthode recommandée est donc aussi celle utilisée par défaut.

Quel espace disque dois-je prévoir en plus de la taille de ma bibliothèque ?

Ajoutez 10 à 20 % à la taille de vos originaux, quelle que soit l’application utilisée. Cela couvre les miniatures générées et les aperçus vidéo transcodés. Une collection de 200 GB nécessite environ un volume de 300 GB si vous prévoyez aussi de l’espace pour la base de données, la copie de sauvegarde locale et la croissance future.