Rayon Fichiers et photos

Immich

L’alternative à Google Photos.

Ajouter à mon serveurGénérer le docker-composeLire le guide pas à pasComparer avec les alternativesDocumentation officielle

À quoi ça sert ?

Immich sauvegarde automatiquement les photos et vidéos de votre téléphone, avec une interface très proche de Google Photos : reconnaissance des visages, recherche par contenu (« plage », « chien »), carte, albums partagés.

Pour qui ?

Les familles qui veulent récupérer leurs photos de Google ou iCloud.

Bon à savoir

La documentation officielle recommande au moins 6 Go de RAM sur le serveur, idéalement 8 Go : la reconnaissance des visages est gourmande.

Les photos prennent vite de la place : prévoyez un disque assez grand.

Après l'installation

  1. Tout de suite après l’installation, ouvrez l’adresse du site et créez le compte administrateur : tant qu’il n’existe pas, le premier visiteur peut le créer.
  2. Installez l’application Immich sur votre téléphone et activez la sauvegarde automatique.

Le docker-compose

Exemple derrière Traefik, avec une explication sur chaque ligne. Pour l'adapter à votre cas (Nginx Proxy Manager, port local…), utilisez le générateur.

# docker-compose.yml : Immich
# Ce fichier décrit les « conteneurs » à lancer : chaque conteneur est une petite
# boîte isolée qui contient un programme. Lancez-le avec : docker compose up -d
services:
  # Conteneur principal : l'application Immich
  immich-server:
    # Le programme à télécharger (l'« image »), avec sa version
    image: ghcr.io/immich-app/immich-server:release
    container_name: immich
    # Redémarre tout seul après une panne ou un redémarrage du serveur
    restart: unless-stopped
    # Démarre ces conteneurs avant celui-ci
    depends_on:
      - redis
      - database
    # Réglages de l'application. Les valeurs ${...} viennent du fichier .env
    environment:
      DB_PASSWORD: "${DB_PASSWORD}"
      DB_USERNAME: postgres
      DB_DATABASE_NAME: immich
      TZ: Europe/Paris
    # Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
    # Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
    volumes:
      - ./library:/data
      - /etc/localtime:/etc/localtime:ro
    # Réseau partagé avec le reverse proxy pour qu'il puisse joindre l'application
    networks:
      - traefik
      - default
    # Indique à Traefik de publier l'application sur https://photos.mondomaine.fr avec un certificat HTTPS
    labels:
      - traefik.enable=true
      - traefik.http.routers.immich.rule=Host(`photos.mondomaine.fr`)
      - traefik.http.routers.immich.entrypoints=websecure
      - traefik.http.routers.immich.tls.certresolver=letsencrypt
      - traefik.http.services.immich.loadbalancer.server.port=2283
      - traefik.docker.network=traefik

  # Conteneur annexe « immich-machine-learning » (utilisé par l'application, pas accessible de l'extérieur)
  immich-machine-learning:
    # Le programme à télécharger (l'« image »), avec sa version
    image: ghcr.io/immich-app/immich-machine-learning:release
    container_name: immich-immich-machine-learning
    # Redémarre tout seul après une panne ou un redémarrage du serveur
    restart: unless-stopped
    # Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
    # Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
    volumes:
      - ./model-cache:/cache

  # Conteneur annexe « redis » (utilisé par l'application, pas accessible de l'extérieur)
  redis:
    # Le programme à télécharger (l'« image »), avec sa version
    image: docker.io/valkey/valkey:9@sha256:70739f85ad2ee01a726a965584a0f94895f01b0c60b3cc8b0aeef11eaa6888cf
    container_name: immich-redis
    # Redémarre tout seul après une panne ou un redémarrage du serveur
    restart: unless-stopped
    # Empêche un programme piraté de devenir administrateur
    security_opt:
      - no-new-privileges:true

  # Conteneur annexe « database » (utilisé par l'application, pas accessible de l'extérieur)
  database:
    # Le programme à télécharger (l'« image »), avec sa version
    image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
    container_name: immich-database
    # Redémarre tout seul après une panne ou un redémarrage du serveur
    restart: unless-stopped
    shm_size: 128mb
    # Réglages de l'application. Les valeurs ${...} viennent du fichier .env
    environment:
      POSTGRES_PASSWORD: "${DB_PASSWORD}"
      POSTGRES_USER: postgres
      POSTGRES_DB: immich
      POSTGRES_INITDB_ARGS: --data-checksums
    # Dossiers du serveur partagés avec le conteneur (dossier_serveur:dossier_conteneur).
    # Vos données sont stockées ici : ce sont ces dossiers qu'il faut sauvegarder.
    volumes:
      - ./postgres:/var/lib/postgresql/data
# Le réseau du reverse proxy existe déjà : on s'y raccroche

networks:
  traefik:
    external: true