Vibecode Cloudinary

track this build5 phases, 10 steps, beginner friendly
KINDA · weekend project
price $99/moyou'd save $1,188/yrbuild time weekendcategory ☁️ hostingreplaced by 0 people

On-the-fly resizing and format negotiation is imgproxy or a sharp service in front of object storage, and a weekend gets you there. The global CDN, video transcoding and the media library UI are what $99 buys, and the CDN is not something you run.

the project pack5 files · written for this build, step by step
README.md
# Cloudinary · indie build

An image CDN for your own sites without writing an image processor: originals in S3-compatible storage, imgproxy resizing and converting on request by signed URL, a cache in front, and a helper that emits srcset for every image. Video and the media library stay with the vendor.

Estimated effort: **weekend**. Work `BUILD_PLAN.md` top to bottom · every phase ends in a check that has to pass before the next one starts.

## Stack

| Part | Choice | Why |
| --- | --- | --- |
| Processor | imgproxy in Docker | rule zero: do not write an image processor |
| Storage | Cloudflare R2, Backblaze B2 or MinIO | originals as objects, keyed by content hash |
| Cache | Cloudflare or Caddy | transforms are cheap once, expensive always |
| Upload service | A small Node endpoint | sniff, cap, strip, store |

## Before you start

Have every one of these ready. The plan assumes them from step one.

- [ ] **Node.js 22 or newer** · free
  - Why: Everything in this build runs on it: the server, the scripts, the tests.
  - Get it: Download the LTS installer from nodejs.org, or install with your package manager (brew install node, or nvm install 22). Restart the terminal afterwards.
  - Verify: node --version prints v22 or higher
- [ ] **A terminal and a code editor** · free
  - Why: Every step below is a command you type or a file you edit.
  - Get it: VS Code (code.visualstudio.com), Cursor or Zed. Open a folder for the project and use the editor's built-in terminal.
  - Verify: You can open a folder and run a command in its terminal
- [ ] **Git** · free
  - Why: History for your code, and the way most hosts deploy.
  - Get it: Install from git-scm.com or with your package manager, then run git init in the project folder once it exists.
  - Verify: git --version prints a version
- [ ] **An S3-compatible bucket with access keys** · cents to a few dollars a month
  - Why: Where originals live.
  - Get it: Cloudflare R2: dashboard > R2 > Create bucket > Manage R2 API Tokens. Backblaze B2: Buckets > Create, then App Keys. Note endpoint, bucket, key id and secret.
- [ ] **Docker on a VPS** · free
  - Why: imgproxy runs as a container.
  - Get it: docs.docker.com/engine/install/ubuntu
  - Verify: docker compose version prints
- [ ] **A small always-on server (VPS)** (optional) · about $5 a month
  - Why: This needs one process running all the time with a public address. imgproxy needs a box; 2 GB of RAM is comfortable.
  - Get it: Hetzner Cloud (from about 4 EUR), DigitalOcean or Fly.io. Ubuntu 24.04, the smallest size. You need SSH access and a public IP. Only needed for the deploy phase; develop locally first.
- [ ] **A domain or subdomain** (optional) · roughly $10 a year, or free on an existing domain
  - Why: img.yourdomain.com
  - Get it: Register at Cloudflare Registrar, Porkbun or Namecheap, or use a subdomain of one you already own. You add one DNS record in the deploy phase.
- [ ] **Caddy on the server** (optional) · free
  - Why: Automatic HTTPS in front of the Node process. Without TLS the browser features this relies on (and your visitors' trust) do not work.
  - Get it: On the VPS: follow the install steps at caddyserver.com/docs/install for Ubuntu. One Caddyfile with your domain and a reverse_proxy line is the whole config.
  - Verify: caddy version prints a version on the server
- [ ] **imgproxy signing key and salt** · free
  - Why: Unsigned URLs would let anyone resize anything through your box.
  - Get it: openssl rand -hex 32 twice, into .env.

## Quick start

```sh
mkdir imgcdn && cd imgcdn && git init && npm init -y && npm pkg set type=module && npm install @aws-sdk/client-s3@3 sharp@0.35.3
mkdir -p data && cp .env.example .env
```

Then copy `.env.example` to `.env` and fill in the values it documents.

## Honest limits

This build deliberately does not replace:

- Video, the media library, AI tagging, upload widgets: the $99.
- video transcoding and adaptive streaming
- the media library and AI tagging
- global edge delivery you do not operate
- upload widgets and SDKs for every platform

If one of those is essential to you, that is the reason to keep paying for Cloudinary, and the README should say so rather than pretend.

$ choose a build depth, inspect the files, then open the complete pack in your agent

why people still pay

Images are solved; video is not. Teams with video, or with designers who need a library, pay.

what you lose

xvideo transcoding and adaptive streaming

xthe media library and AI tagging

xglobal edge delivery you do not operate

xupload widgets and SDKs for every platform

prior art · use these instead of building, if you'd ratherimgproxyfast and secure image processing serversharphigh-performance Node image processing
share on X ↗"I just replaced Cloudinary ($99/mo) with one prompt"
the numbers

Cloudinary pricing

plus$99/mo · monthly flat, credit-based · $1,188/yr

free tierThe free plan includes 25 monthly credits covering transformations, storage and bandwidth.

verified 2026-09-04 · source ↗

questions
Is Cloudinary free?

The free plan includes 25 monthly credits covering transformations, storage and bandwidth. Paid is Plus at $99/mo (checked 2026-09-04).

Vibecode Cloudinary

Kinda. The core of Cloudinary is buildable in a weekend with the prompt on this page, but there are real gaps: video transcoding and adaptive streaming, the media library and AI tagging. Read the honest list above before committing.

How much does Cloudinary cost?

Cloudinary costs about $99/month (Plus, checked 2026-09-04), which is $1188 per year.

What do I lose by replacing Cloudinary?

Honestly: video transcoding and adaptive streaming; the media library and AI tagging; global edge delivery you do not operate; upload widgets and SDKs for every platform. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Cloudinary?

Yes: imgproxy (fast and secure image processing server), sharp (high-performance Node image processing). Using prior art is also vibecoding; the prompt is for when you want it exactly your way.