mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-10 03:12:20 +03:00
STORAGE_TYPE=local_secure URLs still reference .../public rather than .../storage/uploads... #5472
Closed
opened 2026-02-05 10:05:35 +03:00 by OVERLORD
·
5 comments
No Branch/Tag Specified
development
l10n_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
pull-request
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#5472
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @shadowimmage on GitHub (Oct 30, 2025).
Describe the Bug
Trying to upload any images for things like in-book images or covers for shelves, etc. successfully places the files on the server filesystem, so the server can write and save the uploaded files, but then the application fails to serve them back.
Steps to Reproduce
Expected Behaviour
Images appear in shelves, books, etc. The application should be serving the files from the storage location, but it's like it expects there to be files at /uploads, even though there aren't.
Screenshots or Additional Context
Using .env setting STORAGE_TYPE=local_secure.
Also added STORAGE_IMAGE_TYPE=local_secure -- no change.
Toggled public access on/off -- no change
Checked and re-checked filesystem permissions, nginx user/group owns all files and directories necessary - the web server has no trouble saving the uploaded images
When loading the bookstack shelves page:
Nginx error shows
2025/10/29 17:30:25 [error] 120076#120076: *362 open() "/var/www/bookstack/public/uploads/images/cover_bookshelf/2025-10/thumbs-440-250/mg-1310.JPG" failed (2: No such file or directory), client: 10.158.231.57, server: wiki.server.tld, request: "GET /uploads/images/cover_bookshelf/2025-10/thumbs-440-250/mg-1310.JPG HTTP/1.1", host: "wiki.server.tld", referrer: "https://wiki.server.tld/shelves"Trying to load the image URL directly, or where it looks like the image should be:
Trying to load https://wiki.server.tld/storage/uploads/images/cover_bookshelf/2025-10/thumbs-440-250/mg-1310.JPG directly also doesn't work, and yields a 404 Not Found Nginx error:
2025/10/29 17:40:11 [error] 120076#120076: *3367 open() "/var/www/bookstack/public/storage/uploads/images/cover_bookshelf/2025-10/thumbs-440-250/mg-1310.JPG" failed (2: No such file or directory), client: 10.158.231.57, server: wiki.server.tld, request: "GET /storage/uploads/images/cover_bookshelf/2025-10/thumbs-440-250/mg-1310.JPG HTTP/1.1", host: "wiki.server.tld"Why does it keep trying to load from /public when I have the .env STORAGE_TYPE set to local_secure?
Browser Details
Firefox 144.0; MS Edge Version 141.0.3537.99 (Official build) (64-bit); nginx 1.20.1; Rocky Linux 9
Exact BookStack Version
BookStack v25.07.3
@ssddanbrown commented on GitHub (Oct 31, 2025):
Hi @shadowimmage,
The image URLs do not change when using the
local_secureoption.When an image path is requested, generally the web-server will provide the image directly if in public space, but if there's no file there it'll defer back to the application to serve the image, where is where we're set to handle standard
uploads/images/*paths via the local secure system, using the storage path.To me this sounds like the nginx configuration is not allowing images (or specific paths where images are located) to be served via PHP. Feel free to share your nginx configuration for BookStack and I can look deeper into what might be happening in your environment.
@shadowimmage commented on GitHub (Nov 1, 2025):
Hi, Thanks, I think I see how that's working. I didn't understand that it was falling back to the application to server the images and so I was confused thinking that the URL should have been different because of the different storage location. I'm not really that familiar with the inner workings of PHP.
I'll also admit, I'm not the best with nginx, but find it more approachable than whatever arcane madness is going on in apache.
For reference, I pulled most of this config out of the script here : https://github.com/blogmotion/bm-bookstack-install/blob/master/bookstack-install-RHEL9.sh Which I followed from https://www.bookstackapp.com/docs/admin/installation/#community Which does successfully get the pages loading and content stored, but isn't working with images from the server to the client(s) - so I'm sure there's something wrong with my location{} blocks, but I'm not sure what.
Thanks for all the help.
@ssddanbrown commented on GitHub (Nov 2, 2025):
Thanks for providing the details @shadowimmage.
Can you try adding
try_files $uri $uri/ /index.php?$query_string;as a line within the last location block, so it looks like this?:Edit: Remember to reload/restart nginx after making config changes!
@shadowimmage commented on GitHub (Nov 4, 2025):
Hello,
Sorry for the delay in getting back to you. This addition worked!
At first I thought that that wasn't the case, as I was still getting HTTP 404 errors when the images should have loaded, but after I re-uploaded the images to their respective pages/book cover images, they are successfully being loaded!
@ssddanbrown commented on GitHub (Nov 13, 2025):
Awesome! There generally shouldn't be any need to re-upload images on storage type change, apart from maybe the icons in the settings, but since this sounds like it's sorted for you I'll go ahead and close this off.