DigitalOcean Spaces Provider
A provider for uploading files to DigitalOcean Spaces
@johngerome/strapi-provider-upload-spaces
A Strapi provider for uploading files to DigitalOcean Spaces. Compatible with Strapi v4 and v5.
Installation
npm
npm install @johngerome/strapi-provider-upload-spaces
yarn
yarn add @johngerome/strapi-provider-upload-spaces
pnpm
pnpm add @johngerome/strapi-provider-upload-spaces
Configuration
Edit your Strapi configuration in ./config/plugins.js
:
1module.exports = ({ env }) => ({
2 upload: {
3 config: {
4 provider: '@johngerome/strapi-provider-upload-spaces',
5 providerOptions: {
6 credentials: {
7 accessKeyId: env('DO_SPACE_ACCESS_KEY'),
8 secretAccessKey: env('DO_SPACE_SECRET_KEY'),
9 },
10 endpoint: env('DO_SPACE_ENDPOINT'), // e.g., 'nyc3.digitaloceanspaces.com'
11 region: env('DO_SPACE_REGION', 'us-east-1'),
12 bucket: env('DO_SPACE_BUCKET'),
13 directory: env('DO_SPACE_DIRECTORY', ''), // Optional, defaults to root
14 cdn: env('DO_SPACE_CDN'), // Optional, CDN URL if configured
15 ACL: env('DO_SPACE_ACL', 'public-read'), // Optional, defaults to 'public-read'
16 },
17 actionOptions: {
18 upload: {},
19 uploadStream: {},
20 delete: {},
21 },
22 },
23 },
24});
Security Middleware Configuration
Due to the default settings in the Strapi Security Middleware you will need to modify the contentSecurityPolicy
settings to properly see thumbnail previews in the Media Library.
Edit your Strapi configuration in ./config/middlewares.js
:
1module.exports = [
2 // ...
3 {
4 name: 'strapi::security',
5 config: {
6 contentSecurityPolicy: {
7 useDefaults: true,
8 directives: {
9 'connect-src': ["'self'", 'https:'],
10 'img-src': [
11 "'self'",
12 'data:',
13 'blob:',
14 'market-assets.strapi.io',
15 'yourBucketName.yourRegion.cdn.digitaloceanspaces.com', // with CDN
16 'yourBucketName.yourRegion.digitaloceanspaces.com',
17 ],
18 'media-src': [
19 "'self'",
20 'data:',
21 'blob:',
22 'market-assets.strapi.io',
23 'yourBucketName.yourRegion.cdn.digitaloceanspaces.com', // with CDN
24 'yourBucketName.yourRegion.digitaloceanspaces.com',
25 ],
26 upgradeInsecureRequests: null,
27 },
28 },
29 },
30 },
31 // ...
32];
Environment Variables
Add these variables to your .env
file:
1DO_SPACE_ACCESS_KEY=your_access_key
2DO_SPACE_SECRET_KEY=your_secret_key
3DO_SPACE_ENDPOINT=your_space_endpoint
4DO_SPACE_REGION=your_space_region
5DO_SPACE_BUCKET=your_space_name
6DO_SPACE_DIRECTORY=optional_directory_path
7DO_SPACE_CDN=optional_cdn_url
8DO_SPACE_ACL=optional_acl_setting
License
MIT
Install now
npm install @johngerome/strapi-provider-upload-spaces
Create your own plugin
Check out the available plugin resources that will help you to develop your plugin or provider and get it listed on the marketplace.