Cloudflare R2 storage manager with Pages and Workers. Free 10 GB storage. Free serverless backend with a limit of 100,000 invocation requests per day. More about pricing
- Upload large files
- Create folders
- Search files
- Image/video/PDF thumbnails
- File sharing with expirable links
- WebDAV endpoint
- Drag and drop upload
Before starting, you should make sure that
- you have created a Cloudflare account
- your payment method is added
- R2 service is activated and at least one bucket is created
Steps:
- Fork this project and connect your fork with Cloudflare Pages
- Select
Docusaurusframework preset - Set
WEBDAV_USERNAMEandWEBDAV_PASSWORD - (Optional) Set
WEBDAV_PUBLIC_READto1to enable public read - (Optional) Set
SHARE_ENABLEDtotrueto enable file sharing feature - (Optional) Set
SHARE_DEFAULT_EXPIRE_SECONDSto customize share link expiration time (default: 3600 seconds / 1 hour)
- Select
- After initial deployment, bind your R2 bucket to
BUCKETvariable - (Optional) If you enabled file sharing, create a KV namespace and bind it to
SHARE_KVvariable - Retry deployment in
Deploymentspage to apply the changes - (Optional) Add a custom domain
You can also deploy this project using Wrangler CLI:
npm run build
npx wrangler pages deploy buildYou can use any client (such as Cx File Explorer, BD File Manager)
that supports the WebDAV protocol to access your files.
Fill the endpoint URL as https://<your-domain.com>/webdav and use the username and password you set.
However, the standard WebDAV protocol does not support large file (≥128MB) uploads due to the limitation of Cloudflare Workers. You must upload large files through the web interface which supports chunked uploads.
If you have enabled the file sharing feature by setting SHARE_ENABLED to true, you can create temporary share links for your files:
- Share links are generated through the web interface
- Each share link has an expiration time (default: 1 hour, configurable via
SHARE_DEFAULT_EXPIRE_SECONDS) - Share links are accessible at
https://<your-domain.com>/s/<token> - Only one active share link can exist per file at a time
- Creating a new share link for a file will invalidate any existing share link for that file
- Share links automatically expire after the configured time period
Note: The file sharing feature requires a KV namespace binding (SHARE_KV). Make sure to create and bind a KV namespace in your Cloudflare Pages settings.
WebDAV related code is based on r2-webdav project by abersheeran.