---
title: "Self hosted image CDN: 32 presets on a global cache"
description: "Self hosted image CDN run in house by La Boétie: 32 image presets, signed private delivery and cache purge by asset."
canonical: "https://laboetie.io/products/images"
language: en
---
# Images: self hosted image CDN

Images is the self hosted image CDN La Boétie runs in house in place of a paid image CDN. It renders 32 presets on the fly and caches the results at the edge. The service delivers images for studio and client sites and has no public offer.

Status: Live. Access: In house. 32 transform presets served through a global cache.

## Capabilities

- Assets go through a public renderer or a signed private renderer.
- One definition holds the transform ladder.
- Monitoring runs a full chain canary and raises alerts.
- Cache purges run per asset at the edge.
- Migrating from Cloudinary uses resumable tooling.

## How image delivery works

A browser requests an image in one size, and a global cache answers when it holds that version. The first view renders it, and later views are served from the cache.

## 32 image transform presets

A fixed set of 32 presets covers widths from small to 4K, thumbnails, cards, portraits, avatars, social sharing images, logos and animations.

## Public and private images

Public images accept only the allowed sizes. Private images need a signed address that expires.

## Cache purge and monitoring

Because bytes at an asset key stay immutable, the edge cache holds public variants for one year. A replaced image becomes a new asset. Deleting an asset purges all its variant URLs. A monitor runs every five minutes with a full chain canary and raises alerts.

## Migrating images off a paid CDN

Resumable migration tooling moved 1,211 product images and 1,377 article images for one client as of 13 July 2026. A manifest and a playbook for each consuming site guide the move.

## How La Boétie uses Images

La Boétie runs Images as shared infrastructure for its sites and offers no signup or public access. The repository holds deployment configuration and migration scripts around imgproxy, Cloudflare and R2. A team that wants to replace a CDN bill can send a brief.


## What an image CDN does

An **image CDN** stores one original image and delivers the size and format each visitor needs. CDN stands for content delivery network: servers around the world that keep copies close to your visitors.

Without one, a site ships a 4,000 pixel photo to a phone, or a developer exports ten sizes by hand. With one, the page asks for a width, and the service renders and caches that version on the first request.

Images usually make up a large share of a page's weight, and the main image is often the element Google measures for Largest Contentful Paint, its loading speed signal. Delivery has a direct effect on how fast a page feels.

## Paid image CDN or self hosted

| Question | Paid image CDN | Self hosted |
|---|---|---|
| Setup | An account and a URL change | Servers, storage and DNS to configure |
| Pricing | Usually by transformations, bandwidth or credits | Your storage, your server and your cache |
| Upkeep | Handled by the vendor | Yours: updates, monitoring, security |
| Features | Broad, with AI cropping and editing tools | What you build and need |
| Leaving | URLs and transforms often tied to the vendor | Your own URL scheme |

A paid service is a sound choice for a small site or a team with nobody to run servers. Self hosting pays off when volume makes the invoice painful, when many sites share one platform, or when you want full control of URLs and storage.

## The stack

Images is the delivery platform La Boétie runs for studio and client sites. It uses open source rendering, object storage and a global edge cache. The first view of a size is rendered once, and later views come from a location close to the visitor. Uploads take a separate path, so delivery keeps running if that path fails.

## Named sizes and responsive images

Most image services accept any width in the URL. That convenience invites abuse, since an attacker can request endless sizes and force endless renders. This platform allows a fixed set of 32 named sizes and crops, which also raises the share of requests served from cache.

Whichever service you use, serve the right size with `srcset`.

```html
<img
  src="/image-640.webp"
  srcset="/image-640.webp 640w, /image-1280.webp 1280w, /image-1920.webp 1920w"
  sizes="(max-width: 768px) 100vw, 640px"
  width="640"
  height="360"
  loading="lazy"
  alt="A renovated kitchen in Lyon"
/>
```

Set `width` and `height` so the page does not jump while images load. Skip `loading="lazy"` on the main image of a page, since it delays the element Google measures.

## Public and private images

Public images, such as product photos, are open to any visitor and accept only the allowed sizes. Private images, such as documents and member content, need a signed address that expires.

## Migrating off a paid image CDN

A site can hold image URLs in structured fields, Markdown bodies, templates and generated content, so a migration needs an inventory first. Each image and each reference must be accounted for, a failed step must be safe to retry, and the switch must be reversible. Old URLs keep rendering during the move. For one client, 1,211 product images and 1,377 article images had moved by 13 July 2026.

Before cutover, check your Content Security Policy: the new host needs to appear in `img-src`.

## What running one involves

| Task | Frequency |
|---|---|
| Update and test the renderer | When a new version ships |
| Rotate storage and signing keys | On your schedule |
| Read alerts | As they arrive |
| Watch storage and cache costs | Monthly |

If nobody on your team would answer an alert, stay with a paid service.

## Image formats compared

| Format | Best for | Note |
|---|---|---|
| JPEG | Photos, wide compatibility | No transparency |
| PNG | Logos and sharp graphics | Large for photos |
| WebP | Most web images | Smaller than JPEG at similar quality |
| AVIF | Photos at small sizes | Slower to encode |
| SVG | Icons and simple logos | Sanitise files from outside sources |

## Images and page speed

Google rates Largest Contentful Paint as good at 2.5 seconds or less, and the main image often sets that time.

| Mistake | Effect | Fix |
|---|---|---|
| Huge originals on small screens | Slow pages | Serve sizes that match the layout |
| Lazy loading the main image | A later LCP | Load it right away, with high priority |
| No dimensions | The page jumps | Set width and height |
| Image in a CSS background | Found late by the browser | Use an `img` element, or preload it |
| Images from many hosts | Extra connections | Serve from one host |

## How to estimate your costs

Work out these numbers from your current invoice and analytics.

| Input | Where to find it |
|---|---|
| Stored originals | Your media library |
| Monthly image views | Analytics or the CDN report |
| Average delivered size | Browser network panel |
| Share served from cache | The CDN report |
| Hours of upkeep | Your own estimate |

Compare that total with your current invoice. Below a certain volume, a paid service costs less than the time spent running your own.

## Images and search

Use descriptive file names and accurate `alt` text, since search engines and screen readers rely on both. Keep important images in the page's HTML, and add them to your sitemap if image search matters to you. Alt text should describe the picture in plain words.

## Next step

[Send a brief](https://laboetie.io/brief) with your monthly image volume and your current invoice. The studio can build the same setup for you, or tell you to keep your paid service if that costs less. [SocialForge](https://laboetie.io/products/socialforge) holds the media API that feeds this platform.


## Frequently asked questions

### What is a self hosted image CDN?

A self hosted image CDN is an image delivery stack you run yourself: storage for originals, a renderer that resizes on the fly and an edge cache. Images uses Cloudflare R2 for originals, two imgproxy containers for rendering and Cloudflare for caching. Each URL names an asset and one of 32 presets, and imgproxy renders any variant missing from the cache.

### Does a self hosted image CDN have a global cache?

Yes, when a CDN sits in front of the renderer. Images keeps a global cache in front of its renderer.

### Which image formats do the presets output?

Most of the 32 presets output WebP. They include the width ladder from 64 to 3840 pixels and the crops for thumbnails, cards, portraits and avatars. The social sharing preset outputs JPG at 1200 by 630 pixels, the two logo presets output PNG and one preset returns the original file. No preset outputs AVIF today.

### How are private images protected?

Private images need a signed address with an expiry date.

### What does running your own image CDN involve?

You operate the containers, the storage tokens, the cache rules and the monitoring yourself. For this work Images has a deploy script, written runbooks for new consumers and preset changes and a five minute monitor with a full chain canary. Here the separate control plane for uploads and deletion is SocialForge.

### How do you migrate images off a paid image CDN?

Images uses resumable migration tooling, so a stopped run continues where it ended. The move uses a manifest and one playbook per consuming site. As of 13 July 2026, the tooling had moved 1,211 product images and 1,377 article images for one client. New uploads then go through SocialForge and reach the same storage bucket.

### Can I buy Images or use it on my site?

Images has no public offer. La Boétie runs it as in house infrastructure for its own needs and for the sites it works on. It has no signup, plan or price. If your image bill or delivery setup needs work, send a brief from this page, and the studio will reply from there.
