本项目为原版 EdgeStash 的增强修改版,倾向于自用,有些功能用不到的可能不会考虑增加。
AI 生成/修改项目,不喜欢可以直接关闭本页。
本项目同时也更换了界面UI(做了些修改),感谢 https://github.com/Rex2516S
以下功能长期不考虑:
- 文件夹上传
- 多文件下载
- 用户自行注册
- 非 Cloudflare 存储支持
- 更多文件预览、缩略图标
- 超过 100 MB 大文件上传
- 上传任务管理(包括进度)
- 用户头像
当然,这些没有考虑的你也可以来接力下去,让该项目变得更好。
EdgeStash 是一个功能强大、易于部署的私有云盘解决方案,完全构建在 Cloudflare 的全球网络之上。它利用 Cloudflare Workers、R2 存储 和 KV 存储,为您提供一个安全、快速且低成本的个人或团队文件存储与分享平台。
EdgeStash支持带密码分享文件、在线预览docx或pdf文档、后台管理授权用户、查看分享文件浏览/下载量!
这个项目旨在提供一个“一键部署”的体验,您只需要一个 Cloudflare 账户,即可在几分钟内拥有属于自己团队的云盘服务。
https://www.bilibili.com/video/BV1s2FPzqEdA/
以上为原作者视频
-
👑多用户系统:
- 管理员:拥有最高权限,可通过密码登录,管理用户、分享链接和查看统计数据。
- 授权用户:由管理员授权创建(邮箱+密码),授权用户仅可浏览文件首页,无法进入管理后台。
- 普通用户:使用密码下载被分享文件,无密码保护的分享文件可直接下载。
- 访客用户:使用密码下载被分享文件,无密码保护的分享文件可直接下载,如有需要可以不登陆来浏览指定文件夹和下载文件,其余权限均禁止。
-
⏳灵活的文件分享:
- 密码保护:为分享链接设置访问密码。
- 有效期设置:支持 1 小时、1 天、1 个月或永久有效。
- 访问统计:跟踪每个分享链接的浏览和下载次数。
-
🧸在线文件预览:
- 无需下载,直接在浏览器中预览多种文件格式。
- 文档:Word (.docx), PDF, Markdown (.md), 纯文本 (.txt)。
- 图片:JPG, PNG, GIF, WebP, SVG 等。
- 代码/数据:JSON 文件自动格式化。
- 音视频:MP4, WebM, MP3, WAV 等。
-
📁强大的文件管理:
- 支持文件和文件夹的创建、重命名和删除。
- 多文件上传。
- 面包屑导航,轻松在不同层级目录间穿梭。
-
🔧管理后台:
- 数据统计:实时查看总分享数、总浏览量和总下载量。
- 用户管理:轻松添加新用户、删除现有用户、编辑用户。
- 分享管理:集中查看和删除所有已创建的分享链接。
-
🙈安全与隐私:
- 所有数据存储在您自己的 R2 和 KV 中,完全掌控。
- 通过 JWT (JSON Web Tokens) 进行安全的会话管理。
部署 EdgeStash 非常简单,全程在 Cloudflare Dashboard 中完成。
- 一个 Cloudflare 账户。
- 已开通 R2 和 Workers 、 KV 服务。
| 配置 | 变量名 | 说明 |
|---|---|---|
R2 |
R2_BUCKET |
存放文件的地方,名称随意 |
KV |
KV_STORE |
存放链接的地方,名称随意 |
管理员密码 |
ADMIN_PASSWORD |
你想设置什么都行 |
-
创建 R2 存储桶
- 登录 Cloudflare -> R2 -> 创建存储桶。
- 记下您的存储桶名称(例如
edgestash-files)。
-
创建 KV 命名空间
- 登录 Cloudflare -> Workers 和 Pages -> KV -> 创建命名空间。
- 记下您的命名空间名称(例如
edgestash-kv)。
-
创建 Worker
- 登录 Cloudflare -> Workers 和 Pages -> 创建应用程序 -> 创建 Worker。
- 为您的 Worker 命名(例如
edgestash),然后点击 部署。
-
上传代码
- 在 Worker 页面,点击 编辑代码。
- 将本项目提供的
worker.js文件内容完整粘贴进去。 - 点击 部署。
-
配置绑定
- 返回 Worker 概览页面,点击 设置 -> 变量和机密。
- 配置环境变量:
ADMIN_PASSWORD:设置您的管理员登录密码。
- 配置环境变量:
- 返回 Worker 概览页面,点击 绑定 -> 添加绑定。
- 配置 R2 存储桶:
- 变量名称:
R2_BUCKET - R2 存储桶:选择您在第 1 步创建的存储桶。
- 变量名称:
- 配置 KV 命名空间:
- 变量名称:
KV_STORE - KV 命名空间:选择您在第 2 步创建的命名空间。
- 变量名称:
- 配置 R2 存储桶:
- 返回 Worker 概览页面,点击 设置 -> 变量和机密。
-
完成!
- 访问您的 Worker URL (
https://<worker-name>.<subdomain>.workers.dev) 即可开始使用!
- 访问您的 Worker URL (
-
绑定你自己的域名!
管理员登录时如果点击登录按钮无反应,切换到用户登录,把用户登录的邮箱输入框内容清空,然后重新进行管理员登录即可~
可以用访客的身份直接浏览文件夹和下载文件,不用登录,但首先必须要到用户管理中增加一个特定的用户:
电子邮箱:guest@guest.com
密码:留空则可以实现不用登录访问
访客首页文件夹:默认为根目录,限制访客可以浏览和下载的文件夹
更好的 UI ,支持列表(默认)和网格视图,响应式设计增强触摸设备上的体验
实时鉴权,防止被删用户还有权限修改。
修改一些 api 解决一些文件无法下载/预览的问题
列表支持排序
EdgeStash 通过一套 RESTful API 提供服务,以下是核心接口列表。
| 方法 | 路径 | 说明 |
|---|---|---|
| 认证 | ||
POST |
/api/login |
管理员或用户登录 |
POST |
/api/logout |
退出登录 |
GET |
/api/auth/check |
检查当前登录状态 |
| 文件管理 | ||
GET |
/api/files?path=<path> |
获取指定路径下的文件和文件夹 |
POST |
/api/files?path=<path> |
上传文件到指定路径 |
PUT |
/api/files?path=<path> |
重命名文件或文件夹 |
DELETE |
/api/files?path=<path> |
删除文件或文件夹 |
POST |
/api/folders |
创建新文件夹 |
GET |
/api/download?path=<path> |
下载文件 |
GET |
/api/preview?path=<path> |
获取文件内容用于在线预览 |
| 分享管理 | ||
POST |
/api/share |
为文件创建分享链接 |
GET |
/api/share/{shareId} |
获取分享链接信息 |
POST |
/api/share/{shareId}/download |
下载分享的文件 |
| 管理后台 | ||
GET |
/api/admin/stats |
获取统计数据 |
GET |
/api/admin/shares |
列出所有分享链接 |
DELETE |
/api/admin/shares/{shareId} |
删除指定的分享链接 |
GET |
/api/admin/users |
列出所有用户列表 |
POST |
/api/admin/users |
创建新用户 |
GET |
/api/admin/users/{email} |
获取单个用户详情 |
PUT |
/api/admin/users/{email} |
更新用户信息 |
DELETE |
/api/admin/users/{email} |
删除指定用户 |
所有路径中的 {email} 和 {shareId} 需要进行 URL 编码,且 GET /api/files 和 POST /api/files 等接口通过 ?path= 参数传递路径信息,路径需进行 encodeURIComponent 编码。
本项目采用 MIT License 开源。 您可以自由地使用、修改、分发本项目的代码,但需要在您的衍生作品中包含原始的版权和许可声明。





