[2026-07-11 09:14:03 EDT] Customer - Nina: Hi, I’m running a self-hosted photo library on my NAS and new uploads are showing as gray placeholders. The files are there, but thumbnails never finish. [2026-07-11 09:14:29 EDT] Support - Alex: Hi Nina. I can help with that. Are the original photos viewable if you open one directly from the library, or is it only the thumbnail grid that’s affected? [2026-07-11 09:15:02 EDT] Customer - Nina: Originals open fine. It’s just the timeline view and albums. They show gray boxes with filenames. [2026-07-11 09:15:41 EDT] Support - Alex: Got it. That usually points to the preview worker or cache path. What version are you running, and is it Docker, bare metal, or an app package on the NAS? [2026-07-11 09:16:10 EDT] Customer - Nina: Docker Compose. Version 1.8.2. NAS is Synology, photos mounted from /volume1/photos. [2026-07-11 09:16:55 EDT] Support - Alex: Thanks. Can you check the container logs for lines mentioning “preview”, “thumb”, “permission denied”, or “failed to write”? [2026-07-11 09:18:17 EDT] Customer - Nina: I see a lot of this: failed to create preview cache: mkdir /app/cache/previews/2026: permission denied. [2026-07-11 09:18:49 EDT] Support - Alex: That explains it. The app can read your originals, but it can’t write generated previews to the cache volume. Did you recently recreate the container or change the UID/GID values? [2026-07-11 09:19:30 EDT] Customer - Nina: I updated the compose file yesterday and added PUID=1026 and PGID=100. Before that I don’t think those were set. [2026-07-11 09:20:11 EDT] Support - Alex: The cache directory is probably still owned by the old container user. On the host, check ownership of the cache volume path you mapped to /app/cache. [2026-07-11 09:21:34 EDT] Customer - Nina: It’s mapped to /volume1/docker/photolib/cache. Owner says root:root. [2026-07-11 09:22:09 EDT] Support - Alex: Change that folder to the same user/group the container runs as, then restart the service. For your values, that would be UID 1026 and GID 100. [2026-07-11 09:23:02 EDT] Customer - Nina: Should I delete the cache too? [2026-07-11 09:23:31 EDT] Support - Alex: You don’t have to, but if there are partially written previews, clearing the cache is fine. The app will regenerate thumbnails. It may take a while depending on library size. [2026-07-11 09:24:18 EDT] Customer - Nina: Library is about 82,000 photos. I’d rather not trigger a full re-index. [2026-07-11 09:24:57 EDT] Support - Alex: Changing cache ownership won’t re-index originals. It should only allow the existing jobs to create missing previews. If you clear the cache, previews regenerate, but metadata indexing stays intact. [2026-07-11 09:26:40 EDT] Customer - Nina: I ran the ownership change and restarted. Logs now say “preview worker started” and I see CPU activity. [2026-07-11 09:27:15 EDT] Support - Alex: Good sign. Refresh the timeline after a minute. Do the newest uploads start filling in? [2026-07-11 09:28:22 EDT] Customer - Nina: Yes, thumbnails are appearing now. Some older ones are still gray. [2026-07-11 09:28:58 EDT] Support - Alex: Those should fill in as the queue catches up. You can also open Settings > Jobs and confirm the preview queue count is decreasing. [2026-07-11 09:30:06 EDT] Customer - Nina: It says 1,438 pending and dropping. [2026-07-11 09:30:33 EDT] Support - Alex: Perfect. One more thing: make sure both the cache and import folders are writable by UID 1026. That prevents the same issue with future uploads or sidecar files. [2026-07-11 09:31:27 EDT] Customer - Nina: Import folder is writable. Photos folder is read-only by design because I don’t want the app modifying originals. [2026-07-11 09:32:04 EDT] Support - Alex: That’s fine. Read-only originals are supported. The writable paths need to be cache, database, imports, and any sidecar/export folder if you use one. [2026-07-11 09:33:18 EDT] Customer - Nina: Makes sense. Is there a way to limit preview generation so it doesn’t max out the NAS? [2026-07-11 09:33:55 EDT] Support - Alex: Yes. Set PREVIEW_WORKERS=1 in your Compose environment and restart. That keeps thumbnail generation slower but lighter on CPU and disk. [2026-07-11 09:35:09 EDT] Customer - Nina: I’ll add that after this queue finishes. The gray placeholders are mostly gone already. [2026-07-11 09:35:42 EDT] Support - Alex: Great. I’ll summarize the fix: cache volume was owned by root, the container runs as UID 1026/GID 100, and preview generation resumed after correcting cache ownership. [2026-07-11 09:36:21 EDT] Customer - Nina: Thanks. That was it. [2026-07-11 09:36:38 EDT] Support - Alex: You’re welcome. I’ll leave the chat open for a few minutes in case the queue stalls, but it looks healthy now.