Skip to main content
One command scaffolds a project, writes its config, and starts the containers. You need Docker 20.x or higher, and Node 20+ to run the CLI.
Answer the prompts (full stack or API-only, and optionally S3-compatible storage). It writes an openinary/ directory with a docker-compose.yml and a .env carrying a generated BETTER_AUTH_SECRET, then starts the containers on http://localhost:3000. The container ships with sample media, so you can transform something straight away:
Running the hosted version instead? See the Cloud Quickstart.

Create your admin account

In full stack mode, open http://localhost:3000 and you land on /setup. Create the account, then open your profile in the bottom-left of the dashboard and go to API Keys to create your first key. In API-only mode a key is generated on first boot and printed to the container logs once. Grab it with docker logs <container-id>. You can also pre-seed the account and key from the environment, see admin bootstrap.

Sample media

Four files ship in the image at /app/apps/api/public/: example-loan.jpg, example-grant-ritchie.jpg, example-kristopher-villa.jpg and example-rahime-gul.mp4.

CLI commands

npx create-openinary scaffolds. To manage the project afterwards, install the CLI globally:
Every command also works without the global install: npx create-openinary start, or pnpm create openinary start.

Volumes

Three volumes hold everything that matters. Mount all three to durable storage in production, or use S3-compatible storage instead of local volumes.

Manual setup

API and web dashboard together.

Next steps

Transform Media

Every parameter for images and video, in one page.

Storage

Connect AWS S3, Cloudflare R2, or any S3-compatible provider.

File Uploader

Drop a React uploader into your app, no API key in the browser.

Server Configuration

Secrets, CORS, upload limits, and the admin bootstrap.