immich-app / immich

High performance self-hosted photo and video management solution.
https://immich.app
GNU Affero General Public License v3.0
39.44k stars 1.87k forks source link

[BUG] Attempting to download a live photo fails on iOS #4651

Open Ashton210z opened 8 months ago

Ashton210z commented 8 months ago

The bug

Downloading live photos on the mobile app seems to throw a "Download error". Downloading a regular photo works fine. This seems to occur whether it is my phone that i've uploaded the photo from, or another iOS user in a shared library. Live photo downloads on a PC from the immich server just fine Attempted to access the webpage with the browser on iOS, downloads .heic file but .mov file fails.

The OS that Immich Server is running on

DSM/Synology

Version of Immich Server

1.82.1

Version of Immich Mobile App

v1.82.0 build.121

Platform with the issue

Your docker-compose.yml content

version: "3.9"
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: 1027:100
    environment:
      - TZ=America/Los_Angeles
    volumes:
      - /volume1/docker/immich/redis:/data
    restart: on-failure:5

  immich-db:
    image: postgres
    container_name: Immich-DB
    hostname: immich-db
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD", "pg_isready", "-q", "-d", "immich", "-U", "immichuser"]
      interval: 10s
      timeout: 5s
      retries: 5
    user: 1027:100
    volumes:
      - /volume1/docker/immich/db:/var/lib/postgresql/data
    environment:
      - TZ=America/Los_Angeles
      - POSTGRES_DB={DB_DATABASE_NAME}
      - POSTGRES_USER={DB_USERNAME}
      - POSTGRES_PASSWORD={DB_PASSWORD}
    restart: on-failure:5

  immich-server:
    image: altran1502/immich-server:release
    command: ["start-server.sh"]
    container_name: Immich-SERVER
    hostname: immich-server
    user: 1027:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume1/docker/immich/upload:/usr/src/app/upload
    restart: on-failure:5
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started
      typesense:
        condition: service_started

  immich-microservices:
    image: altran1502/immich-server:release

    command: ["start-microservices.sh"]
    container_name: Immich-MICROSERVICES
    hostname: immich-microservices
    user: 1027:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume1/docker/immich/upload:/usr/src/app/upload
      - /volume1/docker/immich/micro:/usr/src/app/.reverse-geocoding-dump
    restart: on-failure:5
    depends_on:
      immich-redis:
        condition: service_healthy
      immich-db:
        condition: service_started
      typesense:
        condition: service_started

  immich-machine-learning:
    image: altran1502/immich-machine-learning:release
    container_name: Immich-LEARNING
    hostname: immich-machine-learning
    user: 1027:100
    security_opt:
      - no-new-privileges:true
    env_file:
      - stack.env
    volumes:
      - /volume1/docker/immich/upload:/usr/src/app/upload
      - /volume1/docker/immich/cache:/cache
    restart: on-failure:5
    depends_on:
      immich-db:
        condition: service_started

  immich-web:
    image: altran1502/immich-web:release
    container_name: Immich-WEB
    hostname: immich-web
    user: 1027:100
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: wget --no-verbose --tries=1 --spider http://localhost:3000/ || exit 1
    env_file:
      - stack.env
    restart: on-failure:5
    depends_on:
      - immich-server

  immich-proxy:
    image: altran1502/immich-proxy:release
    logging:
      driver: none
    container_name: Immich-PROXY
    hostname: immich-proxy
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: curl -f http://localhost:8080/ || exit 1
    environment:
      - IMMICH_SERVER_URL=http://immich-server:3001
      - IMMICH_WEB_URL=http://immich-web:3000
    ports:
      - 8212:8080
    restart: on-failure:5
    depends_on:
      - immich-server

  typesense:
    container_name: Immich-TYPESENSE
    image: typesense/typesense:0.25.0
    environment:
      - TYPESENSE_API_KEY=dp66t8G138VoDQnZZ0fDHR8LyFX7D1x0
      - TYPESENSE_DATA_DIR=/data
    logging:
      driver: none
    volumes:
      - /volume1/docker/immich/typesense:/data
    restart: on-failure:5

Your .env content

NODE_ENV=production
TZ=America/Los_Angeles
TYPESENSE_API_KEY=(redacted)
DB_HOSTNAME=immich-db
DB_USERNAME=(redacted)
DB_PASSWORD=(redacted)
DB_DATABASE_NAME=(redacted)
REDIS_HOSTNAME=immich-redis
LOG_LEVEL=simple
JWT_SECRET=(redacted)
DISABLE_REVERSE_GEOCODING=false
REVERSE_GEOCODING_PRECISION=3
PUBLIC_LOGIN_PAGE_MESSAGE=Hi
IMMICH_WEB_URL=http://immich-web:3000
IMMICH_SERVER_URL=http://immich-server:3001
IMMICH_MACHINE_LEARNING_URL=http://immich-machine-learning:3003

Reproduction steps

1. Upload any live photo to immich
2. Delete photo from device
3. Refresh library by dragging down, attempt to download the photo
4. "Download error"
...
Alternatively, attempt to download a live photo shared from a library of another immich user, same "Download error" occurs

Additional information

No response

zjs2k commented 8 months ago

I am having the exact issue: take a live photo with phone camera, confirm the photo sync to immich, delete photo with another app on phone (Samsung Gallery), photo disappears from immich app, refresh immich library on the phone by dragging down, try to download the photo and get "Download error".

There is no download issue if it's a regular photo, which is just a jpg file (live photo is jpg + mov). If a photo deleted from immich app, it's deleted from both phone and server, as I expected it.