Skip to content

PhotoPrism Docker : la galerie photo auto-hébergée qui remplace Google Photos

Brandon Visca
Published date:

💡 TL;DR, PhotoPrism Docker en 4 points :

  • C’est quoi ? Une galerie photo auto-hébergée avec reconnaissance faciale, classification par IA et import automatique
  • Pourquoi ? Google Photos te facture 2 To à 10€/mois, piste tes métadonnées GPS et te bloque si tu dépasses les quotas
  • Comment ? Un docker-compose.yml avec PhotoPrism + MariaDB = opérationnel en 10 minutes
  • Coût ? Zéro euro si tu as déjà un serveur avec Docker

Tu stockes encore tes 15 000 photos sur Google Photos ? Tu reçois ce gentil mail “Vous avez utilisé 95% de votre espace” ? Et quand tu cherches “chat noir” dans ta galerie, Google te sort un algorithme flippant qui te dit exactement où tu étais quand tu l’as pris ?

Bienvenue dans le monde merveilleux du cloud propriétaire. Tu paies pour stocker, tu paies pour chercher, et en prime tu nourris un modèle d’IA avec tes souvenirs de vacances.

Il existe une alternative solide : PhotoPrism. C’est une galerie photo open-source, auto-hébergée, avec reconnaissance faciale, classification automatique par IA, et zero tracking. On l’installe avec Docker Compose en 10 minutes, et tes photos restent chez toi. Pour toujours.

Si tu débutes avec Docker, commence par mon guide Docker pour débutants pour bien poser les bases. Et si tu cherches déjà à stocker tes fichiers en cloud perso, mon guide Nextcloud Docker est complémentaire.

Table des matières

Table des matières

Pourquoi quitter Google Photos en 2026 ?

Google Photos était génial à ses débuts. Stockage gratuit, recherche par contenu, synchronisation multi-appareil. Puis Google a retiré le stockage gratuit illimité en juin 2021. Depuis, c’est la galère.

Le calcul qui fait mal

Google Photos aujourd’hui :

Et ce n’est que le stockage. Tu payes aussi avec tes données : localisation GPS, reconnaissance faciale, analyse EXIF, tout est miné pour l’IA générative.

PhotoPrism auto-hébergé :

Si tu as déjà un serveur chez toi (Raspberry Pi 4/5, vieux PC, NAS Synology), c’est quasi gratuit à part l’électricité.

Ce que PhotoPrism fait aussi bien que Google

Ce que Google fait mieux (restons honnêtes)

Mais pour la majorité des usages personnels, PhotoPrism couvre 90% des besoins sans vendre ton âme.

PhotoPrism vs Google Photos vs Immich vs LibrePhotos

CritèrePhotoPrismGoogle PhotosImmichLibrePhotos
Auto-hébergéOuiNon (SaaS)OuiOui
PrixGratuit2-25€/moisGratuitGratuit
LicenceAGPL v3PropriétaireAGPL v3AGPL v3
Reconnaissance facialeOui (IA locale)Oui (cloud)Oui (IA locale)Oui (IA locale)
Recherche sémantiqueOuiOui (puissante)OuiLimitée
Import autoOui (dossier surveillé)Oui (sync)OuiOui
RAW supportOui (Darktable/RawTherapee)NonOuiOui
Vidéos HEVCOui (FFmpeg)OuiOuiOui
Map/GeoOpenStreetMapGoogle MapsOpenStreetMapOpenStreetMap
App mobileWeb PWANative excellenteNative (beta)Web PWA
Multi-utilisateurOuiOuiOuiOui
Partage externeLiens sécurisésLiens + albumsLiensLiens
Ressources RAM2-4 GoN/A (cloud)2-4 Go2 Go
Facilité install⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐

Mon choix : PhotoPrism pour la maturité du projet (5+ ans), la stabilité, et l’interface soignée. Immich est excellent mais encore très en mouvement, l’API et la base de données changent régulièrement. Si tu veux quelque chose qui tourne sans y toucher pendant 6 mois, PhotoPrism est plus sage.

Prérequis

Installation de PhotoPrism avec Docker Compose

On part sur une stack complète photoprism docker : PhotoPrism + MariaDB. SQLite fonctionne pour les petites collections, mais MariaDB est recommandé dès que tu dépasses 5 000 photos.

Crée un dossier dédié :

mkdir -p ~/photoprism && cd ~/photoprism

Crée le fichier docker-compose.yml :

services:
  photoprism:
    image: photoprism/photoprism:260601
    container_name: photoprism
    restart: unless-stopped
    stop_grace_period: 10s
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    ports:
      - "2342:2342"
    environment:
      PHOTOPRISM_ADMIN_USER: "admin"
      PHOTOPRISM_ADMIN_PASSWORD: "TON_MOT_DE_PASSE_FORT"
      PHOTOPRISM_AUTH_MODE: "password"
      PHOTOPRISM_SITE_URL: "https://photos.tondomaine.fr"
      PHOTOPRISM_SITE_TITLE: "Ma Galerie"
      PHOTOPRISM_SITE_CAPTION: "Photos"
      PHOTOPRISM_SITE_DESCRIPTION: ""
      PHOTOPRISM_SITE_AUTHOR: "Ton Nom"
      PHOTOPRISM_FOLDERS_PATH: "/photoprism/originals"
      PHOTOPRISM_STORAGE_PATH: "/photoprism/storage"
      PHOTOPRISM_ORIGINALS_PATH: "/photoprism/originals"
      PHOTOPRISM_IMPORT_PATH: "/photoprism/import"
      PHOTOPRISM_DATABASE_DRIVER: "mysql"
      PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
      PHOTOPRISM_DATABASE_NAME: "photoprism"
      PHOTOPRISM_DATABASE_USER: "photoprism"
      PHOTOPRISM_DATABASE_PASSWORD: "MOT_DE_PASSE_MARIADB"
      PHOTOPRISM_FFMPEG_ENCODER: "intel"       # Change par "nvidia" ou "software" si besoin
      PHOTOPRISM_FFMPEG_BITRATE: "32"
      PHOTOPRISM_INIT: "gpu tensorflow"
      PHOTOPRISM_UID: 1000
      PHOTOPRISM_GID: 1000
      PHOTOPRISM_UMASK: "0002"
    working_dir: "/photoprism"
    volumes:
      - "./storage:/photoprism/storage"
      - "/chemin/vers/tes/photos:/photoprism/originals"
      - "./import:/photoprism/import"
      - "/etc/localtime:/etc/localtime:ro"
    devices:
      - "/dev/dri:/dev/dri"                     # Intel QSV / VA-API
      # - "/dev/nvidia0:/dev/nvidia0"           # Décommente pour NVIDIA
      # - "/dev/nvidiactl:/dev/nvidiactl"
      # - "/dev/nvidia-modeset:/dev/nvidia-modeset"
      # - "/dev/nvidia-uvm:/dev/nvidia-uvm"
      # - "/dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools"
    depends_on:
      - mariadb
    networks:
      - photoprism-net

  mariadb:
    image: mariadb:10.11
    container_name: photoprism_mariadb
    restart: unless-stopped
    stop_grace_period: 5s
    security_opt:
      - seccomp:unconfined
      - apparmor:unconfined
    command: >
      mysqld
      --innodb-buffer-pool-size=512M
      --transaction-isolation=READ-COMMITTED
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --max-connections=512
      --innodb-rollback-on-timeout=OFF
      --innodb-lock-wait-timeout=120
    volumes:
      - "./database:/var/lib/mysql"
    environment:
      MARIADB_DATABASE: "photoprism"
      MARIADB_USER: "photoprism"
      MARIADB_PASSWORD: "MOT_DE_PASSE_MARIADB"
      MARIADB_ROOT_PASSWORD: "ROOT_PASSWORD_MARIADB"
    networks:
      - photoprism-net

  ## Optionnel : proxy inverse Caddy pour HTTPS
  # caddy:
  #   image: caddy:2
  #   container_name: photoprism_caddy
  #   restart: unless-stopped
  #   ports:
  #     - "80:80"
  #     - "443:443"
  #   volumes:
  #     - ./Caddyfile:/etc/caddy/Caddyfile
  #     - caddy_data:/data
  #     - caddy_config:/config
  #   networks:
  #     - photoprism-net

networks:
  photoprism-net:
    driver: bridge

⚠️ Remplace les valeurs avant de lancer :

Lance la stack :

docker compose up -d

Attends 30 secondes que MariaDB démarre, puis accède à http://IP_DU_SERVEUR:2342. Connecte-toi avec admin et ton mot de passe.

Configuration initiale

Premier indexage

Quand tu te connectes pour la première fois, PhotoPrism te demande d’indexer tes photos. Clique sur “Library” puis “Start” dans la section Index. Selon le nombre de photos, ça prend entre 5 minutes et 2 heures.

PhotoPrism va :

Paramètres essentiels à modifier

Dans “Settings” :

Performance et indexation IA

La première indexation est gourmande. Si tu as un Intel récent avec iGPU, l’accélération matérielle QSV accélère énormément la génération des vignettes et la reconnaissance faciale.

Si tu vois des erreurs tensorflow dans les logs, vérifie que le dossier storage a les bonnes permissions :

docker compose exec photoprism chmod -R 755 /photoprism/storage

Organisation des photos et workflows

Originals vs Import

PhotoPrism gère deux modes :

  1. Originals (/photoprism/originals) : tes photos existantes, PhotoPrism les lit sans les toucher. C’est le mode recommandé si tu as déjà une arborescence organisée.
  2. Import (/photoprism/import) : dossier temporaire où tu jettes les photos depuis ton téléphone. PhotoPrism les déplace automatiquement dans originals en les renommant et triant par date.

Mon workflow perso :

Albums, favoris et labels

Une fois indexé, tu peux :

La recherche texte fonctionne en anglais par défaut. Tape “beach” plutôt que “plage” pour de meilleurs résultats.

Sauvegarde de ta galerie

PhotoPrism ne sauvegarde pas tes photos, il les affiche. Si ton disque crashe, tes photos disparaissent. Tu dois avoir une stratégie de backup.

Mon setup recommandé :

Si tu utilises déjà Duplicati, j’ai un guide complet pour le déployer en Docker. Ajoute simplement trois sources à ta tâche de backup :

  1. Le dossier de tes photos originales
  2. Le dossier database/ de MariaDB (ou un dump SQL quotidien)
  3. Le dossier storage/ de PhotoPrism

Sécurisation de l’accès

PhotoPrism expose une interface web. Ne la laisse jamais ouverte sur Internet sans HTTPS et sans authentification.

Checklist sécurité

Pour isoler PhotoPrism dans un .env :

# .env
PHOTOPRISM_ADMIN_PASSWORD="super_mot_de_passe_secure_1234"

Puis remplace les valeurs en dur dans le docker-compose.yml par ${PHOTOPRISM_ADMIN_PASSWORD}.

Dépannage courant

L’indexation bloque ou est très lente

Vérifie les ressources RAM. PhotoPrism avec TensorFlow pour la reconnaissance faciale consomme 1.5-2.5 Go de RAM. Si tu as moins, désactive l’IA dans Settings > Advanced > Disable TensorFlow.

Les photos n’apparaissent pas après import

PhotoPrism indexe par défaut uniquement les formats supportés. Vérifie que tes fichiers ne sont pas dans un sous-dossier ignoré (nom commençant par . ou @). Force un nouvel indexage avec “Complete Rescan” dans Library.

Erreur de connexion à MariaDB

Les logs disent “connection refused” ? MariaDB met 20-30 secondes à démarrer la première fois. Attends un peu et relance PhotoPrism :

docker compose restart photoprism

Les thumbnails ne se génèrent pas

Vérifie l’espace disque dans ./storage. PhotoPrism génère plusieurs tailles de thumbnails (XS à XL). Pour 10 000 photos, prévois 5-10 Go de cache thumbnails.

Conclusion

PhotoPrism n’est pas Google Photos. L’app mobile n’est pas aussi fluide, le partage familial est moins poussé, et tu dois gérer toi-même le serveur et les backups.

Mais pour tout le reste ? C’est une bête. Reconnaissance faciale locale, recherche sémantique, cartographie GPS, support RAW, zero tracking, zero abonnement. Tes photos restent tes photos.

Si tu as déjà un serveur Docker qui tourne pour Nextcloud ou Miniflux, ajouter PhotoPrism prend 10 minutes. Le coût marginal est quasi nul, et le gain en indépendance numérique est énorme.

Installe-le, indexe tes photos, et redécouvre des souvenirs que tu avais oubliés. Sans algorithme qui décide ce que tu dois voir.

Next
Caddy Docker : le reverse proxy HTTPS automatique en 5 minutes