Description
Openinary is an open-source, self-hosted media processing platform that includes:
- on-the-fly transformations for images and videos via URL
- built-in S3-compatible storage with automatic caching
- smart optimization with WebP, AVIF, and modern codecs
- simple REST API with URL-based transformations
- convenient admin dashboard for asset management
For documentation and more examples, please visit https://docs.openinary.dev.
> [!WARNING]
> Please keep in mind that Openinary is still under active development
> and therefore full backward compatibility is not guaranteed before reaching v1.0.0.
Quick Start
Installation
Make sure to have Docker 20.x+ installed and running.
docker run --platform linux/amd64 -d -p 3000:3000
-v openinary-cache:/app/apps/api/cache
-v openinary-public:/app/apps/api/public
-v openinary-db:/app/data
openinary/openinary:latest
Initial Setup
1. Open http://localhost:3000
2. Visit /setup to create admin account
3. Click on your profile in the bottom left navigation, then go to ‘API Keys’ to generate your first API key
Usage Examples
Images
Simple resize
GET /t/w800,h600/image.jpgSmart cropping with face detection
GET /t/w400,h400,cfill,gface/portrait.jpgFormat conversion + optimization
GET /t/w1200,h800,favif,q80/photo.jpgAspect ratio with automatic detection
GET /t/ar16:9,gauto,w1920,h1080/banner.jpg
Videos
Thumbnail with resize
GET /t/w800,h450,so5,favif/video.mp4Web optimized compression
GET /t/w1280,h720,q_75/video.mp4Extract a clip (from 10s to 30s)
GET /t/so10,eo30/interview.mp4Lightweight preview (low quality, small size)
GET /t/w480,h270,q_50/demo.mp4Format conversion with resize
GET /t/w1920,h1080,f_mp4/video.mov
S3-Compatible Configuration
Openinary supports any S3-compatible storage. Configure via environment variables in apps/api/.env:
AWS S3
STORAGE_REGION=us-east-1
STORAGEACCESSKEYID=yourawsaccesskey
STORAGESECRETACCESSKEY=yourawssecretkey
STORAGEBUCKETNAME=your-bucket-name
STORAGEPUBLICURL=https://your-bucket-name.s3.us-east-1.amazonaws.com
Cloudflare R2
STORAGE_REGION=auto
STORAGEACCESSKEYID=yourr2accesskey
STORAGESECRETACCESSKEY=yourr2secretkey
STORAGEBUCKETNAME=your-bucket-name
STORAGE_ENDPOINT=https://your-account-id.r2.cloudflarestorage.com
STORAGEPUBLICURL=https://your-custom-domain.com
Other S3-Compatible Providers
STORAGE_REGION=us-east-1
STORAGEACCESSKEYID=youraccess_key
STORAGESECRETACCESSKEY=yoursecret_key
STORAGEBUCKETNAME=your-bucket-name
STORAGE_ENDPOINT=https://your-s3-compatible-endpoint.com
STORAGEPUBLICURL=https://your-cdn-domain.com
Resources
Full Documentation | Issues | Contact
License
This project is licensed under the AGPL-3.0 License – see the LICENSE file for details.
