0 Votes

Immich

Modifié par john le 2026/09/18 21:05

Photothèque auto-hébergée (photos et vidéos), déployée sans le service de machine-learning : seul le stockage et la consultation sont utilisés.

Architecture

ConteneurRôle
immich_serverApplication web et API
immich_postgresBase PostgreSQL (image Immich avec extensions vectorielles)
immich_redisFile de tâches (Valkey)

Pas de conteneur immich-machine-learning : la recherche intelligente et la reconnaissance faciale sont indisponibles.

Variables d'environnement

VariableRôle
IMMICH_VERSIONVersion suivie de l'image serveur (v3)
UPLOAD_LOCATIONBibliothèque de photos et vidéos, dans <DOSSIER_IMMICH>
DB_DATA_LOCATIONFichiers bruts de la base, dans <DOSSIER_IMMICH>
DB_USERNAME, DB_PASSWORD, DB_DATABASE_NAMEAccès à la base
TZFuseau horaire

Stack

name: immich

networks:
 immich:
   name: immich
 proxy:
   external: true

services:
 immich-server:
   container_name: immich_server
   image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
   volumes:
      - ${UPLOAD_LOCATION}:/data
      - /etc/localtime:/etc/localtime:ro
   environment:
     DB_HOSTNAME: database
     DB_USERNAME: ${DB_USERNAME}
     DB_PASSWORD: ${DB_PASSWORD}
     DB_DATABASE_NAME: ${DB_DATABASE_NAME}
     REDIS_HOSTNAME: redis
     TZ: ${TZ}
   networks:
      - immich
      - proxy
   ports:
      - '2283:2283'
   depends_on:
      - redis
      - database
   restart: always
   healthcheck:
     disable: false

 redis:
   container_name: immich_redis
   image: docker.io/valkey/valkey:9@sha256:4963247afc4cd33c7d3b2d2816b9f7f8eeebab148d29056c2ca4d7cbc966f2d9
   networks:
      - immich
   healthcheck:
     test: redis-cli ping || exit 1
   restart: always

 database:
   container_name: immich_postgres
   image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23
   environment:
     POSTGRES_PASSWORD: ${DB_PASSWORD}
     POSTGRES_USER: ${DB_USERNAME}
     POSTGRES_DB: ${DB_DATABASE_NAME}
     POSTGRES_INITDB_ARGS: '--data-checksums'
   volumes:
      - ${DB_DATA_LOCATION}:/var/lib/postgresql/data
   networks:
      - immich
   shm_size: 128mb
   restart: always
   healthcheck:
     disable: false

Les images de Valkey et de PostgreSQL sont épinglées par empreinte SHA256, comme dans le compose officiel de chaque version : elles ne changent jamais d'elles-mêmes.

Accès

Publié par SWAG avec le sample fourni :

cp immich.subdomain.conf.sample immich.subdomain.conf

Dans le fichier copié, corriger $upstream_app en immich_server : le sample attend un conteneur nommé immich.

Mise à jour

Lire les notes de version avant chaque mise à jour : Immich introduit régulièrement des changements incompatibles. Pour une nouvelle version majeure, reprendre le docker-compose.yml publié avec la version, en particulier les empreintes des images de base de données, puis retirer à nouveau le service de machine-learning.

Sauvegarde

  • Base : dump SQL de immich_postgres par le script de Sauvegarde.
  • Photos et vidéos : <DOSSIER_IMMICH>/library, ajouté comme second chemin source du script, car il se trouve hors du dossier des conteneurs.
  • Les fichiers bruts de la base ne sont pas sauvegardés : le dump suffit.