With Kontainer's Strapi integration, your editors can select images, videos, and files directly from your DAM without uploading files to Strapi.
Strapi only stores a reference to the file; the actual asset stays in Kontainer and is delivered via CDN.
Go to the Kontainer integration page to learn more about use cases, benefits and more.
Requirements
- Strapi v5 (Strapi v4 is not supported)
- Node.js 18+
- A Kontainer account (https://yourcompany.kontainer.com)
- A developer with access to your Strapi codebase and the ability to deploy
What Gets Stored Where?
Your files stay in Kontainer. Nothing is uploaded to Strapi's media library. Strapi stores only a JSON reference to the asset, which includes:
fileId, fileName, folderId- identifiers for retrieving the asseturl- the CDN URL, including the download template you pickedthumbnailUrl, type, extension, dimensions, sizealt, descriptionand every Kontainer custom field
Because the alt text and all custom field values travel with the reference, editors do not retype metadata in Strapi, and your frontend can read them straight off the Strapi API response.
Getting started
1. Install the plugin
In your Strapi project:
npm install @kontainer/strapi-plugin
Commit package.json and package-lock.json so the plugin ships with your deploy. Strapi discovers and enables the plugin automatically - no configuration file changes needed.
2. Add the Kontainer field to a content type
In the Content-Type Builder pick Custom fields → Kontainer media, or add it to the schema directly:
"hero": {
"type": "customField",
"customField": "plugin::kontainer.media"
}
The Content-Type Builder is read-only in production, so make this change in your development environment and deploy the schema change.
3. Build
The plugin's admin interface is compiled into the admin bundle. This step is required - without it, the "Choose from Kontainer" button will not appear.
npm ci --omit=dev
npm run build
npm run start
4. Connect to Kontainer
Go to Settings → Kontainer → Configuration and enter your Kontainer URL. That's the whole setup - there are no API keys or environment variables required.
Settings are stored in the Strapi database, so you'll need to set them once per environment (staging and production separately).
5. Select assets
In the editor, click Choose from Kontainer on the field. Browse, search, and filter your Kontainer library, optionally apply a download template (crop, resize, format), and select the file. Strapi saves the reference; the CDN URL reflects the template you chose.
Optional: file usage tracking
Kontainer can show you where each file is used in Strapi. Under Settings → Kontainer, click Generate to create a token, then register the displayed endpoint URL plus the token as an integration in Kontainer under Settings → Integrations. Kontainer then polls Strapi and reports usage across all content types, including drafts, locales, components, and dynamic zones.
Using the reference in your frontend
The reference comes back unchanged from the Strapi content API:
const page = await fetch(`${STRAPI_URL}/api/pages/${documentId}`).then((r) => r.json());
const { url, alt } = page.data.hero;
Request the asset from url - it is served from Kontainer's CDN.
Support
If you need help setting up or configuring the Strapi plugin, our support team is happy to assist.
Please contact: support@kontainer.com