npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

strapi-provider-upload-s3-compatible

v1.0.1

Published

A Strapi upload provider for S3-compatible object storage servers

Downloads

183

Readme


Features

  • ✅ Upload files to S3-compatible server
  • ✅ Delete files from S3-compatible server
  • ✅ Generate signed URLs for private files
  • ✅ Support for both public and private buckets
  • ✅ TypeScript support
  • ✅ Full type safety with Zod validation
  • ✅ Configurable cache control headers

Configuration

To use this provider in your Strapi application, configure it in your config/plugins.ts file:

import type { Config as S3Config } from 'strapi-provider-upload-s3-compatible'

export default {
  upload: {
    config: {
      provider: 'strapi-provider-upload-s3-compatible',
      providerOptions: {
        endPoint: process.env.S3_ENDPOINT,               // your S3 server endpoint
        accessKey: process.env.S3_ACCESS_KEY,            // your S3 access key
        secretKey: process.env.S3_SECRET_KEY,            // your S3 secret key
        region: process.env.S3_REGION,                   // your S3 region
        bucket: process.env.S3_BUCKET,                   // your S3 bucket name
        isPrivate: process.env.S3_IS_PRIVATE === 'true', // true for private, false for public
        folder: process.env.S3_FOLDER || 'strapi',       // folder prefix in bucket
        forcePathStyle: process.env.S3_FORCE_PATH_STYLE === 'true', // true for path style, false for virtual hosted-style
      },
      actionOptions: {
        upload: {
          cacheControl: 'public, max-age=31536000, immutable', // optional
        },
        uploadStream: {
          cacheControl: 'public, max-age=31536000, immutable', // optional
        },
        getSignedUrl: {
          expiresIn: 3600, // optional
        },
      },
    } satisfies S3Config,
  },
}

Private Files

When isPrivate is set to true, the provider will generate signed URLs for file access. Signed URLs expire after the configured actionOptions.getSignedUrl.expiresIn period.

Public Files

When isPrivate is set to false, files are accessible via direct URLs without authentication.

Development

Scripts

  • pnpm build - Compile TypeScript to JavaScript in the dist/ directory
  • pnpm dev - Watch mode for development
  • pnpm lint - Run ESLint
  • pnpm lint:fix - Fix ESLint errors
  • pnpm typecheck - Type check without emitting files

Requirements

  • Node.js >= 20
  • pnpm 10.23.0 or
  • Volta.sh

License

MIT