Openinary: The Self-Hosted Cloudinary Alternative Nobody Built Before
Source: Dev.to

I spent the last 6 months building Openinary, and I believe it fills a real gap in the self‑hosted ecosystem.
The Problem
You know what’s wild?
- There’s Nextcloud for file storage
- There’s Immich for photos
- But there was nothing for image processing and delivery at scale, fully self‑hosted
Most SaaS image platforms follow the same pattern:
- A great API
- Strong lock‑in
- A bill that keeps growing
Cloudinary gates your media. Uploadcare does the same. I was paying $90/month for Cloudinary for:
- Resizing images
- Processing a demo video
- Adding watermarks
- Optimizing formats
The Solution
Openinary is what I built – a self‑hosted, open‑source alternative to Cloudinary, focused on simplicity and control.
What It Does
- Self‑hosted, runs on your own infrastructure via Docker
- Simple URL‑based API (e.g.,
/w_1500,h_500,f_avif/sample.jpg) - Smart caching with invalidation
- S3‑compatible storage – works with AWS S3, Cloudflare R2, MinIO
- Automatic format optimization (WebP, AVIF, best format per browser)
- Open source, AGPL‑3.0 license
Why It Matters
The self‑hosted movement is real. People are moving away from SaaS lock‑in, especially for core infrastructure. Until now, one piece was missing: the ability to process and deliver media at scale on your own infrastructure. Openinary aims to fill that gap.
Current Status
- ⭐ 83 GitHub stars
- 🔥 Featured on GitHub Trending (Dec 9)
- 🎥 8,000+ views on the feature video
- 🎯 Goal: 100 stars by Dec 31 (yes, I’m chasing this 😅)
Tech Stack
- Runtime: Node.js
- Deployment: Docker, one command
- Storage: S3‑compatible (AWS, Cloudflare R2, MinIO)
- License: AGPL‑3.0
Try It
GitHub:
Deploy guides:
Looking For
Early feedback, especially from Cloudinary users:
- Ideas on what to build next
- Help spreading the word before the end of the year
If you’ve hit the wall with expensive image services, or wanted to self‑host but couldn’t find a solid solution, I’d love to hear from you.
Questions?
Drop them in the comments. Happy to discuss the architecture, use cases, or why I built this instead of using existing solutions.