Skip to main content
Openinary writes to local disk by default. Set these five variables and it writes to your bucket instead.
The provider is detected from STORAGE_ENDPOINT: set it for anything that is not AWS S3, leave it unset for AWS. Only these exact names are read, there is no fallback to S3_-prefixed ones.
The bundled Docker Compose file does not pass these through. Its services declare no STORAGE_* entries and no env_file, so putting them in the root .env does nothing and the container silently falls back to local disk. Add them to the service’s environment: block yourself:
Platforms that inject environment variables directly (Railway, Coolify, Dokploy) need nothing extra. From source, they are read from apps/api/.env.

Variables

Endpoints by provider

Backblaze B2 and other S3-compatible services work the same way: set their endpoint and a region.

Production timeouts

Defaults leave every timeout off, which is fine on a fast link and unhelpful when the provider stalls. A reasonable production set:
Raise STORAGE_REQUEST_TIMEOUT well past 30000 if you accept large video uploads.

Quick Start

Run Openinary with local or S3 storage.

Upload & Cache Warming

Upload files and prewarm the transformation cache.