Skip to main content

Prerequisites

  • Docker 20.x or higher
  • Node.js 20+ (only needed to run the CLI)

Install

Scaffold a project with a single command, no install required. It generates your configuration and starts the docker image for you.
Follow the prompts to choose full stack vs. API-only and, optionally, S3-compatible storage. By default it scaffolds into an openinary/ directory, writes a docker-compose.yml and .env with a generated BETTER_AUTH_SECRET, and starts the containers.
Once it finishes, your Openinary instance is running at http://localhost:3000.
To get the full openinary command suite (start, stop, upgrade, …), install the CLI globally:

CLI reference

With the global install, the openinary command manages the project you just created: Every command also works without the global install, e.g. npx create-openinary start or pnpm create openinary start.

Initial setup (full stack)

  1. Open http://localhost:3000, you’ll be redirected to /setup.
  2. Create your admin account.
  3. Click your profile in the bottom-left of the dashboard → API Keys → create your first key.

Sample files

The container ships with two files for testing, available at /app/apps/api/public/:
  • example-loan.jpg, for image transformation tests
  • example-rahime-gul.mp4, for video transformation tests
Try a transformation immediately:

Manual setup

Starts the API and web dashboard together.
Prefer running from source? See Local Development.
Volume persistence, in production, always mount all three volumes to durable storage. Losing a volume means losing that data.For better durability, use S3-compatible storage instead of local volumes.

Next steps

Image Transformations

Resize, crop, convert format, and optimize images via URL.

Video Transformations

Resize, trim, and extract thumbnails from videos.

Storage

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

File Uploader

Build a drag-and-drop file uploader with direct-to-storage uploads.