Proxies readonly requests to Cloudflare R2 via Cloudflare Workers.
If you want an uploader, try Aster!
If you see a bug or something missing, please open an issue or pull request!
HEAD
, GET
, and OPTIONS
requestsetag
, cache-control
, expires
, last-modified
)content-type
, content-encoding
, content-language
, content-disposition
)range
, if-range
, returns content-range
)if-modified-since
, if-unmodified-since
, if-match
, if-none-match
)index.html
in 0.5.0Create your R2 bucket(s) if you haven't already (replace bucket_name
and preview_bucket_name
appropriately):
pnpm install
pnpm wrangler r2 bucket create bucket_name # required
pnpm wrangler r2 bucket create preview_bucket_name # optional
You can also do this from the Cloudflare dashboard.
Edit wrangler.toml
to have the correct bucket_name
and optionally, preview_bucket_name
(you can set it to bucket_name
) if you're going to run this locally.
You can do this from a fork, if using the GitHub Actions method.
You may edit CACHE_CONTROL
to the default cache-control
header or remove it entirely to fall back to nothing. If you set CACHE_CONTROL
to "no-store"
then Cloudflare caching will not be used.
Note: Due to how custom domains for workers work, you MUST use a route to take advantage of caching. Cloudflare may fix this soon. Also note that *.workers.dev domains do not cache responses. You MUST use a route to your own (sub)domain.
If you want to deploy render with multiple domains for one worker, check out multi-render! It uses render as a package to serve multiple buckets to multiple domains with custom configurations.
pnpm wrangler publish # or `pnpm run deploy`
CF_API_TOKEN
(with the Edit Cloudflare Workers
template) and CF_ACCOUNT_ID
in the repo settingswrangler.toml
as needed (this will trigger the workflow)You may use this worker's functionality as a package by installing and importing render2
:
npm install render2
Usage:
import render from "render2";
render.fetch(req, env, ctx);
You can see an awesome example with Erisa's multi-render!
Install deps:
pnpm install
To launch the development server:
pnpm run dev