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:
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
Run with raw Docker commands (no CLI)
Run with raw Docker commands (no CLI)
- Full stack
- With S3 storage
- API only
API and web dashboard together.
Run from source
Run from source
See Local Development.
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.