# imgproxy / Thumbor / Imagor

Image transforms you host. imgproxy OSS is MIT; Thumbor is MIT; Imagor is Apache-2.0 — Cloudinary without the credit pack.

**Replaces:** Cloudinary

**Tier:** Easy

## Problem

Cloudinary Plus is $89/month for 225 credits; Advanced is $224/month billed yearly. You wanted resize, format, and a URL. imgproxy's open-source edition is MIT (Pro processors are paid — skip them). Thumbor is MIT. Imagor is Apache-2.0. You still need object storage and a CDN in front.

## Stack

- [imgproxy](https://imgproxy.net) — MIT on-the-fly image proxy (Pro edition is paid)
- [Imagor](https://github.com/cshum/imagor) — Apache-2.0 image server
- [Thumbor](https://github.com/thumbor/thumbor) — MIT image transform service

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Cloudinary Plus / Advanced | $2,400 | imgproxy + object storage + a CDN |

**About $2,400 / year** on a small team, before you count lock-in.

## Deploy on Railway

Placeholder: imgproxy (or Imagor/Thumbor) in front of S3/MinIO or a volume. Put Cloudflare in front. No DAM UI on day one.

[Start on Railway](https://c17.io/go/railway/imgproxy-media?from=%2Fstacks%2Fimgproxy-media.md)

## AGENT_PROMPT

```
Replace Cloudinary URL transforms with imgproxy (preferred), Imagor, or Thumbor.

- Point the proxy at S3/MinIO or a volume of originals. Bind HTTP to 0.0.0.0:$PORT. Sign URLs.
- Do not enable imgproxy Pro features without a license. Video transforms are not the OSS path.
- Swap one Cloudinary URL for a proxy URL. Write AGENT_PROMPT.md.
```

## FAQ

### Is this a DAM?

No. It resizes and serves. Uploads and a media library stay in your app or Nextcloud. Cloudinary bundled those; this stack does not.

Source: https://c17.io/stacks/imgproxy-media
