r2
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
📁 轻盈优雅的 Web 原生 Cloudflare R2 桶文件管理器,一切皆在浏览器中完成。 | 📁 A lightweight, elegant, pure-browser Cloudflare R2 file manager.…
中文 | English
📁 轻盈优雅的 Web 原生 Cloudflare R2 文件管理器,一切皆在浏览器中完成。
本项目有幸被 《科技爱好者周刊(第 387 期)》 和 《HelloGitHub(第 123 期)》 推荐,在此表示感谢!同时也欢迎大家试用并提出宝贵意见,一起把这个工具做得更好用、更顺手!
跟随 下方指引 开启 CORS,然后访问 r2.viki.moe 立即开始管理 R2 桶。
这里提供几个常见的静态托管平台部署选项,点击按钮即可一键部署:
| 平台 | 快速部署 |
|---|---|
| Vercel | |
| Netlify | |
| Cloudflare Pages |
如果用得不错,别忘了点个免费的小星星 ✨,对这个项目很重要,非常感谢~
其他服务只需部署 src 目录即可,部署后记得更新 CORS 规则允许你的域名访问 R2 API。
传统方案痛点:
R2 Web 解决的问题:
R2 Web 无法替代的场景:
| 功能类别 | 具体功能 |
|---|---|
| 文件管理 | 目录浏览、分页加载、懒加载缩略图;按名称/日期/大小排序;重命名、移动、复制、删除(支持递归);多选批量删除、复制、移动 |
| 文件上传 | 拖拽/粘贴/选择器上传;文件名模板(哈希、日期、UUID 等占位符);上传前自动压缩图片(WebAssembly) |
| 文件预览 | 图片预览(常见格式);视频/音频内嵌播放器;文本文件预览(代码高亮) |
| 链接复制 | URL 直链、Markdown、HTML、预签名 URL |
| 个性化 | 简体/繁体/英语/日语;深色模式(跟随系统);配置分享链接/二维码 |
| PWA | 安装到桌面,原生体验 |
在 Cloudflare 控制台配置 CORS 规则(路径:R2 → 存储桶 → 设置 → CORS 策略):
[
{
"AllowedOrigins": ["https://r2.viki.moe"],
"AllowedMethods": ["GET", "POST", "PUT", "DELETE", "HEAD"],
"AllowedHeaders": ["*"],
"ExposeHeaders": ["ETag"],
"MaxAgeSeconds": 86400
}
]
Tip
私有部署? 把 AllowedOrigins 改成你的域名即可。
访问 r2.viki.moe,填写 R2 凭证进行连接。凭证只存储在浏览器 localStorage,不会上传。
开始管理文件、目录,拖拽文件、直接 Ctrl + V 即可上传,右键文件可进行重命名、复制链接等操作。
如果当作图床使用,建议设置文件名模板,生成带哈希的唯一文件名、开启图片压缩,提升性能和安全性。
[name]_[hash:6].[ext] - 原文件名 + 6 位哈希(默认)images/[date:YYYY/MM/DD]/[uuid].[ext] - 按日期分目录backup/[timestamp]-[name].[ext] - 时间戳前缀备份生成「配置分享链接」或「配置分享二维码」,快速在多设备同步配置。
Caution
链接包含 R2 访问凭证,请不要直接分享到公共平台。
项目内置支持请求缓存,对目录内容等常见频繁请求返回数据进行了缓存。
对于 CDN 缓存,建议在 Cloudflare 控制台配置缓存规则提升加载速度。
纯前端应用,无构建步骤,代码写完即可部署。
核心技术: HTML5/CSS3/ES6+,CSS Layers、原生 <dialog>、原生 Fetch、Import Maps、WebAssembly
依赖库:
aws4fetch - AWS4 请求签名,处理 R2 S3 APIdayjs - 日期格式化@jsquash/* - WebAssembly 图片压缩(MozJPEG、OxiPNG、libwebp、libavif)qrcode - 二维码生成无需: Node.js、Webpack、Vite、React、Vue 等构建工具和框架,保持项目轻盈和零依赖。
git clone https://github.com/vikiboss/r2-web.git cd r2-web # 安装依赖(仅用于类型提示) pnpm install # 启动本地服务器 npx serve src # 或 python3 -m http.server 5500 --directory src
详细开发指南见 CLAUDE.md。
Q: 凭证安全吗?
A: 凭证只存储在浏览器 localStorage,不会上传到任何服务器。建议使用指定 bucket、非管理员读写权限的 API 令牌。
Q: 支持哪些浏览器?
A: 现代浏览器(Chrome/Edge/Firefox/Safari 最新版),不考虑 IE 兼容。
Q: 图片压缩在哪里进行?
A: 本地压缩使用 WebAssembly,完全在浏览器中完成,文件不会上传到第三方服务器。如果使用云压缩(Tinify 服务),则会将图片上传到 Tinify 服务器进行压缩。
Q: 可以私有部署吗?
A: 可以,fork 仓库后修改 CORS 配置中的 AllowedOrigins,部署到任意静态托管服务(Cloudflare Pages、Vercel、Netlify 等)。
Q: 配置分享链接包含什么信息?
A: 包含访问密钥 ID、秘密访问密钥、存储桶名称等敏感信息,请勿公开分享。
Q: 为什么上传失败?
A: 检查 CORS 配置是否正确、凭证是否有效、文件是否超过 300MB(大文件建议用 rclone)。
项目使用 Claude 4.6 Opus 模型 Vibe Coding 完成,需求到实现纯手工提示词驱动。初始架构和开发设计的提示词可以参考 plan.md。
MIT License
more like this
Free open-source Cloudflare R2 desktop client and S3 GUI for macOS, Windows, and Linux. Manage Cloudflare R2, AWS S3, M…
meine 🌒 - A CLI file manager and system utility built with Textual. It combines intuitive command parsing with rich t…
MTT File Manager is a Rust-based Windows file manager with tabbed navigation, rich media previews, deep system integrat…
search projects, people, and tags