Afficher les derniers auteurs
| author | version | line-number | content |
|---|---|---|---|
| 1 | 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. | ||
| 2 | |||
| 3 | == Architecture == | ||
| 4 | |||
| 5 | |=Conteneur|=Rôle | ||
| 6 | |immich_server|Application web et API | ||
| 7 | |immich_postgres|Base PostgreSQL (image Immich avec extensions vectorielles) | ||
| 8 | |immich_redis|File de tâches (Valkey) | ||
| 9 | |||
| 10 | Pas de conteneur ##immich-machine-learning## : la recherche intelligente et la reconnaissance faciale sont indisponibles. | ||
| 11 | |||
| 12 | == Variables d'environnement == | ||
| 13 | |||
| 14 | |=Variable|=Rôle | ||
| 15 | |##IMMICH_VERSION##|Version suivie de l'image serveur (##v3##) | ||
| 16 | |##UPLOAD_LOCATION##|Bibliothèque de photos et vidéos, dans ##<DOSSIER_IMMICH>## | ||
| 17 | |##DB_DATA_LOCATION##|Fichiers bruts de la base, dans ##<DOSSIER_IMMICH>## | ||
| 18 | |##DB_USERNAME##, ##DB_PASSWORD##, ##DB_DATABASE_NAME##|Accès à la base | ||
| 19 | |##TZ##|Fuseau horaire | ||
| 20 | |||
| 21 | == Stack == | ||
| 22 | |||
| 23 | {{code language="yaml"}} | ||
| 24 | name: immich | ||
| 25 | |||
| 26 | networks: | ||
| 27 | immich: | ||
| 28 | name: immich | ||
| 29 | proxy: | ||
| 30 | external: true | ||
| 31 | |||
| 32 | services: | ||
| 33 | immich-server: | ||
| 34 | container_name: immich_server | ||
| 35 | image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} | ||
| 36 | volumes: | ||
| 37 | - ${UPLOAD_LOCATION}:/data | ||
| 38 | - /etc/localtime:/etc/localtime:ro | ||
| 39 | environment: | ||
| 40 | DB_HOSTNAME: database | ||
| 41 | DB_USERNAME: ${DB_USERNAME} | ||
| 42 | DB_PASSWORD: ${DB_PASSWORD} | ||
| 43 | DB_DATABASE_NAME: ${DB_DATABASE_NAME} | ||
| 44 | REDIS_HOSTNAME: redis | ||
| 45 | TZ: ${TZ} | ||
| 46 | networks: | ||
| 47 | - immich | ||
| 48 | - proxy | ||
| 49 | ports: | ||
| 50 | - '2283:2283' | ||
| 51 | depends_on: | ||
| 52 | - redis | ||
| 53 | - database | ||
| 54 | restart: always | ||
| 55 | healthcheck: | ||
| 56 | disable: false | ||
| 57 | |||
| 58 | redis: | ||
| 59 | container_name: immich_redis | ||
| 60 | image: docker.io/valkey/valkey:9@sha256:4963247afc4cd33c7d3b2d2816b9f7f8eeebab148d29056c2ca4d7cbc966f2d9 | ||
| 61 | networks: | ||
| 62 | - immich | ||
| 63 | healthcheck: | ||
| 64 | test: redis-cli ping || exit 1 | ||
| 65 | restart: always | ||
| 66 | |||
| 67 | database: | ||
| 68 | container_name: immich_postgres | ||
| 69 | image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23 | ||
| 70 | environment: | ||
| 71 | POSTGRES_PASSWORD: ${DB_PASSWORD} | ||
| 72 | POSTGRES_USER: ${DB_USERNAME} | ||
| 73 | POSTGRES_DB: ${DB_DATABASE_NAME} | ||
| 74 | POSTGRES_INITDB_ARGS: '--data-checksums' | ||
| 75 | volumes: | ||
| 76 | - ${DB_DATA_LOCATION}:/var/lib/postgresql/data | ||
| 77 | networks: | ||
| 78 | - immich | ||
| 79 | shm_size: 128mb | ||
| 80 | restart: always | ||
| 81 | healthcheck: | ||
| 82 | disable: false | ||
| 83 | {{/code}} | ||
| 84 | |||
| 85 | 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. | ||
| 86 | |||
| 87 | == Accès == | ||
| 88 | |||
| 89 | Publié par SWAG avec le sample fourni : | ||
| 90 | |||
| 91 | {{code language="bash"}} | ||
| 92 | cp immich.subdomain.conf.sample immich.subdomain.conf | ||
| 93 | {{/code}} | ||
| 94 | |||
| 95 | Dans le fichier copié, corriger ##$upstream_app## en ##immich_server## : le sample attend un conteneur nommé ##immich##. | ||
| 96 | |||
| 97 | == Mise à jour == | ||
| 98 | |||
| 99 | 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. | ||
| 100 | |||
| 101 | == Sauvegarde == | ||
| 102 | |||
| 103 | * Base : dump SQL de ##immich_postgres## par le script de [[Sauvegarde>>Wiki Batcave John.Infrastructure.Sauvegarde.WebHome]]. | ||
| 104 | * Photos et vidéos : ##<DOSSIER_IMMICH>/library##, ajouté comme second chemin source du script, car il se trouve hors du dossier des conteneurs. | ||
| 105 | * Les fichiers bruts de la base ne sont pas sauvegardés : le dump suffit. |