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 sur VPS.
PhotoPrism et Immich : réponse courte
PhotoPrism et Immich répondent à deux besoins différents. Il ne s’agit pas de deux versions d’un même produit. Immich remplace Google Photos : une application mobile sauvegarde automatiquement les photos de votre appareil, avec une timeline familière pour les utilisateurs qui quittent la galerie de leur téléphone. PhotoPrism organise une photothèque existante : il indexe les dossiers de fichiers présents sur le disque, lit leurs métadonnées, les affiche sur une carte et laisse les fichiers exactement à leur emplacement actuel.
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 peux rien y retrouver. » Les deux sont open source, fonctionnent comme des conteneurs Docker sur un VPS classique et indexent et recherchent votre photothèque sans envoyer de données à un tiers.
La différence de philosophie, et pourquoi elle décide de tout
Immich gère les fichiers. Vous lui indiquez un emplacement d’importation, l’application mobile ou l’outil d’importation web y envoie les originaux, puis Immich les stocke dans son propre chemin avec ses propres noms. La base de données contient les informations de référence sur les albums, les visages et la recherche. Cette conception rend l’expérience mobile efficace, car 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 crée 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é d’elles des fichiers YAML sidecar décrivant ce qu’il a appris.
Cette seule différence explique la plupart des autres. Immich offre une prise en charge mobile solide parce qu’il contrôle l’importation. PhotoPrism offre une gestion efficace de la bibliothèque parce qu’il ne modifie jamais votre structure existante. Immich convient mieux à une famille dont les photos se trouvent sur les téléphones. PhotoPrism convient mieux à une archive stockée sur un disque.
Besoins matériels : Immich demande davantage
Les seuils de mémoire documentés sont très différents. Sur un petit VPS, c’est généralement le facteur décisif.
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 indique 6 Go de RAM au minimum et 8 Go recommandés. Le projet précise qu’une machine de 4 Go ne peut l’exécuter qu’avec le machine learning désactivé. PhotoPrism indique 3 Go de mémoire physique et 2 cœurs CPU. Il précise que la quantité de RAM doit correspondre au nombre de cœurs.
La différence est réelle. Elle vient du conteneur de machine learning. Immich exécute ses modèles dans un service immich-machine-learning distinct. Ce service 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. PhotoPrism réduit ses fonctionnalités au lieu de s’arrêter : sur les machines disposant de 1 Go ou moins, il désactive la conversion RAW et TensorFlow plutôt que de provoquer un crash.
Les deux projets demandent du swap. La documentation de PhotoPrism recommande explicitement au moins 4 Go de swap sur le serveur. Ajoutez-le avant d’installer l’une ou l’autre application.
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 -hfree -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. Dans ce cas, sudo dd if=/dev/zero of=/swapfile bs=1M count=4096 est utilisé comme solution de repli. Les limites de mémoire des conteneurs sont également importantes ici. définir des limites de mémoire dans Docker Compose permet d’empêcher un service trop gourmand de faire tomber 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 une gestion réelle des propriétaires et des permissions, sur un stockage local. Elle ne doit jamais se trouver sur un partage réseau. PhotoPrism impose la même condition pour ses fichiers de base de données. Aucune des deux applications ne doit utiliser une base de données située sur un object store monté.
Comment installer chacun
Les deux installations utilisent un fichier Compose fourni par l’éditeur et une seule commande. Installez d’abord Docker Engine et le plugin Compose, comme indiqué dans notre guide sur Docker Compose sur un VPS.
Immich publie son fichier Compose et un fichier d’environnement d’exemple avec 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.envModifiez .env avant de démarrer quoi que ce soit. UPLOAD_LOCATION indique où seront stockés vos originaux, et DB_PASSWORD doit être modifié par rapport à la valeur par défaut en utilisant uniquement les 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 psL’interface web répond sur le port 2283. Le premier compte créé depuis cette page devient administrateur. Accédez-y et créez immédiatement ce compte au lieu de laisser une instance ouverte 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.yamlOuvrez compose.yaml et modifiez PHOTOPRISM_ADMIN_PASSWORD avant le premier démarrage. La documentation est explicite : 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 également le volume originals sur le dossier qui contient vos photos.
docker compose up -d
docker compose logs -f photoprismPhotoPrism 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 (sécurité de la couche transport) devant l’application, selon la même architecture que celle utilisée pour un Nextcloud auto-hébergé avec Docker, TLS et des sauvegardes.
Quelle application mobile est la meilleure
C’est sur ce point que les deux projets sont le plus éloignés. C’est aussi la raison pour laquelle la plupart des utilisateurs choisissent finalement Immich.
Immich fournit des applications officielles pour Android et iOS. Elles sauvegardent automatiquement le contenu de la pellicule en arrière-plan. Les nouvelles photos sont donc transférées depuis le téléphone sans qu’il soit nécessaire d’ouvrir une application. L’application exige un endpoint HTTPS. Le reverse proxy est donc indispensable si vous prévoyez de l’utiliser hors de votre domicile.
PhotoPrism ne dispose d’aucune application native officielle. Il fournit une progressive web app que vous ajoutez à l’écran d’accueil depuis le navigateur. Sa documentation indique que WebDAV (web distributed authoring and versioning) est la méthode à utiliser pour synchroniser les photos depuis un téléphone. Le projet recommande pour cela une application tierce appelée PhotoSync, configurée pour utiliser le répertoire /import/ ou /originals/ via WebDAV. La solution fonctionne, mais il s’agit d’une application tierce payante qui effectue une tâche qu’Immich prend en charge dans son propre client.
Si la sauvegarde automatique des photos depuis les téléphones de plusieurs membres de la famille est nécessaire, le choix est clair : Immich.
Ce que vous apporte réellement le machine learning
Immich effectue une recherche sémantique dans votre bibliothèque avec CLIP. Une requête comme « vélo rouge dans la neige » peut donc trouver des photos que personne n’a jamais étiquetées. Le logiciel détecte et regroupe également les visages, et détecte les doublons. L’indexation d’un import volumineux sur CPU s’exécute pendant plusieurs heures en arrière-plan. C’est normal et un GPU (graphics processing unit) 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 également les métadonnées de localisation pour créer une carte des lieux. Cette carte est la fonction qui incite les utilisateurs à rester : une bibliothèque indexée selon le lieu où les photos ont été prises offre une manière réellement différente de parcourir vingt ans de photos. La reconnaissance faciale est incluse dans l’édition gratuite Community. Les abonnements payants Essentials et Plus ajoutent des fonctions telles que des couches cartographiques plus détaillées, davantage de rôles utilisateur et une interface de gestion des utilisateurs. En juillet 2026, leurs tarifs 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 fonctions payantes facultatives.
Les sauvegardes déterminent si vous conservez vos données
Un serveur photo sans sauvegarde risque de tout perdre pour la famille au premier disque défaillant. 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, puis copiez l’emplacement des fichiers importés.
docker exec -t immich_postgres pg_dump --clean --if-exists --dbname=immich --username=postgres | gzip > /backup/immich-db.sql.gzSauvegardez ensuite UPLOAD_LOCATION. Les dossiers qui contiennent 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 permet pas, à lui seul, de restaurer les données, car il contient uniquement les métadonnées.
Pour PhotoPrism, l’index possède sa propre commande.
docker compose exec photoprism photoprism backup -i -fCette 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. Il est donc possible de reconstruire un index perdu à partir des seuls fichiers. C’est un avantage important pour une archive que vous prévoyez de conserver pendant plusieurs décennies.
Quelle que soit l’application choisie, envoyez régulièrement ces sauvegardes hors du serveur 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 photothèque n’est pas une sauvegarde.
Lequel devriez-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 atout. Notre guide d’installation détaillé d’Immich explique les arrêts dus au manque de mémoire et les pièges des mises à niveau.
Utilisez PhotoPrism si vous avez déjà une archive de photos sur disque, si vous accordez de l’importance aux cartes et aux métadonnées tout en souhaitant conserver votre propre structure de dossiers, ou si votre VPS dispose de 4 GB de RAM et que vous préférez une bibliothèque fonctionnelle plutôt qu’une bibliothèque qui utilise le swap. C’est le meilleur outil pour organiser une collection et il sollicite moins le matériel limité.
Vous pouvez aussi utiliser les deux. Immich gère l’importation quotidienne depuis les téléphones. Une fois par an, vous triez les photos à conserver dans votre archive et vous laissez PhotoPrism les indexer. Ils ne se gênent pas, car PhotoPrism lit les dossiers tandis qu’Immich utilise son propre stockage.
FAQ
PhotoPrism et Immich peuvent-ils partager 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 s’attend à gérer le contenu de son emplacement d’upload. 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 storage template d’Immich peut déplacer ou renommer des assets utilisés par PhotoPrism pendant l’indexation.
Immich est-il suffisamment stable pour conserver l’unique copie de mes photos ?
Aucune application self-hosted ne doit jamais conserver l’unique copie de quoi que ce soit. Immich publie souvent des breaking changes, et un docker compose pull imprudent peut empêcher la base de données de démarrer. Épinglez donc votre version et lisez les release notes avant toute mise à niveau. Conservez les fichiers d’origine dans une sauvegarde située hors du serveur afin de limiter le risque.
Pourquoi le container 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 du kernel out of memory killer. Ajoutez du swap, ou définissez une limite de mémoire pour le container afin qu’il soit limité plutôt que tué. Vous pouvez aussi désactiver complètement le machine learning sur une machine de 4 GB. 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. Toutefois, PhotoPrism se limite à quatre workers lorsqu’il l’utilise, et la documentation recommande de passer à MariaDB, qui gère mieux une forte concurrence. Le fichier compose fourni par le projet inclut déjà MariaDB. Le chemin recommandé est donc aussi celui utilisé par défaut.
Quel espace disque dois-je prévoir au-delà de la taille de ma bibliothèque ?
Ajoutez 10 à 20 pour cent à la taille de vos originaux, quelle que soit l’application utilisée. Cela couvre les thumbnails 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, afin de laisser de la place pour la base de données, la copie de sauvegarde locale et la croissance de la bibliothèque.