Edge
Strapi logo

For Strapi

Strapi on Edge,
the headless API stack

Self-host the leading open-source headless CMS on real VMs. S3-compatible media storage, global CDN for the API and uploads, zero egress fees on the way to your front-end.

# config/plugins.js — S3 upload provider

module.exports = ({ env }) => ({

upload: {

config: {

provider: 'aws-s3',

providerOptions: {

endpoint: 'https://storage.edge.run',

params: { Bucket: env('EDGE_BUCKET') },

},

},

},

})

# Provision the VM

$ edge compute create --plan small ...

Why Strapi teams pick Edge

A real Node host, a global delivery network, and a media bucket — the three things every Strapi production setup needs.

Node.js + your database, your way

Strapi runs on a small VM with Postgres, MySQL, MariaDB or SQLite. Pick the DB you already operate; Edge stays out of the way.

S3 upload provider

Use the official `@strapi/provider-upload-aws-s3` plugin pointing at Edge Storage. Media library uploads land in a durable, CDN-fronted bucket.

Image transforms at the edge

Skip Strapi's built-in image processing for high-volume use cases — let Edge Image Optimization generate responsive variants from a URL.

Global CDN for the API

Front the REST and GraphQL endpoints through the Edge CDN. Cache public content responses, fall through for authenticated requests.

Pairs with your front-end

Built to feed Next.js, Nuxt, SvelteKit, Astro and mobile apps. Run the front-end on its own Edge VM or static-host it from Edge Storage.

Agent-deployable

Tell the Edge agentic API to deploy a Strapi instance to a domain — VM, DNS, CDN and SSL all wired up.

Reference architecture

How Strapi maps to Edge

Strapi as the API origin, your front-end (Next.js / Nuxt / Svelte) on a separate VM or in Storage, both fronted by the CDN.

Compute

Runs Strapi (Node.js) + your database on a VM

Storage

S3-compatible upload provider for the media library

CDN

Caches the public REST/GraphQL API and uploaded media

Image Optimization

Optional: replace Strapi image processing with edge transforms

DNS

Anycast DNS for `cms.example.com` and `app.example.com`

# Next.js front-end → Strapi API on Edge

const posts = await fetch(

'https://cms.example.com/api/posts',

{ next: { revalidate: 60 } }

).then(r => r.json())

# Image URL via Edge Image Optimization

<img src=`https://cdn.example.com/${post.cover.url}?w=1200&fm=webp` />

Common questions

{faqs.map((faq) => (

{faq.q}

{faq.a}

))}

Ship Strapi on Edge

30-day trial. Bring an existing Strapi instance or scaffold one fresh.

}