Built by






Last updated

Mar 22, 2024, 12:15:36 PM3 months ago


Cloudflare R2 storage plugin for Medusa. This plugin also supports CSV exports and imports. R2 is S3-compatible object storage service by Cloudflare and has a 10GB/month forever-free tier.
This plugin is written in Typescript and uses ESBuild to create the bundle and files needed to be included in the Copy to clipboardmedusa.config.js file.

Getting Started

  1. Create a Cloudflare account: If you don't have one, you can create one here.
  2. Create a R2 bucket: Follow this guide to create a R2 bucket.
  3. Make the bucket public: Follow this guide to make the bucket public. While managed public access for your buckets through r2.dev cloudflare subdomain is relatively easy, it's preferred to use a custom domain as the managed r2.dev subdomain is rate-limited, custom domain also makes use of Cloudflare Cache to accelerate access to your R2 bucket.
  4. Obtain required credentials: You will need the following credentials to configure the plugin:
    • Copy to clipboardaccount_id: Login to your Cloudflare account and go to the Copy to clipboardR2 section. The Copy to clipboardaccount_id is the Copy to clipboardAccount ID in the top right corner.
    • Copy to clipboardaccess_key and Copy to clipboardsecret_key
      • Follow this guide to generate Access Key ID and Secret Access Key for your R2 bucket.
    • Copy to clipboardbucket: The name of the R2 bucket you created.
    • Copy to clipboardpublic_url: The public URL of the R2 bucket you created.
  5. Install Copy to clipboardmedusa-file-r2 plugin: Run the following command in your terminal:
    yarn add medusa-file-r2
  6. Add the plugin to medusa.config.js: Add the following code to your medusa.config.js file:
    const plugins = [
    // other plugin configurations
    resolve: "medusa-file-r2",
    options: {
    bucket: "YOUR_R2_BUCKET_NAME",
    endpoint: "https://YOUR_ACCOUNT_ID.r2.cloudflarestorage.com",
    access_key: "YOUR_ACCESS_KEY",
    secret_key: "YOUR_SECRET_KEY",
    public_url: "YOUR_R2_BUCKET_PUBLIC_URL",
    // Optional options
    // cache_control: "max-age=31536000",
    // presigned_url_expires: 60 * 60, // 1 hour

Build your own plugins

Develop your own plugins with our API to speed up your processes.

Make your plugin available via npm for it to be shared in our Plugin Library with the broader Medusa community.