immich
immich copied to clipboard
Uploads seemingly continue after remainder reaches zero
The bug
After Immich had finished uploading all of my images it is continuing to try and upload images by the looks of it. See video for UX.
https://github.com/immich-app/immich/assets/35011199/bd4ca5b6-ad75-4d91-8ae4-e120bcc48768
The OS that Immich Server is running on
Ubuntu 22.04
Version of Immich Server
V1.100.0
Version of Immich Mobile App
V1.100.0 build 146
Platform with the issue
- [ ] Server
- [ ] Web
- [X] Mobile
Your docker-compose.yml content
version: "3.8"
name: immich
services:
immich-server:
container_name: immich_server
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: ["start.sh", "immich"]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- /mnt/storage/photos:/mnt/storage/photos:ro
env_file:
- .env
ports:
- 2283:3001
depends_on:
- redis
- database
restart: always
networks:
- default
- sso
immich-microservices:
container_name: immich_microservices
image: ghcr.io/immich-app/immich-server:${IMMICH_VERSION:-release}
command: ["start.sh", "microservices"]
volumes:
- ${UPLOAD_LOCATION}:/usr/src/app/upload
- /etc/localtime:/etc/localtime:ro
- /mnt/storage/photos:/mnt/storage/photos:ro
env_file:
- .env
depends_on:
- redis
- database
restart: always
networks:
- default
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
networks:
- default
redis:
container_name: immich_redis
image: redis:6.2-alpine
restart: always
networks:
- default
database:
container_name: immich_postgres
image: tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
#image: tensorchord/pgvecto-rs:pg14-v0.1.11@sha256:0335a1a22f8c5dd1b697f14f079934f5152eaaa216c09b61e293be285491f8ee
env_file:
- .env
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
volumes:
- pgdata:/var/lib/postgresql/data
restart: always
networks:
- default
volumes:
pgdata:
model-cache:
networks:
default:
name: immich
external: true
sso:
name: sso
external: true
Your .env content
###################################################################################
# Database
###################################################################################
# NOTE: The following four database variables support Docker secrets by adding a *_FILE suffix to the variable name
# See the docker-compose documentation on secrets for additional details: https://docs.docker.com/compose/compose-file/compose-file-v3/#secrets
DB_HOSTNAME=immich_postgres
DB_USERNAME=postgres
DB_PASSWORD=K7v7hnf67JLaUd3x2huDomi7siy6mgyq9JgvzPNcjF4PNXdGLYiaj
DB_DATABASE_NAME=immich
# Optional Database settings:
# DB_PORT=5432
###################################################################################
# Redis
###################################################################################
REDIS_HOSTNAME=immich_redis
# REDIS_URL will be used to pass custom options to ioredis.
# Example for Sentinel
# {"sentinels":[{"host":"redis-sentinel-node-0","port":26379},{"host":"redis-sentinel-node-1","port":26379},{"host":"redis-sentinel-node-2","port":26379}],"name":"redis-sentinel"}
# REDIS_URL=ioredis://eyJzZW50aW5lbHMiOlt7Imhvc3QiOiJyZWRpcy1zZW50aW5lbDEiLCJwb3J0IjoyX0seyJob3N0IjoicmVkaXMtc2VudGluZWwyIiydCI6MjYzNzl9XSwibmFtZSI6Im15bWFzdGVyIn0=
# Optional Redis settings:
# Note: these parameters are not automatically passed to the Redis Container
# to do so, please edit the docker-compose.yml file as well. Redis is not configured
# via environment variables, only redis.conf or the command line
# REDIS_PORT=6379
# REDIS_DBINDEX=0
# REDIS_USERNAME=
# REDIS_PASSWORD=
# REDIS_SOCKET=
###################################################################################
# Upload File Location
#
# This is the location where uploaded files are stored.
###################################################################################
UPLOAD_LOCATION=/mnt/storage/photos/immich-app
###################################################################################
# Typesense
###################################################################################
TYPESENSE_API_KEY=gCqNpQ7xvqg98fFA8x55YFsz7LorpX2D8ButyGaDLY7HLfaTi
# TYPESENSE_ENABLED=false
# TYPESENSE_URL uses base64 encoding for the nodes json.
# Example JSON that was used:
# [
# { 'host': 'typesense-1.example.net', 'port': '443', 'protocol': 'https' },
# { 'host': 'typesense-2.example.net', 'port': '443', 'protocol': 'https' },
# { 'host': 'typesense-3.example.net', 'port': '443', 'protocol': 'https' },
# ]
# TYPESENSE_URL=ha://WwogICAgeyAnaG9zdCc6ICd0eXBlc2Vuc2UtMS5leGFtcGxlLm5ldCcsICdwb3J0JzogJzQ0MycsICdwcm90b2NvbCc6ICdodHRwcycgfSwKICAgIHsgJ2hvc3QnOiAndHlwZXNlbnNlLTIuZXBsZS5uZXQnLCAncG9ydCc6ICc0NDMnLCAncHJvdG9jb2wnOiAnaHR0cHMnIH0sCiAgICB7ICdob3N0JzogJ3R5cGVzZW5zZS0zLmV4UubmV0JywgJ3BvcnQnOiAnNDQzJywgJ3Byb3RvY29sJzogJ2h0dHBzJyB9LApd
###################################################################################
# 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>[email protected]</i><br>Password: <i>demo</i>"
####################################################################################
PUBLIC_LOGIN_PAGE_MESSAGE="Welcome"
####################################################################################
# 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
####################################################################################
# Alternative API's External Address - Optional
#
# This is an advanced feature used to control the public server endpoint returned to clients during Well-known discovery.
# You should only use this if you want mobile apps to access the immich API over a custom URL. Do not include trailing slash.
# NOTE: At this time, the web app will not be affected by this setting and will continue to use the relative path: /api
# Examples: http://localhost:3001, http://immich-api.example.com, etc
####################################################################################
#IMMICH_API_URL_EXTERNAL=http://localhost:3001
###################################################################################
# Immich Version - Optional
#
# This allows all immich docker images to be pinned to a specific version. By default,
# the version is "release" but could be a specific version, like "v1.59.0".
###################################################################################
IMMICH_VERSION=v1.100.0
Reproduction steps
Not entirely sure
1. Upload images
2. Uploading continues after remainder reaches zero
Additional information
No response
Perhaps some weirdness with iCloud/Shared Album. I'd suggest just let it run until it stops
Perhaps some weirdness with iCloud/Shared Album. I'd suggest just let it run until it stops
I did try that but it looks to keep getting stuck on this image now for some reason
@ZuluWhiskey Can you track down that image and see if you can move it to a different album to exclude it or see if it is a corrupted file?
@ZuluWhiskey Can you track down that image and see if you can move it to a different album to exclude it or see if it is a corrupted file?
Have given that a try but it just gets stuck on the next image, then the next image, etc. did it for about 10 images before I stopped deleting pictures.
I am experiencing this as well as mentioned in #9827.
Having the same issue in 1.114.0
Same issue in 1.117.0
Same issue server version 1.120.2 mobile client 1.120.2 build 167
Same issue here running 1.121.0 on both server and iOS Mobile App except remainder is staying at 1, to spite all photos being uploaded.
I installed latest immich and mobile app iOS. Left the phone with immich mobile app open to do initial sync. After the sync is done I have Reminder: 0 but it still is uploading - from what I see not photos but videos.
After 3 days of trying to finish sync, I gave up.
The background sync is not working - I need to open the immich app - let it run for some time to ,find new photos' and do the sync - which shows that the photos are synced to the server but immich iOS is still uploading constantly (videos) - despite Reminder 0.
I would really like to use immich but lack of background sync as well as constant upload (of I do not know what?!) makes it unusable..
Perhaps some weirdness with iCloud/Shared Album. I'd suggest just let it run until it stops
@alextran1502 3 days and uploads constantly. It's not possible to do as you suggest...
@teon i assume you are using dns/reverse proxy or CloudFlare tunnel? If so you probably don't have correct setup for large body size. You can connect to the instance over local IP at the mean time to allow large file size getting uploaded. Otherwise, you can get more help on Discord
@teon i assume you are using dns/reverse proxy or CloudFlare tunnel? If so you probably don't have correct setup for large body size. You can connect to the instance over local IP at the mean time to allow large file size getting uploaded. Otherwise, you can get more help on Discord
@alextran1502 - No I do not use an external dns/reverse proxy. All is a local setup - but I do have NGINX reverse proxy for SSL termination of the instance. But all on the same local server.
will go through the official docs to tweak the NGINX config - but still if I have a misconfigured body size for my uploads the mobile APP should not report that ll has been successfully uploaded and still continue to upload. This is a bug.
@alextran1502 you are right - I had 120M max upload file size on NGINX, so all the videos >120M were constantly re-uploaded. But as I said, this still is a bug. Will see if increasing the upload body helped and the mobile app will detect and finish all the uploads and if the background upload will work.
@teon I agree with you. However, this often comes from the reverse proxy layer, which isn't configured to send the correct response if the body size limit is reached. Reverse proxy choice and configuration vary based on the user's preference, so we don't have a definite way to catch the error here.
However, we do have recommendations on the reverse proxy settings for the users, which you can find helpful here.
https://immich.app/docs/administration/reverse-proxy#nginx-example-config
Hi @alextran1502
First I just want to say thanks for this app, which is really amazing.
Noted on the above that the reverse proxy layer is based on the user's preference, and that you don't have a definite way to catch errors. However, since the user may have control over both the server side, and the app preferences, is it possible to specify a max size in the app, and any files over this size would be sent in separate requests and then combined on the server?
@deuxglaces hello, not yet possible. There is a feature request for this
Same here. Pixel 8 pro. Server and mobile Version. 1.34. Server on unraid with tailscale. Had this issue forever.
@hueppinr you can go to App Settings > Advanced > Clear duplicate and then run the upload. The number will match then
Thanks. That helped. Why do I have so many duplicate assets? And why are they blacklisted by the app?
It is because there were assets on the server already that duplicated with what on the device. The mismatch in counting is because you might have deleted the assets that are marked as duplicated on the device.
Anyway, I am working on a new upload mechanism which will not have the concept of duplicated/blacklist anymore
Same issue on android. Client is 1.135.1, server is 1.135.3