118 lines
3.6 KiB
YAML
118 lines
3.6 KiB
YAML
# Immich - Photo/video backup solution
|
|
# URL: https://photos.vishconcord.synology.me
|
|
# Port: 2283
|
|
# Google Photos alternative with ML-powered features
|
|
#
|
|
# IMPORTANT: Portainer git deploy does NOT load env_file references.
|
|
# All env vars from stack.env MUST be set as Portainer stack environment
|
|
# overrides. Without them, DB_HOSTNAME defaults to "database" (Immich v2.6.2+)
|
|
# causing "getaddrinfo ENOTFOUND database" crashes.
|
|
# Fixed 2026-03-27: env vars added as Portainer stack overrides via API.
|
|
|
|
services:
|
|
immich-redis:
|
|
image: redis
|
|
container_name: Immich-REDIS
|
|
hostname: immich-redis
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
|
|
user: 1026:100
|
|
env_file:
|
|
- stack.env
|
|
environment:
|
|
- TZ=${TZ}
|
|
volumes:
|
|
- /volume1/docker/immich/redis:/data:rw
|
|
restart: on-failure:5
|
|
|
|
immich-db:
|
|
image: ghcr.io/immich-app/postgres:16-vectorchord0.4.3-pgvectors0.2.0
|
|
container_name: Immich-DB
|
|
hostname: immich-db
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
env_file:
|
|
- stack.env
|
|
healthcheck:
|
|
test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE_NAME}", "-U", "${DB_USERNAME}"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
shm_size: 128mb
|
|
volumes:
|
|
- /volume1/docker/immich/db:/var/lib/postgresql/data:rw
|
|
environment:
|
|
- TZ=${TZ}
|
|
- POSTGRES_DB=${DB_DATABASE_NAME}
|
|
- POSTGRES_USER=${DB_USERNAME}
|
|
- POSTGRES_PASSWORD="REDACTED_PASSWORD"
|
|
- DB_STORAGE_TYPE=HDD
|
|
restart: on-failure:5
|
|
|
|
immich-server:
|
|
image: ghcr.io/immich-app/immich-server:release
|
|
container_name: Immich-SERVER
|
|
hostname: immich-server
|
|
user: 1026:100
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
env_file:
|
|
- stack.env
|
|
environment:
|
|
- NODE_ENV=${NODE_ENV}
|
|
- TZ=${TZ}
|
|
- DB_HOSTNAME=${DB_HOSTNAME}
|
|
- DB_USERNAME=${DB_USERNAME}
|
|
- DB_PASSWORD="REDACTED_PASSWORD"
|
|
- DB_DATABASE_NAME=${DB_DATABASE_NAME}
|
|
- REDIS_HOSTNAME=${REDIS_HOSTNAME}
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- IMMICH_CONFIG_FILE=/config/immich-config.json
|
|
ports:
|
|
- 8212:2283
|
|
volumes:
|
|
- /volume1/docker/immich/upload:/data:rw
|
|
- /volume1/docker/immich/external_photos/photos:/external/photos:rw
|
|
- /volume1/docker/immich/config/immich-config.json:/config/immich-config.json:ro
|
|
restart: on-failure:5
|
|
depends_on:
|
|
immich-redis:
|
|
condition: service_healthy
|
|
immich-db:
|
|
condition: service_started
|
|
|
|
immich-machine-learning:
|
|
image: ghcr.io/immich-app/immich-machine-learning:release
|
|
container_name: Immich-LEARNING
|
|
hostname: immich-machine-learning
|
|
user: 1026:100
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
env_file:
|
|
- stack.env
|
|
environment:
|
|
- NODE_ENV=${NODE_ENV}
|
|
- TZ=${TZ}
|
|
- DB_HOSTNAME=${DB_HOSTNAME}
|
|
- DB_USERNAME=${DB_USERNAME}
|
|
- DB_PASSWORD="REDACTED_PASSWORD"
|
|
- DB_DATABASE_NAME=${DB_DATABASE_NAME}
|
|
- REDIS_HOSTNAME=${REDIS_HOSTNAME}
|
|
- LOG_LEVEL=${LOG_LEVEL}
|
|
- JWT_SECRET=${JWT_SECRET}
|
|
- MPLCONFIGDIR=/matplotlib
|
|
volumes:
|
|
- /volume1/docker/immich/upload:/data:rw
|
|
- /volume1/docker/immich/external_photos/photos:/external/photos:rw
|
|
- /volume1/docker/immich/cache:/cache:rw
|
|
- /volume1/docker/immich/cache:/.cache:rw
|
|
- /volume1/docker/immich/cache:/.config:rw
|
|
- /volume1/docker/immich/matplotlib:/matplotlib:rw
|
|
restart: on-failure:5
|
|
depends_on:
|
|
immich-db:
|
|
condition: service_started
|