À 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
- Ouvrez l’adresse du site et créez le compte administrateur.
- 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