Rayon Fichiers et photos

Immich

L’alternative à Google Photos.

Ajouter à mon serveurGénérer le docker-composeDocumentation 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. Ouvrez l’adresse du site et créez le compte administrateur.
  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