services:

# Photos
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:$IMMICH_VERSION
    # extends:
    #   file: hwaccel.transcoding.yml
    #   service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
    volumes:
      # Do not edit the next line. If you want to change the media storage location on your system, edit the value of UPLOAD_LOCATION in the stack.env file
      - $UPLOAD_LOCATION:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
    env_file:
      - stack.env
    ports:
      - '2283:2283'
    depends_on:
      - redis
      - database
    restart: always
    healthcheck:
      disable: false

  immich-machine-learning:
    container_name: immich_machine_learning
    # For hardware acceleration, add one of -[armnn, cuda, rocm, openvino, rknn] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:$IMMICH_VERSION
    # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
    #   file: hwaccel.ml.yml
    #   service: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - $MODEL_CACHE_LOCATION:/cache
    env_file:
      - stack.env
    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/valkey/valkey:8-bookworm@sha256:ff21bc0f8194dc9c105b769aeabf9585fea6a8ed649c0781caeac5cb3c247884
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: ghcr.io/immich-app/postgres:14-vectorchord0.3.0-pgvectors0.2.0@sha256:fa4f6e0971f454cd95fec5a9aaed2ed93d8f46725cc6bc61e0698e97dba96da1
    restart: always
    environment:
      POSTGRES_PASSWORD: $DB_PASSWORD
      POSTGRES_USER: $DB_USERNAME
      POSTGRES_DB: $DB_DATABASE_NAME
      POSTGRES_INITDB_ARGS: '--data-checksums'
      # Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
      # DB_STORAGE_TYPE: 'HDD'
    volumes:
      # Do not edit the next line. If you want to change the database storage location on your system, edit the value of DB_DATA_LOCATION in the .env file
      - $DB_DATA_LOCATION:/var/lib/postgresql/data

      
# Video
  jellyfin:
    image: jellyfin/jellyfin:latest
    container_name: jellyfin
    restart: unless-stopped
    network_mode: host
    ports:
      - 8096:8096
    volumes:
      - /share/Container/docker_volumes/jellyfin:/config
      - /share/Container/docker_volumes/jellyfin/cache:/cache
      - /share/TV/:/TV
      - /share/Movies:/Movies
      - /share/Music:/Music
    environment:
      - PUID=0
      - PGID=0
      - TZ=America/New_York

# Music
  navidrome:
    image: deluan/navidrome:latest
    container_name: navidrome
    restart: unless-stopped
    network_mode: host
    ports:
      - 4533:4533
    #user: 1000:1000 # should be owner of volumes
    volumes:
      - /share/Container/docker_volumes/navidrome/data:/data
      - /share/Music/FullCDs:/music:ro
    #environment:
      # Optional: put your config options customization here. Examples:
      #-  ND_SCANSCHEDULE: 1h
      #-  ND_LOGLEVEL: info
      #-  ND_SESSIONTIMEOUT: 24h
      #-  ND_BASEURL: ""
    logging:
      options:
        max-size: "10m"
        max-file: "3"

# E-Books
  kavita:
    image: jvmilazz0/kavita:latest
    container_name: kavita
    restart: unless-stopped
    network_mode: host
    ports:
      - 5000:5000
    volumes:
      - /share/Container/docker_volumes/kavita/manga:/manga
      - /share/Container/docker_volumes/kavita/data:/kavita/config
      - /share/books/ebooks:/books
    logging:
      options:
        max-size: "10m"
        max-file: "3"

# Audiobooks:
  audiobookshelf:
    image: ghcr.io/advplyr/audiobookshelf:latest
    container_name: audiobookshelf
    restart: unless-stopped
    network_mode: host
    ports:
      - 5050:80
    volumes:
      - /share/Container/docker_volumes/audiobookshelf:/podcasts
      - /share/Container/docker_volumes/audiobookshelf/config:/config
      - /share/Container/docker_volumes/audiobookshelf/metadata:/metadata
      - /share/books/abooks:/audiobooks
    environment:
      - TZ=America/New_York
    logging:
      options:
        max-size: "10m"
        max-file: "3"