mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-07-16 05:33:49 +03:00
S3 Storage (Digitalocean Spaces) compatibility issues #4217
Closed
opened 2026-02-05 08:16:05 +03:00 by OVERLORD
·
5 comments
No Branch/Tag Specified
development
l10n_development
release
snyk-action
ci_and_static
mfa_key
phpstan_june26
MilnerMart/development
GamerClassN7/impersonations-for-admin
Zhey-on/feature/csp-image-css-controls-6033
tortillas5/development
llm_only
vectors
McTom234/oidc-key-algorithms
captcha_example
v26.05.2
v26.05.1
v26.05
v26.03.5
v26.03.4
v26.03.3
v26.03.2
v26.03.1
v26.03
v25.12.9
v25.12.8
v25.12.7
v25.12.6
v25.12.5
v25.12.4
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
No Label
🐕 Support
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#4217
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 @NianwenDan on GitHub (Sep 18, 2023).
Describe the Bug
Digitalocean Spaces is an S3-compatible storage. Compared to others, it is a budget solution based on download data usage and API usage.
However, the BookStack arises following an error message when I try to upload an image as my book cover:
Here is my
.envconfiguration related to the storage part:Steps to Reproduce
Create Digital Ocean Spaces
MANAGE, clickSpacesCreate Spaces BucketSFO3Create a Spaces BucketObtain API Key
APIand chooseSpaces KeyGenerate New KeyKEYandSECRETinto the.envconfiguration fileUpload an image
Debug mode should be activated before uploading:
Expected Behaviour
Files should be successfully uploaded to the Digitalocean Spaces.
Screenshots or Additional Context
PHP Version: 8.1.7
Browser Details
No response
Exact BookStack Version
v23.08.3
@ssddanbrown commented on GitHub (Sep 18, 2023):
Hi @NianwenDan,
Unfortunately I cannot assure that every service that advertises "S3 compatibility" will be supported. Can ultimately come down to their implementation and level of support.
Looking at the error, this seems to be specifically failing on a
ListObjectsV2call, which DigitalOcean advertises to support, but I have not tested this live myself.I get the feeling this may be related to permission control within spaces.
Does DigitalOcean offer permissions/controls on the "space", or key used for access, at all?
Worth looking for anything permission related that may affect "listing", or just accessing, files & folders.
@NianwenDan commented on GitHub (Sep 18, 2023):
Hi @ssddanbrown,
DigitalOcean Spaces does offer permissions to list objects, and I tried to set it as
Enable File Listing. Which should give permission to everyone who wants to list objects in the bucket. It didn't work.I also noticed that "The Spaces API does not support list-objects-v2 pagination." is a known issue. According to https://docs.digitalocean.com/products/spaces/details/limits/
I am more concerned if DigitalOcean Spaces running a different API or return type resulting in this issue.
So far, I do not think it is a bug for BookStack upload module. But could DigitalOcean Spaces be supported in the future?
@ssddanbrown commented on GitHub (Sep 18, 2023):
@NianwenDan I've just been testing things against Digital Ocean spaces myself. All seems to work fine from my testing, but a few specific things to note:
STORAGE_S3_ENDPOINTshould not include the bucket name. That will result in the error you experienced.uploads/imagesfolder within your space publicly accessible, while ideally keeping other paths inaccessible. Could't find a nice way to do this in-platform, but you could set S3 policies via the API. I useds3cmdto set the policy in my bucket for this:With
policy.jsonbeing as per the below. You'd have to changebookstack-testingin this to match your bucket/space name.For reference, here are the relevant BookStack settings I used:
@NianwenDan commented on GitHub (Sep 18, 2023):
Hi @ssddanbrown,
I am sorry I didn't read Digital Ocean Spaces API documentation before.
That method did work for me.
Also, this issue tends to be more focused on how to set up the configuration file correctly, specifically for DigitalOcean Spaces. It would be better to change the tag from
BugtoSupport, and mark it closed.Thanks for your time to help me out again!
@ssddanbrown commented on GitHub (Sep 18, 2023):
Happy you could get things working! Will therefore close this off.
Also, thanks for the sponsorship!