Skip to content
R2 Manager on GitHub

A file manager for your Cloudflare R2 buckets that you host yourself.

Browse, upload, preview, edit and share files in Cloudflare R2 from a clean web UI. You own the server, the database and the keys.

The R2 Manager file browser showing the folders and files in a bucket

A file manager with access you control

Browse, upload and preview files in the browser, give teammates only the folders they need, and keep a record of every change.

Browse, upload and preview

List and grid views with folders and a name filter. Drag in files or whole folders, and open images, PDF, Markdown, CSV and JSON without downloading them.

Hardened by default

Brute-force limits on login, 2FA and reset. Same-origin checks on every mutation, a strict CSP on share pages, and secrets encrypted at rest.

Sign-in with optional 2FA

Email and password with TOTP and recovery codes, plus password reset by email. Or put it behind Cloudflare Access.

Roles and per-folder grants

Roles set what people can do: admin, editor or viewer. Grants set where: a whole bucket, or a single folder prefix.

An audit trail for every change

Each action is logged with who did it, what it touched and whether it worked. Search and filter the log from the admin area.

Two moving parts: the app and its database

Cloudflare R2

Your files stay in your buckets. The app reaches them with a key that only the server holds.

PostgreSQL

Holds users, grants, share links, the audit log and settings. It's the only thing to back up.

A domain with HTTPS

Something like files.example.com, with Cloudflare Access in front if you want it.

Set up Cloudflare Access

Docker Compose

The app, Postgres and Caddy on a server you control, with HTTPS certificates handled for you.

Docker Compose guide

Dokploy

A UI for deploys, backups and schedules, for when you already run Dokploy.

Dokploy guide

Vercel

Serverless. The app is served from the CDN, the API runs as one function, and Postgres is hosted.

Vercel guide

Rate limits and job state live in Postgres, so there is no Redis and no queue to run. One Node process serves the UI, the API and the public share pages.

Already have Postgres and a reverse proxy? Use plain docker run

Questions about R2 Manager

How it works, what you need to run it, and what you can try in the demo.

R2 Manager is a self-hosted web file manager for Cloudflare R2 buckets. It lets you browse, upload, preview, edit and share files from a browser, with admin, editor and viewer roles and access grants for individual buckets or folder prefixes.

View the source on GitHub

Run it on your own server

You need a Cloudflare account with R2, a Linux server with Docker and a domain to put it on.

$git clone https://github.com/sayeedjoy/r2-manager.git

Then set up the bucket, fill in .env and start it with Docker Compose. The guide walks through each step, and migrations run on every start.