Unable to tag images #5693

Closed
opened 2026-02-05 11:39:41 +03:00 by OVERLORD · 3 comments
Owner

Originally created by @Amishman on GitHub (Mar 27, 2025).

I have searched the existing issues, both open and closed, to make sure this is not a duplicate report.

  • Yes

The bug

I select an image and click the add a tag button. I select the tag from the drop down menu. The tag is then listed under the drop down menu. Then I click the Tag assets button. In the Info window, the selected tag appears under Tags next to the + Add button. After about 1 second, the tag disappears and then only the + Add button is there.

The OS that Immich Server is running on

Linux Mint 21.3 Cinnamon

Version of Immich Server

V1.130.2

Version of Immich Mobile App

v1 Not sure

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

#
# WARNING: Make sure to use the docker-compose.yml of the current release:
#
# https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
#
# The compose file on main may not be compatible with the latest release.
#

name: immich

services:
  immich-server:
    container_name: immich_server
    image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
    # 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 .env file
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /etc/localtime:/etc/localtime:ro
      - /mnt/Disk_05/Family_Photos:/usr/src/app/external:ro
    env_file:
      - .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, openvino] to the image tag.
    # Example tag: ${IMMICH_VERSION:-release}-cuda
    image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release}
#    extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
#      file: hwaccel.ml.yml
#      service: cuda # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
    volumes:
      - model-cache:/cache
    env_file:
      - .env
    restart: always
    healthcheck:
      disable: false

  redis:
    container_name: immich_redis
    image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae
    healthcheck:
      test: redis-cli ping || exit 1
    restart: always

  database:
    container_name: immich_postgres
    image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      POSTGRES_INITDB_ARGS: '--data-checksums'
    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
    healthcheck:
      test: >-
        pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1;
        Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align
        --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')";
        echo "checksum failure count is $$Chksum";
        [ "$$Chksum" = '0' ] || exit 1
      interval: 5m
      start_interval: 30s
      start_period: 5m
    command: >-
      postgres
      -c shared_preload_libraries=vectors.so
      -c 'search_path="$$user", public, vectors'
      -c logging_collector=on
      -c max_wal_size=2GB
      -c shared_buffers=512MB
      -c wal_compression=on
    restart: always

volumes:
  model-cache:

Your .env content

GNU nano 6.2                          .env                                    
# You can find documentation for all the supported env variables at https://imm>

# The location where your uploaded files are stored
UPLOAD_LOCATION=/mnt/Disk_08/Family-Photos
# The location where your database files are stored
DB_DATA_LOCATION=./postgres

# To set a timezone, uncomment the next line and change Etc/UTC to a TZ identif>
TZ=America/New_York

# The Immich version to use. You can pin this to a specific version like "v1.71>
IMMICH_VERSION=release

# Connection secret for postgres. You should change it to a random password
# Please use only the characters `A-Za-z0-9`, without special characters or spa>
DB_PASSWORD=******

# The values below this line do not need to be changed
###############################################################################>
DB_USERNAME=postgres
DB_DATABASE_NAME=immich

Reproduction steps

  1. Click on a picture to open a large view.
  2. In the Info window, in the Tag section, click the + Add button.
  3. Select a tag from the drop down menu.
  4. Click the Tag assets button.
  5. The tag appears under the Tag section for 1 second, then disappears.
    ...

Relevant log output

2025-03-27 05:49:24 immich_server            | [Nest] 6  - 03/27/2025, 5:49:24 AM    WARN [Microservices:MetadataRepository] Error writing exif data (/usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp): Error: Error creating file: /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp
2025-03-27 05:49:24 immich_server            | [Nest] 6  - 03/27/2025, 5:49:24 AM    WARN [Microservices:Error: File not found - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp
2025-03-27 05:49:24 immich_server            |     at ReadTask._ExifToolTask_parser (/usr/src/app/node_modules/exiftool-vendored/dist/ExifToolTask.js:76:71)
2025-03-27 05:49:24 immich_server            |     at ReadTask.parser (/usr/src/app/node_modules/exiftool-vendored/dist/ExifToolTask.js:47:167)
2025-03-27 05:49:24 immich_server            |     at ReadTask._Task_resolve (/usr/src/app/node_modules/batch-cluster/dist/Task.js:146:40)] Error reading exif data (/usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp): Error: File not found - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp
2025-03-27 05:49:24 immich_server            | [Nest] 6  - 03/27/2025, 5:49:24 AM    WARN [Microservices:MetadataService] Missing file creation or modification date for asset 4cc523f7-724f-4502-bce4-77cb58dc30da: /usr/src/app/external/Unknown/ImageJPEG_0639.jpg

Additional information

This is a newer install. I have only been using Immich for about a month. At first I was able to add tags to images. Every now and then I would come across an image the tag would not stay added to. Now, it does not matter how I try to add a tag or what image.

Originally created by @Amishman on GitHub (Mar 27, 2025). ### I have searched the existing issues, both open and closed, to make sure this is not a duplicate report. - [x] Yes ### The bug I select an image and click the add a tag button. I select the tag from the drop down menu. The tag is then listed under the drop down menu. Then I click the Tag assets button. In the Info window, the selected tag appears under Tags next to the + Add button. After about 1 second, the tag disappears and then only the + Add button is there. ### The OS that Immich Server is running on Linux Mint 21.3 Cinnamon ### Version of Immich Server V1.130.2 ### Version of Immich Mobile App v1 Not sure ### Platform with the issue - [ ] Server - [x] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML # # WARNING: Make sure to use the docker-compose.yml of the current release: # # https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml # # The compose file on main may not be compatible with the latest release. # name: immich services: immich-server: container_name: immich_server image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release} # 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 .env file - ${UPLOAD_LOCATION}:/usr/src/app/upload - /etc/localtime:/etc/localtime:ro - /mnt/Disk_05/Family_Photos:/usr/src/app/external:ro env_file: - .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, openvino] to the image tag. # Example tag: ${IMMICH_VERSION:-release}-cuda image: ghcr.io/immich-app/immich-machine-learning:${IMMICH_VERSION:-release} # extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration # file: hwaccel.ml.yml # service: cuda # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable volumes: - model-cache:/cache env_file: - .env restart: always healthcheck: disable: false redis: container_name: immich_redis image: docker.io/redis:6.2-alpine@sha256:905c4ee67b8e0aa955331960d2aa745781e6bd89afc44a8584bfd13bc890f0ae healthcheck: test: redis-cli ping || exit 1 restart: always database: container_name: immich_postgres image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0 environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} POSTGRES_INITDB_ARGS: '--data-checksums' 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 healthcheck: test: >- pg_isready --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" || exit 1; Chksum="$$(psql --dbname="$${POSTGRES_DB}" --username="$${POSTGRES_USER}" --tuples-only --no-align --command='SELECT COALESCE(SUM(checksum_failures), 0) FROM pg_stat_database')"; echo "checksum failure count is $$Chksum"; [ "$$Chksum" = '0' ] || exit 1 interval: 5m start_interval: 30s start_period: 5m command: >- postgres -c shared_preload_libraries=vectors.so -c 'search_path="$$user", public, vectors' -c logging_collector=on -c max_wal_size=2GB -c shared_buffers=512MB -c wal_compression=on restart: always volumes: model-cache: ``` ### Your .env content ```Shell GNU nano 6.2 .env # You can find documentation for all the supported env variables at https://imm> # The location where your uploaded files are stored UPLOAD_LOCATION=/mnt/Disk_08/Family-Photos # The location where your database files are stored DB_DATA_LOCATION=./postgres # To set a timezone, uncomment the next line and change Etc/UTC to a TZ identif> TZ=America/New_York # The Immich version to use. You can pin this to a specific version like "v1.71> IMMICH_VERSION=release # Connection secret for postgres. You should change it to a random password # Please use only the characters `A-Za-z0-9`, without special characters or spa> DB_PASSWORD=****** # The values below this line do not need to be changed ###############################################################################> DB_USERNAME=postgres DB_DATABASE_NAME=immich ``` ### Reproduction steps 1. Click on a picture to open a large view. 2. In the _Info_ window, in the _Tag_ section, click the _+ Add_ button. 3. Select a tag from the drop down menu. 4. Click the _Tag assets_ button. 5. The tag appears under the _Tag_ section for 1 second, then disappears. ... ### Relevant log output ```shell 2025-03-27 05:49:24 immich_server | [Nest] 6 - 03/27/2025, 5:49:24 AM WARN [Microservices:MetadataRepository] Error writing exif data (/usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp): Error: Error creating file: /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp 2025-03-27 05:49:24 immich_server | [Nest] 6 - 03/27/2025, 5:49:24 AM WARN [Microservices:Error: File not found - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp 2025-03-27 05:49:24 immich_server | at ReadTask._ExifToolTask_parser (/usr/src/app/node_modules/exiftool-vendored/dist/ExifToolTask.js:76:71) 2025-03-27 05:49:24 immich_server | at ReadTask.parser (/usr/src/app/node_modules/exiftool-vendored/dist/ExifToolTask.js:47:167) 2025-03-27 05:49:24 immich_server | at ReadTask._Task_resolve (/usr/src/app/node_modules/batch-cluster/dist/Task.js:146:40)] Error reading exif data (/usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp): Error: File not found - /usr/src/app/external/Unknown/ImageJPEG_0639.jpg.xmp 2025-03-27 05:49:24 immich_server | [Nest] 6 - 03/27/2025, 5:49:24 AM WARN [Microservices:MetadataService] Missing file creation or modification date for asset 4cc523f7-724f-4502-bce4-77cb58dc30da: /usr/src/app/external/Unknown/ImageJPEG_0639.jpg ``` ### Additional information This is a newer install. I have only been using Immich for about a month. At first I was able to add tags to images. Every now and then I would come across an image the tag would not stay added to. Now, it does not matter how I try to add a tag or what image.
Author
Owner

@bo0tzz commented on GitHub (Mar 27, 2025):

Tags are written to an XMP sidecar file. On a readonly external library, that file can't be written, so tagging doesn't work.

@bo0tzz commented on GitHub (Mar 27, 2025): Tags are written to an XMP sidecar file. On a readonly external library, that file can't be written, so tagging doesn't work.
Author
Owner

@brynjolf commented on GitHub (May 29, 2025):

Tags are written to an XMP sidecar file. On a readonly external library, that file can't be written, so tagging doesn't work.

@bo0tzz
Sure your explanation makes sense, but shouldn't there be an indication somewhere that is what happens? A warning? I edited a bunch of photos that I didn't think was read-only, as the UI doesn't indicate that somewhere or differentiate between that and for example tagging a photo of someone.

@brynjolf commented on GitHub (May 29, 2025): > Tags are written to an XMP sidecar file. On a readonly external library, that file can't be written, so tagging doesn't work. @bo0tzz Sure your explanation makes sense, but shouldn't there be an indication somewhere that is what happens? A warning? I edited a bunch of photos that I didn't think was read-only, as the UI doesn't indicate that somewhere or differentiate between that and for example tagging a photo of someone.
Author
Owner

@bo0tzz commented on GitHub (May 30, 2025):

shouldn't there be an indication somewhere that is what happens? A warning?

We used to have special cases for read-only external libraries, but they made the code a real mess so we decided to get rid of them. The warning is in the external library docs:

The ro flag at the end only gives read-only access to the volumes. This will disallow the images from being deleted in the web UI, or adding metadata to the library (XMP sidecars).

@bo0tzz commented on GitHub (May 30, 2025): > shouldn't there be an indication somewhere that is what happens? A warning? We used to have special cases for read-only external libraries, but they made the code a real mess so we decided to get rid of them. The warning is in [the external library docs](https://immich.app/docs/features/libraries/#mount-docker-volumes): > The ro flag at the end only gives read-only access to the volumes. This will disallow the images from being deleted in the web UI, or adding metadata to the library ([XMP sidecars](https://immich.app/docs/features/xmp-sidecars)).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#5693