[BUG] Image and thumbnail does not display correctly in web UI neither mobile app #1102

Closed
opened 2026-02-05 00:28:37 +03:00 by OVERLORD · 5 comments
Owner

Originally created by @sirdeniel on GitHub (Jul 14, 2023).

The bug

The image does not show correctly.

bug

The logs from immich_microservices:

Node.js v18.16.0
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [NestFactory] Starting Nest application...
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] TypeOrmModule dependencies initialized +46ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] BullModule dependencies initialized +1ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] ConfigModule dependencies initialized +11ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] BullModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:13 AM     LOG [InstanceLoader] BullModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +186ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] InfraModule dependencies initialized +11ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] DomainModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [InstanceLoader] MicroservicesModule dependencies initialized +0ms
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering thumbnailGeneration with a concurrency of 5
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering metadataExtraction with a concurrency of 3
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering videoConversion with a concurrency of 1
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering objectTagging with a concurrency of 2
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering recognizeFaces with a concurrency of 2
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering clipEncoding with a concurrency of 2
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering backgroundTask with a concurrency of 5
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering storageTemplateMigration with a concurrency of 5
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering search with a concurrency of 5
[Nest] 1  - 07/14/2023, 5:54:14 AM   DEBUG [JobService] Registering sidecar with a concurrency of 5
[Nest] 1  - 07/14/2023, 5:54:14 AM    WARN [MetadataExtractionProcessor] Reverse geocoding is enabled
[Nest] 1  - 07/14/2023, 5:54:14 AM     LOG [MetadataExtractionProcessor] Initializing Reverse Geocoding

Only after resuming this job, the image displays correctly

manually_resume

And the logs are:

[Nest] 1  - 07/14/2023, 5:57:15 AM   ERROR [JobService] Unable to run job handler: TypeError: Cannot read properties of null (reading 'to')
[Nest] 1  - 07/14/2023, 5:57:15 AM   ERROR [JobService] TypeError: Cannot read properties of null (reading 'to')
    at CommunicationRepository.send (/usr/src/app/dist/infra/repositories/communication.repository.js:20:24)
    at JobService.onDone (/usr/src/app/dist/domain/job/job.service.js:156:50)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async /usr/src/app/dist/domain/job/job.service.js:106:25
    at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:342:28)
    at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:525:24)
[Nest] 1  - 07/14/2023, 5:57:15 AM   ERROR [JobService] Object:
{
  "id": "fc6d1c2f-ff7c-40cb-93d7-30d7f820ddf0",
  "source": "upload"
}
[Nest] 1  - 07/14/2023, 5:57:15 AM   DEBUG [FacialRecognitionService] 0 faces detected in upload/thumbs/eb190195-cc2b-4d4d-9bb8-4f70b669a772/fc6d1c2f-ff7c-40cb-93d7-30d7f820ddf0.jpeg
[Nest] 1  - 07/14/2023, 5:57:15 AM VERBOSE [FacialRecognitionService] Object:
[Nest] 1  - 07/14/2023, 5:57:17 AM   DEBUG [SearchService] Flushing 1 asset upserts

The OS that Immich Server is running on

Ubuntu 20.04.6 LTS

Version of Immich Server

v1.67.1

Version of Immich Mobile App

v1.66.0 build.89

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "immich" ]
    volumes:
      - ${UPLOAD_LOCATION:-<mypath>}:/usr/src/app/upload
    env_file:
      - .env
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-microservices:
    container_name: immich_microservices
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    command: [ "start.sh", "microservices" ]
    volumes:
      - ${UPLOAD_LOCATION:-<mypath>}:/usr/src/app/upload
    env_file:
      - .env
    depends_on:
      - redis
      - database
      - typesense
    restart: always

  immich-machine-learning:
    container_name: immich_machine_learning
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always

  immich-web:
    container_name: immich_web
    image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release}
    env_file:
      - .env
    restart: always

  typesense:
    container_name: immich_typesense
    image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
    logging:
      driver: none
    volumes:
      - tsdata:/data
    restart: always

  redis:
    container_name: immich_redis
    image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3
    restart: always

  database:
    container_name: immich_postgres
    image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
    volumes:
      - pgdata:/var/lib/postgresql/data
    restart: always

  # immich-proxy:
    # container_name: immich_proxy
    # image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release}
    # environment:
      # # Make sure these values get passed through from the env file
      # - IMMICH_SERVER_URL
      # - IMMICH_WEB_URL
    # ports:
      # - 2283:8080
    # depends_on:
      # - immich-server
      # - immich-web
    # restart: always

volumes:
  pgdata:
  model-cache:
  tsdata:

Your .env content

DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_DATABASE_NAME=immich
REDIS_HOSTNAME=immich_redis
UPLOAD_LOCATION=<mypath>
TYPESENSE_API_KEY=<mykey>
LOG_LEVEL=verbose
JWT_SECRET=<mykey2>
PUBLIC_LOGIN_PAGE_MESSAGE="Hi there!"
PUID=1001
PGID=1001
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. Setup docker compose from Portainer
2. Setup basic Caddy with Caddyfile provided in Additional information
3. Do getting started with docker compose method
4. Create account and upload one image

Note. The above steps are done in a brand new Portainer stack derived from docker-compose.yml example in the v1.67.1 release
...

Additional information

Caddyfile since I am already using a proxy rather than the default one from the docker-compose.yml example

immich.myserver.com {
    handle_path /api/* {
        reverse_proxy immich_server:3001
    }
    handle_path /ml/* {
        reverse_proxy immich_machine_learning:3003
    }
    handle {
        reverse_proxy immich_web:3000
    }
}
Originally created by @sirdeniel on GitHub (Jul 14, 2023). ### The bug The image does not show correctly. ![bug](https://i.ibb.co/GsQPK0Q/image.png) The logs from `immich_microservices`: ``` log Node.js v18.16.0 [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [NestFactory] Starting Nest application... [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +46ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] BullModule dependencies initialized +1ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] ConfigHostModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] DiscoveryModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] ConfigModule dependencies initialized +11ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] BullModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:13 AM LOG [InstanceLoader] BullModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] TypeOrmCoreModule dependencies initialized +186ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] TypeOrmModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] InfraModule dependencies initialized +11ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] DomainModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [InstanceLoader] MicroservicesModule dependencies initialized +0ms [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering thumbnailGeneration with a concurrency of 5 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering metadataExtraction with a concurrency of 3 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering videoConversion with a concurrency of 1 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering objectTagging with a concurrency of 2 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering recognizeFaces with a concurrency of 2 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering clipEncoding with a concurrency of 2 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering backgroundTask with a concurrency of 5 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering storageTemplateMigration with a concurrency of 5 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering search with a concurrency of 5 [Nest] 1 - 07/14/2023, 5:54:14 AM DEBUG [JobService] Registering sidecar with a concurrency of 5 [Nest] 1 - 07/14/2023, 5:54:14 AM WARN [MetadataExtractionProcessor] Reverse geocoding is enabled [Nest] 1 - 07/14/2023, 5:54:14 AM LOG [MetadataExtractionProcessor] Initializing Reverse Geocoding ``` **Only after resuming this job, the image displays correctly** ![manually_resume](https://i.ibb.co/R2D344N/image.png) And the logs are: ``` [Nest] 1 - 07/14/2023, 5:57:15 AM ERROR [JobService] Unable to run job handler: TypeError: Cannot read properties of null (reading 'to') [Nest] 1 - 07/14/2023, 5:57:15 AM ERROR [JobService] TypeError: Cannot read properties of null (reading 'to') at CommunicationRepository.send (/usr/src/app/dist/infra/repositories/communication.repository.js:20:24) at JobService.onDone (/usr/src/app/dist/domain/job/job.service.js:156:50) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async /usr/src/app/dist/domain/job/job.service.js:106:25 at async Worker.processJob (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:342:28) at async Worker.retryIfFailed (/usr/src/app/node_modules/bullmq/dist/cjs/classes/worker.js:525:24) [Nest] 1 - 07/14/2023, 5:57:15 AM ERROR [JobService] Object: { "id": "fc6d1c2f-ff7c-40cb-93d7-30d7f820ddf0", "source": "upload" } [Nest] 1 - 07/14/2023, 5:57:15 AM DEBUG [FacialRecognitionService] 0 faces detected in upload/thumbs/eb190195-cc2b-4d4d-9bb8-4f70b669a772/fc6d1c2f-ff7c-40cb-93d7-30d7f820ddf0.jpeg [Nest] 1 - 07/14/2023, 5:57:15 AM VERBOSE [FacialRecognitionService] Object: [Nest] 1 - 07/14/2023, 5:57:17 AM DEBUG [SearchService] Flushing 1 asset upserts ``` ### The OS that Immich Server is running on Ubuntu 20.04.6 LTS ### Version of Immich Server v1.67.1 ### Version of Immich Mobile App v1.66.0 build.89 ### Platform with the issue - [X] Server - [X] Web - [X] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "immich" ] volumes: - ${UPLOAD_LOCATION:-<mypath>}:/usr/src/app/upload env_file: - .env depends_on: - redis - database - typesense restart: always immich-microservices: container_name: immich_microservices image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} command: [ "start.sh", "microservices" ] volumes: - ${UPLOAD_LOCATION:-<mypath>}:/usr/src/app/upload env_file: - .env depends_on: - redis - database - typesense restart: always immich-machine-learning: container_name: immich_machine_learning image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} volumes: - model-cache:/cache env_file: - .env restart: always immich-web: container_name: immich_web image: ghcr.io/immich-app/immich-web:${IMMICH_VERSION:-release} env_file: - .env restart: always typesense: container_name: immich_typesense image: typesense/typesense:0.24.1@sha256:9bcff2b829f12074426ca044b56160ca9d777a0c488303469143dd9f8259d4dd environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data logging: driver: none volumes: - tsdata:/data restart: always redis: container_name: immich_redis image: redis:6.2-alpine@sha256:70a7a5b641117670beae0d80658430853896b5ef269ccf00d1827427e3263fa3 restart: always database: container_name: immich_postgres image: postgres:14-alpine@sha256:28407a9961e76f2d285dc6991e8e48893503cc3836a4755bbc2d40bcc272a441 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data volumes: - pgdata:/var/lib/postgresql/data restart: always # immich-proxy: # container_name: immich_proxy # image: ghcr.io/immich-app/immich-proxy:${IMMICH_VERSION:-release} # environment: # # Make sure these values get passed through from the env file # - IMMICH_SERVER_URL # - IMMICH_WEB_URL # ports: # - 2283:8080 # depends_on: # - immich-server # - immich-web # restart: always volumes: pgdata: model-cache: tsdata: ``` ### Your .env content ```Shell DB_HOSTNAME=immich_postgres DB_USERNAME=postgres DB_PASSWORD=postgres DB_DATABASE_NAME=immich REDIS_HOSTNAME=immich_redis UPLOAD_LOCATION=<mypath> TYPESENSE_API_KEY=<mykey> LOG_LEVEL=verbose JWT_SECRET=<mykey2> PUBLIC_LOGIN_PAGE_MESSAGE="Hi there!" PUID=1001 PGID=1001 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 ```bash 1. Setup docker compose from Portainer 2. Setup basic Caddy with Caddyfile provided in Additional information 3. Do getting started with docker compose method 4. Create account and upload one image Note. The above steps are done in a brand new Portainer stack derived from docker-compose.yml example in the v1.67.1 release ... ``` ### Additional information `Caddyfile` since I am already using a proxy rather than the default one from the `docker-compose.yml` example ``` immich.myserver.com { handle_path /api/* { reverse_proxy immich_server:3001 } handle_path /ml/* { reverse_proxy immich_machine_learning:3003 } handle { reverse_proxy immich_web:3000 } } ```
Author
Owner

@alextran1502 commented on GitHub (Jul 14, 2023):

So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job

@alextran1502 commented on GitHub (Jul 14, 2023): So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job
Author
Owner

@shant1010 commented on GitHub (Jul 14, 2023):

I was also having this issue, but it fixed in the 1.67.2 server update.

@shant1010 commented on GitHub (Jul 14, 2023): I was also having this issue, but it fixed in the 1.67.2 server update.
Author
Owner

@esmoyer commented on GitHub (Jul 14, 2023):

1.67.2 fixed this for me

@esmoyer commented on GitHub (Jul 14, 2023): 1.67.2 fixed this for me
Author
Owner

@sirdeniel commented on GitHub (Jul 15, 2023):

So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job

I'm not pausing the job. it's just that I noticed the job was paused in the first place without my intervention.

1.67.2 fixed this for me

I've updated to v1.67.2 yet the thumbnails and the pictures do not show correctly or "loaded".

@sirdeniel commented on GitHub (Jul 15, 2023): > So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job I'm not pausing the job. it's just that I noticed the job was paused in the first place without my intervention. > 1.67.2 fixed this for me I've updated to v1.67.2 yet the thumbnails and the pictures do not show correctly or "loaded".
Author
Owner

@alextran1502 commented on GitHub (Jul 15, 2023):

So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job

I'm not pausing the job. it's just that I noticed the job was paused in the first place without my intervention.

1.67.2 fixed this for me

I've updated to v1.67.2 yet the thumbnails and the pictures do not show correctly or "loaded".

The jobs don't automatically pause unless there were some interventions before. Was the issue get fixed after you resume/rerun the job?

@alextran1502 commented on GitHub (Jul 15, 2023): > > So you are pausing the job? I believe the thumbnail generation job would only happen after the metadata job > > I'm not pausing the job. it's just that I noticed the job was paused in the first place without my intervention. > > > 1.67.2 fixed this for me > > I've updated to v1.67.2 yet the thumbnails and the pictures do not show correctly or "loaded". The jobs don't automatically pause unless there were some interventions before. Was the issue get fixed after you resume/rerun the job?
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#1102