I
Immich•2w ago
Arimodu

Images not showing up in WebApp but marked as uploaded in mobile app

Hello, I recently migrated Immich between two servers. I think ever since I did that, any picture I take with my phone does not show up on the webui. Both the mobile app and the webapp can load older images just fine, and both can upload images just fine as well. I tried: - Restarting the server - Touch creating and echoing into a file from inside the docker container (works, the container can write into the storage location) - Clearing all site data - Clearing app cache and all data - Reinstalling app - Uploading an image via the webui (Shows all ok, no errors, but doesnt show up) - Uploading an image with the app (Shows all ok, no errors, but doesnt show up) - Running storage migration Notes: - The new server has the storage mounted via an NFS mount - The NFS mount was unwritable for about a week after the migration (already fixed)
36 Replies
Immich
Immich•2w ago
:wave: Hey @Arimodu, Thanks for reaching out to us. Please carefully read this message and follow the recommended actions. This will help us be more effective in our support effort and leave more time for building Immich :immich:. References - Container Logs: docker compose logs docs - Container Status: docker ps -a docs - Reverse Proxy: https://immich.app/docs/administration/reverse-proxy - Code Formatting https://support.discord.com/hc/en-us/articles/210298617-Markdown-Text-101-Chat-Formatting-Bold-Italic-Underline#h_01GY0DAKGXDEHE263BCAYEGFJA Checklist I have... 1. :ballot_box_with_check: verified I'm on the latest release(note that mobile app releases may take some time). 2. :ballot_box_with_check: read applicable release notes. 3. :ballot_box_with_check: reviewed the FAQs for known issues. 4. :ballot_box_with_check: reviewed Github for known issues. 5. :ballot_box_with_check: tried accessing Immich via local ip (without a custom reverse proxy). 6. :ballot_box_with_check: uploaded the relevant information (see below). 7. :ballot_box_with_check: tried an incognito window, disabled extensions, cleared mobile app cache, logged out and back in, different browsers, etc. as applicable (an item can be marked as "complete" by reacting with the appropriate number) Information In order to be able to effectively help you, we need you to provide clear information to show what the problem is. The exact details needed vary per case, but here is a list of things to consider: - Your docker-compose.yml and .env files. - Logs from all the containers and their status (see above). - All the troubleshooting steps you've tried so far. - Any recent changes you've made to Immich or your system. - Details about your system (both software/OS and hardware). - Details about your storage (filesystems, type of disks, output of commands like fdisk -l and df -h). - The version of the Immich server, mobile app, and other relevant pieces. - Any other information that you think might be relevant. Please paste files and logs with proper code formatting, and especially avoid blurry screenshots. Without the right information we can't work out what the problem is. Help us help you ;) If this ticket can be closed you can use the /close command, and re-open it later if needed.
Arimodu
ArimoduOP•2w ago
Server: - Immich: Debian 13 Trixie - Storage: Debian 12/13 (Partial (kernel) upgrade to trixie, waiting for software to update) Logs from all containers:
Immich
Immich•2w ago
Successfully submitted, a tag has been added to inform contributors. :white_check_mark:
Sergey Katsubo
Sergey Katsubo•2w ago
Can you enable debug logging in Immich (Admin > Settings > Logging or through env vars), upload an image through web UI, then grab and post logs. Do you use external library? (EXOS_ROOT and UPLOAD_LOCATION are overlapping, therefore the question)
Arimodu
ArimoduOP•2w ago
Sure, will do I used to have an external library, but I removed that part, since I barely used it. Thats just a remnant at this point
Arimodu
ArimoduOP•2w ago
Here are the logs, If you need the redis logs (which really just repeat the same few lines over and over again) then I have those too. Those were the only two containers generating logs in docker compose logs
Sergey Katsubo
Sergey Katsubo•2w ago
does not show up on the webui.
Could you clarify: is there nothing new at all in web ui upon uploading and refreshing the page OR maybe new thumbnails/placeholders appear but they are inaccessible/blurred? 1. If you go to https://my.immich.app/photos/fc665701-3c23-4f42-88d4-e804ab5e03b0 (substitute your domain / base url) what does it display? This is the asset ID from last logs. Supposedly it should open the image view page. 2. Also check the API response directly in a browser https://my.immich.app/api/assets/fc665701-3c23-4f42-88d4-e804ab5e03b0 (same ID, just different endpoint) It should return JSON with asset metadata (my.immich.app will be resolved to your instance)
Arimodu
ArimoduOP•2w ago
The webUI displays images just fine, its only that its stuck at September 3rd. Anything past that date does not show up
Arimodu
ArimoduOP•2w ago
No description
Arimodu
ArimoduOP•2w ago
Same for the mobile app, except there the images that I took with my phone show up fine, but the ones uploaded via teh WebUI do not, nor do the pictures I took show up on the desktop even when they say they were uploaded Loading the asset worked, not only that, as soon as I opened it it showed up in the webUI proper. Also, it seems new images now show up as I would expect after opening the asset url, but the ones that were uploaded between Sep 3rd and now are still in limbo
Sergey Katsubo
Sergey Katsubo•2w ago
Also, it seems new images now show up as I would expect after opening the asset url, but the ones that were uploaded between Sep 3rd and now are still in limbo
Sorry, not sure if I follow. So correct me if I'm wrong: - You upload new image - It is not visible in web timeline (no thumbnail, no placeholder, just nothing new in the timeline) - Then you open https://my.immich.app/api/assets/UUID (or the /photos/UUID ?) - with new UUID of that recently uploaded asset - It opens fine - Then the image appears in main timeline (its thumbnail now shows up in web timeline) For images uploaded between Sep 3rd and today there is still nothing in timeline.
Arimodu
ArimoduOP•2w ago
Yep, exactly that It also appears in the mobile app too
Mraedis
Mraedis•2w ago
Your compose does not match what is needed for your immich version Not to mention you desperately need to move away from pgvectors
Arimodu
ArimoduOP•2w ago
Honestly that might be fair. I set this up... I dont even know how long ago and just had cron run the update script once a week Maybe the server migration finally did it in Anyway, what are the steps? Do I just yeet my old docker compose and download a fresh one, re-setup the .env and go with that? Or is there some sort of special migration needed?
Mraedis
Mraedis•2w ago
We very explicitely tell you not to autoupdate like this šŸ‘€ I'm honestly suprised your version is even starting You should at least have a big chunk of missing imagery But considering it does start, try indeed yeeting the old compose and using the new one, taking care to match the postgres version @Arimodu
Arimodu
ArimoduOP•2w ago
I know about that, but the "your version is out of date" dialog is too annoying. If it was just like a little badge somewhere, It wouldnt bother me, but because it just pops up over the entire screen every time there is a new version it makes not having it auto update a PIA
Arimodu
ArimoduOP•2w ago
Alright, done that. New images now show up just fine, even without having to reload the web UI, but the images that were uploaded during between Sep 3 and Yesterday do not, even when uploading them again says its duplicate. Also this showed up in the logs after taking a picture with my phone and having it upload:
Arimodu
ArimoduOP•2w ago
My docker compose looks like this now:
root@Zeus:~/immich-app# cat docker-compose.yml
#
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
#
# 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}:/data
- /etc/localtime:/etc/localtime: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, rocm, openvino, rknn] 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: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] 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/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always

database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:c44be5f2871c59362966d71eab4268170eb6f5653c0e6170184e72b38ffdf107
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
DB_STORAGE_TYPE: 'HDD'
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
shm_size: 128mb
restart: always

volumes:
model-cache:
root@Zeus:~/immich-app# cat docker-compose.yml
#
# WARNING: To install Immich, follow our guide: https://immich.app/docs/install/docker-compose
#
# 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}:/data
- /etc/localtime:/etc/localtime: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, rocm, openvino, rknn] 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: cpu # set to one of [armnn, cuda, rocm, openvino, openvino-wsl, rknn] 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/valkey/valkey:8-bookworm@sha256:fea8b3e67b15729d4bb70589eb03367bab9ad1ee89c876f54327fc7c6e618571
healthcheck:
test: redis-cli ping || exit 1
restart: always

database:
container_name: immich_postgres
image: ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:c44be5f2871c59362966d71eab4268170eb6f5653c0e6170184e72b38ffdf107
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USERNAME}
POSTGRES_DB: ${DB_DATABASE_NAME}
POSTGRES_INITDB_ARGS: '--data-checksums'
# Uncomment the DB_STORAGE_TYPE: 'HDD' var if your database isn't stored on SSDs
DB_STORAGE_TYPE: 'HDD'
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
shm_size: 128mb
restart: always

volumes:
model-cache:
The .env didnt seem to need changing out, that one stayed the same (except the exos root variable which I yeeted now)
Mraedis
Mraedis•2w ago
And can you find these images on disk?
Arimodu
ArimoduOP•2w ago
Can try Where here would I be looking for them? I can try to search them with everything, but since immich renames them to uuid.extension I dont think ill find anything
Arimodu
ArimoduOP•2w ago
No description
Arimodu
ArimoduOP•2w ago
I assume the library folder?
Arimodu
ArimoduOP•2w ago
No description
Arimodu
ArimoduOP•2w ago
Theres more dates with images missing here than in the webui Actually no Its just that the timestamps are all over the palce ĀÆ\_(惄)_/ĀÆ I can confirm that indeed, the iamges are not here, there is a folder for the 3rd of September and a folder from yesterday and today, but nohing in between Same thing with VID trying to edit the metadata on an image that is missing, I get the following error in the logs:
immich_server | [Nest] 32 - 09/26/2025, 5:42:11 PM DEBUG [Api:LoggingInterceptor~o2m96o4x] PUT /api/assets 204 2.76ms ::ffff:172.18.0.1
immich_server | [Nest] 32 - 09/26/2025, 5:42:11 PM VERBOSE [Api:LoggingInterceptor~o2m96o4x] {"dateTimeOriginal":"2025-09-06T15:38:35.000Z","ids":["408c18e2-25a4-4575-9cc3-4857daf39138"]}
immich_server | [Nest] 7 - 09/26/2025, 5:42:12 PM ERROR [Microservices:{"id":"408c18e2-25a4-4575-9cc3-4857daf39138","source":"sidecar-write"}] Unable to run job handler (AssetExtractMetadata): Error: ENOENT: no such file or directory, stat '/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg'
immich_server | Error: ENOENT: no such file or directory, stat '/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg'
immich_server | at async Object.stat (node:internal/fs/promises:1037:18)
immich_server | at async Promise.all (index 1)
immich_server | at async MetadataService.handleMetadataExtraction (/usr/src/app/server/dist/services/metadata.service.js:166:35)
immich_server | at async JobService.onJobStart (/usr/src/app/server/dist/services/job.service.js:198:28)
immich_server | at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:126:13)
immich_server | at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.58.5/node_modules/bullmq/dist/cjs/classes/worker.js:498:32
immich_server | at async Worker.retryIfFailed (/usr/src/app/server/node_modules/.pnpm/bullmq@5.58.5/node_modules/bullmq/dist/cjs/classes/worker.js:776:24)
immich_server | [Nest] 7 - 09/26/2025, 5:42:12 PM WARN [Microservices:MetadataRepository] Error reading exif data (/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg): Error: File not found - /data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg
immich_server | Error: File not found - /data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg
immich_server | at ReadTask._ExifToolTask_parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@28.8.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:76:71)
immich_server | at ReadTask.parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@28.8.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:47:167)
immich_server | at ReadTask._Task_resolve (/usr/src/app/server/node_modules/.pnpm/batch-cluster@13.0.0/node_modules/batch-cluster/dist/Task.js:146:40)
immich_server | [Nest] 32 - 09/26/2025, 5:42:38 PM DEBUG [Api:LoggingInterceptor~khaibd1i] GET /api/server/ping 200 0.16ms ::1
immich_server | [Nest] 32 - 09/26/2025, 5:42:11 PM DEBUG [Api:LoggingInterceptor~o2m96o4x] PUT /api/assets 204 2.76ms ::ffff:172.18.0.1
immich_server | [Nest] 32 - 09/26/2025, 5:42:11 PM VERBOSE [Api:LoggingInterceptor~o2m96o4x] {"dateTimeOriginal":"2025-09-06T15:38:35.000Z","ids":["408c18e2-25a4-4575-9cc3-4857daf39138"]}
immich_server | [Nest] 7 - 09/26/2025, 5:42:12 PM ERROR [Microservices:{"id":"408c18e2-25a4-4575-9cc3-4857daf39138","source":"sidecar-write"}] Unable to run job handler (AssetExtractMetadata): Error: ENOENT: no such file or directory, stat '/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg'
immich_server | Error: ENOENT: no such file or directory, stat '/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg'
immich_server | at async Object.stat (node:internal/fs/promises:1037:18)
immich_server | at async Promise.all (index 1)
immich_server | at async MetadataService.handleMetadataExtraction (/usr/src/app/server/dist/services/metadata.service.js:166:35)
immich_server | at async JobService.onJobStart (/usr/src/app/server/dist/services/job.service.js:198:28)
immich_server | at async EventRepository.onEvent (/usr/src/app/server/dist/repositories/event.repository.js:126:13)
immich_server | at async /usr/src/app/server/node_modules/.pnpm/bullmq@5.58.5/node_modules/bullmq/dist/cjs/classes/worker.js:498:32
immich_server | at async Worker.retryIfFailed (/usr/src/app/server/node_modules/.pnpm/bullmq@5.58.5/node_modules/bullmq/dist/cjs/classes/worker.js:776:24)
immich_server | [Nest] 7 - 09/26/2025, 5:42:12 PM WARN [Microservices:MetadataRepository] Error reading exif data (/data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg): Error: File not found - /data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg
immich_server | Error: File not found - /data/upload/ad4be11d-84d1-40f8-94d5-5940948e32bb/68/bf/68bf84e1-6023-4609-a648-e01daa9bb4b4.jpg
immich_server | at ReadTask._ExifToolTask_parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@28.8.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:76:71)
immich_server | at ReadTask.parser (/usr/src/app/server/node_modules/.pnpm/exiftool-vendored@28.8.0/node_modules/exiftool-vendored/dist/ExifToolTask.js:47:167)
immich_server | at ReadTask._Task_resolve (/usr/src/app/server/node_modules/.pnpm/batch-cluster@13.0.0/node_modules/batch-cluster/dist/Task.js:146:40)
immich_server | [Nest] 32 - 09/26/2025, 5:42:38 PM DEBUG [Api:LoggingInterceptor~khaibd1i] GET /api/server/ping 200 0.16ms ::1
I checked the location in the upload folder, and there is an uuid.jpg.xmp file there, but the image is missing
Arimodu
ArimoduOP•2w ago
No description
Arimodu
ArimoduOP•2w ago
There also seems to be a single image file in there, but its corrupted Honestly, should I just yeet the entire upload directory and try again? I didnt loose any of the original images from my phone or PC so data loss isnt something I worry about
Mraedis
Mraedis•2w ago
If you want to fix it, they are probably inside your container image But that's a pain in the ass to get transfered, especially with your upgrades If nuking is an option, I'd go that way And in the future make sure your mounts stay mounted, this is what causes this behaviour in the first place šŸ™‚
Arimodu
ArimoduOP•2w ago
Nuking the upload directory or the docker image?
Mraedis
Mraedis•2w ago
all of it, really šŸ™ƒ
Arimodu
ArimoduOP•2w ago
This specific issue wont happen again. I just didnt know NFS defaulted to squash_root, and I have everything running as root So I just docker image delete everything immich? I know the DB and files are elsewhere, but what about things like settings and users? Is that in the pg db or do I need to keep something around to keep pthose?
Mraedis
Mraedis•2w ago
Did you want to keep all that?
Arimodu
ArimoduOP•2w ago
I'd preffer to not have to resetup my entire family
Mraedis
Mraedis•2w ago
Right it'll be tricky then The easiest would be restoring a backup from before it broke
Arimodu
ArimoduOP•2w ago
Dont have one that old... but maybe the old server might still have the docker images But also, wouldnt just deleting the files in the mobile app (where they show up) while having the 20 or so missing files copied elsewhere work?
Mraedis
Mraedis•2w ago
You can certainly try, don't forget to empty out the trash I'm kind of expecting it to not work because it can't find them to delete them šŸ˜›
Arimodu
ArimoduOP•2w ago
It actually worked.... Thank you very much, I think everything is in order now... Also, I added the capability of downloading a new docker file to my update script, so now when it runs, it also downloads the latest version (since I didnt need to change anything about it, I just got it as it was)

Did you find this page helpful?