Strapi plugin logo for DigitalOcean Spaces Provider

DigitalOcean Spaces Provider

A provider for uploading files to DigitalOcean Spaces

@johngerome/strapi-provider-upload-spaces

Release npm bundle size NPM Version GitHub License

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

STATS

2 GitHub stars278 weekly downloads

Last updated

95 days ago

Strapi Version

Unavailable

Author

github profile image for John Gerome Baldonado
John Gerome Baldonado

Related plugin

Media Upload

Useful links

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.