[BUG] Archiving all the images of a face doesn't delete the face #1473

Closed
opened 2026-02-05 01:59:48 +03:00 by OVERLORD · 1 comment
Owner

Originally created by @aunefyren on GitHub (Oct 18, 2023).

The bug

As a result of the brilliant face detection feature, I have been looking through and cleaning my images. A lot of face detections are from memes which I want to remove (or archive in my case).

This is quick to do using the face interface, but the problem is that the faces do not disappear. If I archive all the images of a face and re-enter the face, I get an empty results page. I would have expected the faces to disappear.

I wonder if this also happens with the new delete/trash feature, but I am not sure.

The OS that Immich Server is running on

Ubuntu 22.04.3 LTS x86_64 (Docker)

Version of Immich Server

v1.82.0

Version of Immich Mobile App

v1.82.0 build.106

Platform with the issue

  • Server
  • Web
  • Mobile

Your docker-compose.yml content

version: "3.8"

services:
  immich-server:
    user: "1000:1000"
    container_name: immich-server
    image: ghcr.io/immich-app/immich-server:release
    command: ["start-server.sh"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
    env_file:
      - .env
    environment:
      - NODE_ENV=production
      - PUID=1000
      - PGID=1000
    depends_on:
      - redis
      - database
      - typesense
    restart: always
    networks:
      - immich

  immich-microservices:
    user: 1000:1000
    container_name: immich-microservices
    image: ghcr.io/immich-app/immich-server:release
    command: ["start-microservices.sh"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /media/CASE/immich/geocoding/:/usr/src/app/geocoding/
      - /media/CASE/immich/geocoding-dump:/usr/src/app/.reverse-geocoding-dump
    env_file:
      - .env
    environment:
      - NODE_ENV=production
      - PUID=1000
      - PGID=1000
    depends_on:
      - redis
      - database
      - typesense
    restart: always
    networks:
      - immich

  immich-machine-learning:
    container_name: immich-machine-learning
    # user: 1000:1000
    image: ghcr.io/immich-app/immich-machine-learning:release
    # entrypoint: ["/bin/sh", "./entrypoint.sh"]
    volumes:
      - ${UPLOAD_LOCATION}:/usr/src/app/upload
      - /media/CASE/immich/machine-learning-cache:/cache
    env_file:
      - .env
    environment:
      - NODE_ENV=production
      # - PUID=1000
      # - PGID=1000
    depends_on:
      - database
    restart: always
    networks:
      - immich

  immich-web:
    container_name: immich-web
    image: ghcr.io/immich-app/immich-web:release
    env_file:
      - .env
    environment:
      # Rename these values for svelte public interface
      - PUBLIC_IMMICH_SERVER_URL=${IMMICH_SERVER_URL}
    restart: always
    networks:
      - immich

  typesense:
    container_name: immich-typesense
    image: typesense/typesense:0.24.0
    user: 1000:1000
    environment:
      - TYPESENSE_API_KEY=${TYPESENSE_API_KEY}
      - TYPESENSE_DATA_DIR=/data
      - PUID=1000
      - PGID=1000
    logging:
      driver: none
    volumes:
      - /media/CASE/immich/tsdata:/data
    networks:
     - immich

  redis:
    container_name: immich-redis
    image: redis:6.2
    restart: always
    networks:
      - immich

  database:
    container_name: immich-db
    user: 1000:1000
    image: postgres:14
    env_file:
      - .env
    environment:
      POSTGRES_PASSWORD: ${DB_PASSWORD}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_DB: ${DB_DATABASE_NAME}
      PG_DATA: /var/lib/postgresql/data
      PUID: 1000
      PGID: 1000
    volumes:
      - /media/CASE/immich/db-data:/var/lib/postgresql/data
      - /media/CASE/immich/passwd:/etc/passwd:ro
    restart: always
    networks:
      - immich

  immich-proxy:
    container_name: immich-proxy
    image: ghcr.io/immich-app/immich-proxy:release
    environment:
      # Make sure these values get passed through from the env file
      - IMMICH_SERVER_URL
      - IMMICH_WEB_URL
    expose:
      - 8080
    logging:
      driver: none
    depends_on:
      - immich-server
    restart: always
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.immich.entrypoints=http"
      - "traefik.http.routers.immich.rule=Host(`[DOMAIN]`)"
      - "traefik.http.middlewares.immich-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.immich.middlewares=immich-https-redirect"
      - "traefik.http.routers.immich-secure.entrypoints=https"
      - "traefik.http.routers.immich-secure.rule=Host(`[DOMAIN]`)"
      - "traefik.http.routers.immich-secure.tls.certresolver=cloudflare"
      - "traefik.http.routers.immich-secure.tls=true"
      - "traefik.http.routers.immich-secure.service=immich"
      - "traefik.http.services.immich.loadbalancer.server.port=8080"
      - "traefik.docker.network=proxy"
    networks:
      - proxy
      - immich

networks:
  proxy:
    external: true
  immich:
    external: false

Your .env content

###################################################################################
# Database
###################################################################################

DB_HOSTNAME=immich-db
DB_USERNAME=[USERNAME]
DB_PASSWORD=[PASSWORD]
DB_DATABASE_NAME=immich

# Optional Database settings:
# DB_PORT=5432

###################################################################################
# Redis
###################################################################################

REDIS_HOSTNAME=immich-redis

# Optional Redis settings:
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_PASSWORD=
# REDIS_SOCKET=

###################################################################################
# Upload File Location
#
# This is the location where uploaded files are stored.
###################################################################################

UPLOAD_LOCATION=/media/TARS/Vault/Immich/

###################################################################################
# Log message level - [simple|verbose]
###################################################################################

LOG_LEVEL=simple

###################################################################################
# JWT SECRET
#
# This JWT_SECRET is used to sign the authentication keys for user login
# You should set it to a long randomly generated value
# You can use this command to generate one: openssl rand -base64 128
###################################################################################

JWT_SECRET=[SECRET]

###################################################################################
# Typesense
###################################################################################
TYPESENSE_API_KEY=[KEY]
# TYPESENSE_ENABLED=false

###################################################################################
# Reverse Geocoding
#
# Reverse geocoding is done locally which has a small impact on memory usage
# This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable
# This ranges from 0-3 with 3 being the most precise
# 3 - Cities > 500 population: ~200MB RAM
# 2 - Cities > 1000 population: ~150MB RAM
# 1 - Cities > 5000 population: ~80MB RAM
# 0 - Cities > 15000 population: ~40MB RAM
####################################################################################

# DISABLE_REVERSE_GEOCODING=false
# REVERSE_GEOCODING_PRECISION=3

####################################################################################
# WEB - Optional
#
# Custom message on the login page, should be written in HTML form.
# For example:
# PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>"
####################################################################################

PUBLIC_LOGIN_PAGE_MESSAGE="Hello"

####################################################################################
# Alternative Service Addresses - Optional
#
# This is an advanced feature for users who may be running their immich services on different hosts.
# It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers.
# Note: immich-microservices is bound to 3002, but no references are made
####################################################################################

# 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. Find a face with one or more pictures detected.
2. Archive those pictures from within the list/face-interface.
3. Relocate the face and notice it does not disappear.

Additional information

No response

Originally created by @aunefyren on GitHub (Oct 18, 2023). ### The bug As a result of the brilliant face detection feature, I have been looking through and cleaning my images. A lot of face detections are from memes which I want to remove (or archive in my case). This is quick to do using the face interface, but the problem is that the faces do not disappear. If I archive all the images of a face and re-enter the face, I get an empty results page. I would have expected the faces to disappear. I wonder if this also happens with the new delete/trash feature, but I am not sure. ### The OS that Immich Server is running on Ubuntu 22.04.3 LTS x86_64 (Docker) ### Version of Immich Server v1.82.0 ### Version of Immich Mobile App v1.82.0 build.106 ### Platform with the issue - [X] Server - [ ] Web - [ ] Mobile ### Your docker-compose.yml content ```YAML version: "3.8" services: immich-server: user: "1000:1000" container_name: immich-server image: ghcr.io/immich-app/immich-server:release command: ["start-server.sh"] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload env_file: - .env environment: - NODE_ENV=production - PUID=1000 - PGID=1000 depends_on: - redis - database - typesense restart: always networks: - immich immich-microservices: user: 1000:1000 container_name: immich-microservices image: ghcr.io/immich-app/immich-server:release command: ["start-microservices.sh"] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /media/CASE/immich/geocoding/:/usr/src/app/geocoding/ - /media/CASE/immich/geocoding-dump:/usr/src/app/.reverse-geocoding-dump env_file: - .env environment: - NODE_ENV=production - PUID=1000 - PGID=1000 depends_on: - redis - database - typesense restart: always networks: - immich immich-machine-learning: container_name: immich-machine-learning # user: 1000:1000 image: ghcr.io/immich-app/immich-machine-learning:release # entrypoint: ["/bin/sh", "./entrypoint.sh"] volumes: - ${UPLOAD_LOCATION}:/usr/src/app/upload - /media/CASE/immich/machine-learning-cache:/cache env_file: - .env environment: - NODE_ENV=production # - PUID=1000 # - PGID=1000 depends_on: - database restart: always networks: - immich immich-web: container_name: immich-web image: ghcr.io/immich-app/immich-web:release env_file: - .env environment: # Rename these values for svelte public interface - PUBLIC_IMMICH_SERVER_URL=${IMMICH_SERVER_URL} restart: always networks: - immich typesense: container_name: immich-typesense image: typesense/typesense:0.24.0 user: 1000:1000 environment: - TYPESENSE_API_KEY=${TYPESENSE_API_KEY} - TYPESENSE_DATA_DIR=/data - PUID=1000 - PGID=1000 logging: driver: none volumes: - /media/CASE/immich/tsdata:/data networks: - immich redis: container_name: immich-redis image: redis:6.2 restart: always networks: - immich database: container_name: immich-db user: 1000:1000 image: postgres:14 env_file: - .env environment: POSTGRES_PASSWORD: ${DB_PASSWORD} POSTGRES_USER: ${DB_USERNAME} POSTGRES_DB: ${DB_DATABASE_NAME} PG_DATA: /var/lib/postgresql/data PUID: 1000 PGID: 1000 volumes: - /media/CASE/immich/db-data:/var/lib/postgresql/data - /media/CASE/immich/passwd:/etc/passwd:ro restart: always networks: - immich immich-proxy: container_name: immich-proxy image: ghcr.io/immich-app/immich-proxy:release environment: # Make sure these values get passed through from the env file - IMMICH_SERVER_URL - IMMICH_WEB_URL expose: - 8080 logging: driver: none depends_on: - immich-server restart: always labels: - "traefik.enable=true" - "traefik.http.routers.immich.entrypoints=http" - "traefik.http.routers.immich.rule=Host(`[DOMAIN]`)" - "traefik.http.middlewares.immich-https-redirect.redirectscheme.scheme=https" - "traefik.http.routers.immich.middlewares=immich-https-redirect" - "traefik.http.routers.immich-secure.entrypoints=https" - "traefik.http.routers.immich-secure.rule=Host(`[DOMAIN]`)" - "traefik.http.routers.immich-secure.tls.certresolver=cloudflare" - "traefik.http.routers.immich-secure.tls=true" - "traefik.http.routers.immich-secure.service=immich" - "traefik.http.services.immich.loadbalancer.server.port=8080" - "traefik.docker.network=proxy" networks: - proxy - immich networks: proxy: external: true immich: external: false ``` ### Your .env content ```Shell ################################################################################### # Database ################################################################################### DB_HOSTNAME=immich-db DB_USERNAME=[USERNAME] DB_PASSWORD=[PASSWORD] DB_DATABASE_NAME=immich # Optional Database settings: # DB_PORT=5432 ################################################################################### # Redis ################################################################################### REDIS_HOSTNAME=immich-redis # Optional Redis settings: # REDIS_PORT=6379 # REDIS_DBINDEX=0 # REDIS_PASSWORD= # REDIS_SOCKET= ################################################################################### # Upload File Location # # This is the location where uploaded files are stored. ################################################################################### UPLOAD_LOCATION=/media/TARS/Vault/Immich/ ################################################################################### # Log message level - [simple|verbose] ################################################################################### LOG_LEVEL=simple ################################################################################### # JWT SECRET # # This JWT_SECRET is used to sign the authentication keys for user login # You should set it to a long randomly generated value # You can use this command to generate one: openssl rand -base64 128 ################################################################################### JWT_SECRET=[SECRET] ################################################################################### # Typesense ################################################################################### TYPESENSE_API_KEY=[KEY] # TYPESENSE_ENABLED=false ################################################################################### # Reverse Geocoding # # Reverse geocoding is done locally which has a small impact on memory usage # This memory usage can be altered by changing the REVERSE_GEOCODING_PRECISION variable # This ranges from 0-3 with 3 being the most precise # 3 - Cities > 500 population: ~200MB RAM # 2 - Cities > 1000 population: ~150MB RAM # 1 - Cities > 5000 population: ~80MB RAM # 0 - Cities > 15000 population: ~40MB RAM #################################################################################### # DISABLE_REVERSE_GEOCODING=false # REVERSE_GEOCODING_PRECISION=3 #################################################################################### # WEB - Optional # # Custom message on the login page, should be written in HTML form. # For example: # PUBLIC_LOGIN_PAGE_MESSAGE="This is a demo instance of Immich.<br><br>Email: <i>demo@demo.de</i><br>Password: <i>demo</i>" #################################################################################### PUBLIC_LOGIN_PAGE_MESSAGE="Hello" #################################################################################### # Alternative Service Addresses - Optional # # This is an advanced feature for users who may be running their immich services on different hosts. # It will not change which address or port that services bind to within their containers, but it will change where other services look for their peers. # Note: immich-microservices is bound to 3002, but no references are made #################################################################################### # 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. Find a face with one or more pictures detected. 2. Archive those pictures from within the list/face-interface. 3. Relocate the face and notice it does not disappear. ``` ### Additional information _No response_
Author
Owner

@mertalev commented on GitHub (Jan 29, 2024):

This was fixed in #6091

@mertalev commented on GitHub (Jan 29, 2024): This was fixed in #6091
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: immich-app/immich#1473