immich-server: image: ghcr.io/immich-app/immich-server:release container_name: immich-server hostname: immich-server ports: - 2283:2283 devices: #Remove this if your NAS does not have a GPU. - /dev/dri:/dev/dri volumes: - /volume1/media:/data:rw #Edit to your own folder environment: TZ: Europe/Amsterdam #Your own timezone DB_HOSTNAME: immich-db DB_USERNAME: immichuser DB_PASSWORD: immichpasswd DB_DATABASE_NAME: immich REDIS_HOSTNAME: immich-redis IMMICH_LOG_LEVEL: log IMMICH_ENV: production DB_STORAGE_TYPE: HDD #Change to SSD if you have SSD drives. IMMICH_HOST: 0.0.0.0 IMMICH_PORT: 2283 restart: always depends_on: - immich-redis - immich-db healthcheck: disable: false networks: - synobridge immich-machine-learning: image: ghcr.io/immich-app/immich-machine-learning:release container_name: immich-learning hostname: immich-machine-learning volumes: - /volume1/docker/immich/cache:/cache:rw - /volume1/docker/immich/matplotlib:/matplotlib:rw environment: TZ: Europe/Amsterdam #Your own timezone LOG_LEVEL: info MACHINE_LEARNING_PORT: 3003 MACHINE_LEARNING_CACHE_FOLDER: /cache MACHINE_LEARNING_MODEL_TTL: 300 MACHINE_LEARNING_MODEL_TTL_POLL_S: 10 MACHINE_LEARNING_REQUEST_THREADS: 0 MACHINE_LEARNING_MODEL_INTER_OP_THREADS: 1 MACHINE_LEARNING_MODEL_INTRA_OP_THREADS: 2 MACHINE_LEARNING_WORKERS: 1 MACHINE_LEARNING_HTTP_KEEPALIVE_TIMEOUT_S: 2 MACHINE_LEARNING_WORKER_TIMEOUT: 120 MACHINE_LEARNING_PRELOAD__CLIP__TEXTUAL: ViT-B-32__openai MACHINE_LEARNING_PRELOAD__CLIP__VISUAL: ViT-B-32__openai MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__RECOGNITION: buffalo_l MACHINE_LEARNING_PRELOAD__FACIAL_RECOGNITION__DETECTION: buffalo_l MACHINE_LEARNING_ANN: True MACHINE_LEARNING_ANN_FP16_TURBO: False MACHINE_LEARNING_ANN_TUNING_LEVEL: 2 MACHINE_LEARNING_DEVICE_IDS: 0 MACHINE_LEARNING_RKNN: True MACHINE_LEARNING_RKNN_THREADS: 1 ports: - 3003:3003 restart: always healthcheck: disable: false networks: - synobridge immich-redis: image: valkey/valkey:9.0 container_name: immich-redis hostname: immich-redis volumes: - /volume1/docker/immich/redis:/data:rw healthcheck: test: ["CMD-SHELL", "redis-cli ping || exit 1"] restart: always networks: - synobridge immich-db: image: ghcr.io/immich-app/postgres:18-vectorchord0.5.3-pgvector0.8.1 container_name: immich_postgres hostname: immich-postgres shm_size: 128mb volumes: - /volume1/docker/immich/db:/var/lib/postgresql:rw environment: TZ: Europe/Amsterdam #Your own timezone. POSTGRES_DB: immich POSTGRES_USER: immichuser POSTGRES_PASSWORD: immichpasswd POSTGRES_INITDB_ARGS: '--data-checksums' restart: always networks: - synobridge immich-folder-album-creator: container_name: immich_folder_album_creator image: salvoxia/immich-folder-album-creator:latest restart: always networks: - synobridge volumes: - /volume1/media:/external_libs/photos:rw #Edit to your own folder environment: TZ: Europe/Amsterdam #Your own timezone. API_URL: http://immich-server:2283/api/ API_KEY: "Your_API_key" # After first deploy, start Immich and create an API key with these permissions. Copy the API key and paste it here, then redeploy. # Needs permissions: # asset: # asset.read # asset.update # asset.delete # album: # album.create # album.read # album.update # album.delete # albumAsset: # albumAsset.create # albumUser: # albumUser.create # albumUser.delete # alumUser.delete # user: # user.read ROOT_PATH: /external_libs/photos CRON_EXPRESSION: "0 */6 * * *" # run every 6 hours RUN_IMMEDIATELY: true # run once on container start ALBUM_LEVELS: 3 # number of subfolder levels for albums ALBUM_NAME_PREFIX: "Family_" ALBUM_NAME_SUFFIX: "_2025" SHARE_WITH: "user1,user2" # users to share new albums with SHARE_ROLE: "editor" # role for shared albums SYNC_MODE: "2" # delete offline assets & empty albums SET_ALBUM_THUMBNAIL: first # first image as thumbnail LOG_LEVEL: DEBUG # logging level depends_on: - immich-server