Storage Providers

Configure AWS S3 (or any S3-compatible provider).

The storage package supports multiple cloud providers through unstorage drivers. This guide covers setup for each provider.

Local Filesystem (Development)

The filesystem driver is enabled by default in development:

.env.local

# .env.local
STORAGE_PROVIDER=fs
STORAGE_BASE_URL=/storage.dev

Files are stored locally and served via Next.js static file serving at /storage.dev/*.

Note: Filesystem storage is disabled in production (NODE_ENV === 'production').

AWS S3 (or any S3-compatible provider)

Environment Variables

.env.production

# .env.production
STORAGE_PROVIDER=s3
STORAGE_BASE_URL=https://my-bucket.s3.us-east-1.amazonaws.com
STORAGE_S3_ACCESS_KEY_ID=your-access-key
STORAGE_S3_SECRET_ACCESS_KEY=your-secret-key
# Optional for S3-compatible providers (R2, MinIO, etc.)
STORAGE_S3_ENDPOINT=https://your-endpoint
STORAGE_S3_REGION=us-east-1
STORAGE_S3_BUCKET=my-bucket

For S3-compatible providers (R2, MinIO, etc.), set STORAGE_S3_ENDPOINT to the provider endpoint.

Never commit secrets. For production, set STORAGE_S3_SECRET_ACCESS_KEY in your hosting provider's secret manager.

Custom Provider

Register any unstorage-compatible driver:

packages/storage/src/registry.ts

import { storageRegistry, createStorage } from '@kit/storage';
import customDriver from './my-custom-driver';
storageRegistry.register('custom', async () => {
return createStorage({
driver: customDriver({
// Driver options
}),
});
});

Then set:

STORAGE_PROVIDER=custom

Next: API Reference