Immich
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
| Conteneur | Rôle |
|---|---|
| immich_server | Application web et API |
| immich_postgres | Base PostgreSQL (image Immich avec extensions vectorielles) |
| immich_redis | File de tâches (Valkey) |
Pas de conteneur immich-machine-learning : la recherche intelligente et la reconnaissance faciale sont indisponibles.
Variables d'environnement
| Variable | Rôle |
|---|---|
| IMMICH_VERSION | Version suivie de l'image serveur (v3) |
| UPLOAD_LOCATION | Bibliothèque de photos et vidéos, dans <DOSSIER_IMMICH> |
| DB_DATA_LOCATION | Fichiers bruts de la base, dans <DOSSIER_IMMICH> |
| DB_USERNAME, DB_PASSWORD, DB_DATABASE_NAME | Accès à la base |
| TZ | Fuseau horaire |
Stack
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 :
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.