☰
如何0元搭建一个属于自己的纳米云盘
2026/10/5 7:31:03 网站建设 项目流程

最近我做了一个基于 Cloudflare 的云盘项目,叫nano-cloud。

它的用途很直接:上传文件,生成链接,发给需要的人。对方打开网页就能下载,你可以给链接加密码、设置有效期,也可以限制下载次数。

一个暖色、留白多一点的云盘


nano-cloud 的后台和下载页采用了 Claude 风格的暖色界面:浅色模式下,背景接近纸张,按钮用暖色强调,卡片之间留出间距。标题、说明和操作分开排列,方便找到当前要做的事。后台也支持切换深色主题。

管理后台按用途划分页面。概览里可以查看本月流量、下载量和文件数量;管理文件、查看分享、调整设置时,再进入对应页面。

对个人云盘来说,常用操作其实很明确:找文件、创建分享、复制链接、看下载情况。我把这些操作放在相应的列表里,让页面围绕文件和分享来组织。

nano-cloud 现在能做什么

上传、分享,再继续编辑

最常用的流程是:后台上传文件,创建分享,把链接发出去。

创建分享时,可以设置访问密码、有效期和下载次数上限。比如一份只需要临时发送的资料,可以给链接设一个到期时间;需要控制传播范围时,可以再加密码或下载次数限制。

链接发出去以后,这些设置还可以编辑。显示名写得不合适、密码需要更换,或者想延长有效期,都能在分享列表里修改,原链接和已有下载记录会保留。密码默认保持不变,要替换或移除时再明确选择。

“页面显示名”也和实际文件名分开了。比如原文件叫report-v3-final.pdf,页面可以显示“项目说明”,下载到设备上的文件仍然叫report-v3-final.pdf。这样页面上的标题更容易看懂,也不会因为少写了.pdf而影响下载后的打开方式。

收到链接的人,先看到文件

分享页以文件信息和下载操作为主:文件名、大小、剩余下载次数,以及下载按钮。设置了密码,就出现密码输入框;需要人机验证时,会加载验证组件。没有开启的验证方式不会额外增加操作。

这里有两种发送方式。分享链接会先打开下载页面,适合希望对方看清文件信息、输入密码后再下载的情况;独立直链则打开后直接下载,适合需要直接访问文件的场景。

下载页右下角还有项目的 GitHub 入口。如果不希望它出现在自己的页面上,可以在后台关闭“显示 GitHub 按钮”,保存设置后生效。

手机上能看到按钮,也能改设置

手机端单独调整了布局。后台导航变成页面选择入口,文件、分享和记录列表以带字段标签的卡片显示,操作按钮放在卡片底部,不必一直横向拖动表格找按钮。

创建和编辑时的弹窗采用底部面板,按钮与开关扩大了触控区域。设置项在小屏上换行排列,输入框也留出完整的宽度。

下载页减少了留白,让文件信息和下载按钮更靠前。手机上收到分享链接后,可以直接在浏览器里查看和下载。

设置改了,会告诉你还没保存

后台设置采用手动保存。调整站点名称、下载限制或页面按钮后,会出现“有未保存的修改”提示,保存按钮保持可见;切换页面、退出或关闭页面时,也会提醒。

这个细节很实用。开关切换了,并不代表后端配置已经更新。现在页面会明确提示保存状态,避免改完设置,又以为功能没有生效。

文件名和存储路径一起看

“存储浏览”会优先显示数据库记录里的原文件名,下方保留实际存储路径。日常找文件时看名称,需要排查存储对象时再看路径。

如果看到类似files/随机字符的路径,那是上传时生成的对象标识,用来区分文件;没有对应数据库记录的对象会标注“未登记”。它不意味着文件内容变成了乱码。

需要的时候,再开启其他功能

除了文件分享,nano-cloud 还支持:

  • 下载市场:把选定的分享公开展示,支持搜索和排序。
  • 访问控制:单 IP 下载限制、自动封禁,以及按额度使用的激活码。
  • 验证与登录:按需启用 Turnstile 人机验证或 OAuth 下载登录;管理员可以开启两步验证。
  • 下载统计:查看下载记录、每日流量和国家分布。
  • 多种存储:默认使用 R2,也可以配置 S3 兼容存储或远程 WebDAV。

如果只是给自己和朋友分享一些文件,可以先用基础流程,等有具体需求时再配置验证和其他存储。

哪些情况不适合用它

如果你想存大量视频,或者希望把整个电脑备份上去,R2 的免费存储额度很快就会不够。经过 Worker 上传还受请求体大小限制:Cloudflare Free 账户的请求体上限是 100 MB,当前网页上传也按这个上限提示。Workers 限制说明

在国内使用时,访问速度也取决于网络和访问域名,不能保证所有人的体验都一样。重要文件仍然建议另留备份。

nano-cloud 更适合需要一个个人文件入口的人:放一些常用资料,发给别人时可以自己控制密码、有效期和下载次数,同时不必维护服务器。

项目来源与获取

nano-cloud 基于 Admin666pro/cloud-r2pan 开发,感谢原作者提供的架构和功能。我在这个基础上调整了界面和手机布局,并继续改进分享编辑、存储浏览、设置提示以及下载和验证流程。

想试试的话,可以从仓库开始:Adobiz/nano-cloud。先用一个小文件把上传、分享、下载跑通,再决定要不要长期使用。

注意事项

服务跑在 Cloudflare Workers 上,文件放在 R2,文件名、分享记录和设置保存在 D1 数据库里,不需要另外租一台服务器。

这里的“0 元”,指使用 Cloudflare 的免费额度搭建,并把用量控制在额度内。它适合先存一些文档、图片、小型压缩包,用来做个人文件分享。

截至 2026 年 10 月 4 日,几个主要额度如下:

服务免费额度在这个项目里做什么
Workers Free每天 10 万次请求,另有执行资源限制运行网页和后台接口
R2 Standard每月 10 GB-month 存储、100 万次 A 类操作、1,000 万次 B 类操作存放和读取文件
D1 Free总计 5 GB 存储,每天读取 500 万行、写入 10 万行保存文件信息、设置和下载记录

额度与规则以官方页面为准:Workers 定价、R2 定价、D1 定价。

R2 的 10 GB-month 可以理解为:持续存放约 10 GB 文件一个月,对应约 10 GB-month。它是存储用量的计费单位,不是每月能上传的总量。免费额度适用于 Standard 存储,不适用于低频访问存储。

R2 不收取出口流量费,但超出免费额度的存储和操作仍可能收费。Workers 和 D1 也有各自的限制,一次下载会涉及多个接口和数据库操作,不能把免费请求数直接当成可下载次数。R2 费用说明

项目里的“月度流量限额”可以控制下载服务,但它不等于 Cloudflare 的账单上限。实际用量还是要在 Cloudflare 控制台查看。

怎么搭起来

下面用命令行部署。先准备 Git、Node.js、npm 和 Cloudflare 账号。项目使用 Wrangler 部署;如果还要运行仓库里的回归测试,可以使用 Node.js 24。

1. 下载项目并安装依赖

git clone https://github.com/Adobiz/nano-cloud.git cd nano-cloud npm ci npx wrangler login

最后一条命令会打开浏览器,按提示完成 Cloudflare 授权。

2. 创建数据库和存储桶

先在 Cloudflare 控制台启用 R2,并按页面提示完成账户设置。然后执行:

npx wrangler d1 create nano-cloud npx wrangler r2 bucket create nano-cloud

如果账户里已经有同名资源,可以直接使用,不需要重复创建。

D1 创建成功后会返回数据库 ID。打开项目里的wrangler.jsonc,把对应配置改成自己的资源:

"d1_databases": [ { "binding": "db", "database_name": "nano-cloud", "database_id": "这里填你自己的数据库 ID" } ], "r2_buckets": [ { "binding": "r2", "bucket_name": "nano-cloud" } ],

上面只是配置片段,不要拿它覆盖整个文件。数据库和存储桶的资源名可以换,但绑定名db和r2要与代码保持一致。

仓库还有一份wrangler.toml。这篇教程统一使用wrangler.jsonc,后面的命令也会明确指定它,避免改了一份配置,部署时却用了另一份。

3. 处理可选的 Analytics Engine

当前配置里包含analytics_engine_datasets。如果你的账户还没启用 Analytics Engine,部署可能报错:

You need to enable Analytics Engine

初次搭建可以先从wrangler.jsonc删除整个analytics_engine_datasets配置项,注意相邻项的逗号。项目会使用 D1 中的下载记录提供统计和国家分布。

以后需要 Analytics Engine 时,再启用服务并补回绑定。这一步不影响基础的文件上传和分享。

4. 设置管理密钥并部署

npx wrangler secret put admin --config wrangler.jsonc

按提示输入一段长随机密钥,后面登录后台时会用到。admin也用于项目里的签名和加密,部署以后请妥善保存,不要随意更换,更不要把它写进公开仓库。

然后部署:

npm run deploy -- --config wrangler.jsonc

命令成功后会显示 Worker 的访问地址。打开它的/admin路径,用刚才的管理密钥登录。数据库会在首次访问时初始化,无需自己逐条执行建表 SQL。

可以先用默认的workers.dev地址,不必为了搭建再购买域名。完整配置说明也放在仓库的 DEPLOY.md 里。

部署测试

建议先上传一个小文件,创建分享链接,用浏览器无痕窗口打开,再下载到本地,确认文件名和内容正常。接着试一下密码、有效期和下载次数限制。

进入设置页后,调整站点名称和下载限制,记得点击“保存设置”。页面会提示未保存的修改,切换页面时也会提醒。

基础流程通了,再按需要开启 Turnstile 或 OAuth。开启人机验证时,Turnstile 的域名配置要包含你实际使用的访问域名,Sitekey 和 Secret key 也要配齐。没有这些需求,可以先不启用。

如果遇到部署或访问错误,可以查看 Worker 日志:

npm run tail -- --config wrangler.jsonc

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询