← all SaaS
Self-host Cloudinary
Image / video CDN + on-the-fly transformation ·
Category: files, photos & sync
Cloudinary is a hosted media platform — upload an image, then transform it (resize, format-convert, optimize, watermark) by URL parameters and serve from their CDN. The self-hostable replacements all do URL-driven transforms; you supply your own object storage (S3 / MinIO) for origin and a CDN (Cloudflare in front) for edge delivery.
Cloudinary pricing anchor: Free 25 monthly credits; Plus $89/mo (225 credits); Advanced $224/mo.
- GitHub
- ★ 10.7k · last commit 1d ago · 56 open issues
- License
-
MIT Open-source edition is MIT; Pro edition with extra processors and AVIF speedups is paid.
- Setup time
- 5min docker run
- Monthly cost
- $5-15/mo VPS for the proxy; storage and CDN bill separately.
Migration sketch. `docker run -d -p 8080:8080 -e IMGPROXY_KEY='hex' -e IMGPROXY_SALT='hex' -e IMGPROXY_S3_ENDPOINT='https://s3.example.com' darthsim/imgproxy:latest`. Replace Cloudinary URLs (`https://res.cloudinary.com/.../w_400/image.jpg`) with imgproxy URLs (`https://imgproxy.example.com/<signature>/w:400/<base64-or-plain-source-url>`). Source images live in S3/MinIO. Put Cloudflare or Bunny.net in front for global edge cache.
Good fit forMost use cases — fastest single-binary image processor, near-perfect feature parity with Cloudinary's transformation surface.
Weak atNo upload/management UI; you push images to S3 yourself. Video transformation requires the Pro edition.
- GitHub
- ★ 10.5k · last commit 4w ago · 35 open issues
- License
-
MIT - Setup time
- 10min docker run
- Monthly cost
- $5-15/mo VPS.
Migration sketch. `docker run -p 8888:8888 minimalcompact/thumbor`. Thumbor URLs follow `/{unsafe|signature}/{operations}/{source-image}` — e.g. `/300x200/smart/example.com/image.jpg` for smart-crop to 300x200. Smart crop uses ML detectors (face/feature). Storage backends include S3, GCS, filesystem; result cache via Redis or Memcached.
Good fit forTeams who want smart-crop / face detection / feature detection as first-class — Thumbor pioneered this category.
Weak atPython stack with more moving parts than imgproxy; less throughput per CPU on heavy transforms.
- GitHub
- ★ 32.2k · last commit 13d ago · 125 open issues
- License
-
Apache-2.0 - Setup time
- 30min — build a small Node service
- Monthly cost
- $5/mo VPS for a small Node service.
Migration sketch. Build a Cloudinary-shaped URL service in Node + Sharp: parse query string for transforms (`?w=400&fmt=webp&q=80`), fetch source from S3, run `sharp(buf).resize(400).webp({quality:80}).toBuffer()`, return. Cache aggressively with a CDN. ~150 lines for the core service. Sharp is libvips-backed and faster than ImageMagick for resize/format conversion.
Good fit forTeams that want fully custom transform semantics (project-specific watermarking, branding) without paying Cloudinary's per-credit pricing.
Weak atBring your own everything — you build the URL contract, signing, cache invalidation, and admin UI.
In a terminal? npx os-alt cloudinary prints this table —
how the CLI works →