Custom domain and CDN
By default Plume builds public URLs from your provider’s object address. Set a Custom Domain to serve media from your own hostname or a CDN instead.
Set it
- Go to Media → Plume → Settings.
- Make sure Serve From Storage is on. The Custom Domain field appears under Delivery.
- Enter the full address, including
https://, for examplehttps://cdn.example.com. - Select Save Settings.
You can also set it in the setup wizard as the custom delivery domain.
How URLs are built
Plume joins the Custom Domain and the object key with a single slash. The key includes your Path Prefix.
Custom Domain: https://cdn.example.com
Path Prefix: media
File: 2026/11/photo.jpg
URL: https://cdn.example.com/media/2026/11/photo.jpg
Your CDN or domain must map to the root of the bucket, so the full key resolves. Do not add the prefix to the Custom Domain, or it will appear twice.
By provider
| Provider | What to point the domain at |
|---|---|
| Amazon S3 | A CloudFront distribution with the bucket as origin. |
| Cloudflare R2 | An R2 custom domain on a Cloudflare zone, or the r2.dev URL for testing. Required for R2. |
| Google Cloud Storage | A CDN or load balancer in front of the bucket. |
| Backblaze B2 | A CDN or Cloudflare proxy in front of the bucket. |
| DigitalOcean Spaces | The Spaces CDN address, or your own domain on it. |
| Wasabi, MinIO, S3-compatible | A reverse proxy or CDN in front of the endpoint. |
Changing the domain later
New URLs use the new domain straight away when Serve From Storage is on. Addresses already saved in post content need a replace:
wp nimbus replace-urls --from=https://old.example.com --to=https://cdn.example.com
Then purge the cache at your CDN and page cache.
Tip: Open one image URL directly in a private window before you save the setting.