可道云官网:https://kodcloud.com
小兔互联官网:https://moebun.com/aff/INILUDUF
平时写博客的时候,我经常会遇到一个小麻烦:
有时候想给大家分享一些工具、项目资源或者其它一些文件,但这些文件要么太大不方便放在仓库里,要么托管在网盘上又容易过期或者限速。久而久之,我就萌生了一个想法——干脆自己搭一个网盘吧!
不过我又不想再去折腾复杂的文件系统,于是想到用对象存储来做底层存储,既省心又稳定;再配合一个界面好看、功能齐全的文件管理面板,比如可道云(KodCloud),就能轻松实现上传、预览、分享等功能。
这篇文章就来记录一下我用 Docker 部署可道云 + 对象存储的全过程,让博客文件分享这件小事变得优雅又高效。
为什么选择可道云 + 对象存储的组合
其实在写这个文章之前,或者说有了文件分享的需求之后,我其实已经尝试过很多种方案了,比如:
- 国内的网盘:百度网盘、阿里云盘、腾讯微云等,这些网盘都非常省心,但是缺点也很明显,就是限速、限流量、限空间,以及可能会对部分文件进行审查,导致文件时不时就会失效。此外,网盘并不统一,可能你用的网盘是百度网盘,但是别人用的网盘是阿里云盘,这就导致了分享文件的时候,需要将文件上传到多个网盘,然后再下载下来,非常麻烦。
- 自建网盘:比如 Nextcloud、Owncloud 以及可道云等,这些网盘都是开源的,可以自己搭建,自由度比较高,并且服务掌握在自己手里,非常灵活,但是缺点也很明显,就是文件存储于本地,如果服务器挂了,那么文件也就丢失了。此外,直接这样分享的话,文件传输速度也会受到服务器带宽的限制(我的小水管只有不到 100 Mbps),如果多个人同时下载,那么速度就会非常慢,严重影响用户体验。
所以,我最终选择了可道云 + 对象存储的组合,既省心又稳定。
- 可道云可以像网盘一样进行文件的共享,其他人可以通过分享链接进行文件的下载,不用在意自己用的什么网盘,只要有安装浏览器,就可以直接下载。
- 对象存储通过分布式存储,保证了文件的安全与稳定性,即使服务器挂了,文件也不会丢失,而且文件传输速度也不会受到服务器带宽的限制,可以支持高并发的下载,因为文件存储于对象存储中,文件传输速度是由对象存储的带宽决定的,而不是服务器带宽决定的(一般来说,对象存储的带宽都比较高)。
在本文中,将会使用小兔互联的对象存储和 CloudFlare R2 存储为例子进行说明。
- 小兔互联的对象存储是收费的(价格还是比较实惠的),其上游是雨云,服务器位于国内,无论是访问速度还是稳定性都很高,并且默认只会使用你所选择的套餐内的流量,不开启弹性计费的情况下,即使流量被刷干了,也不会产生额外费用,只是会暂停服务,到下个月刷新(不过一般也不会有人去刷流量吧)。
- CloudFlare R2 存储是免费的,每个月拥有 10G 的空间(一个月每天占用的最大空间之和的平均数 < 10G 就是免费的,超出会收取额外费用),也有上传和下载的次数限制,其速度在国内也是不错的,这些限制对于个人使用来说,基本上是够用的。
部署可道云
官方文档:https://docs.kodcloud.com/setup/docker
我们按照官方文档的说明,进行以下的操作:
- 创建目录,作为可道云容器的映射目录,用于映射可道云的配置文件、数据文件、日志文件以及数据库等。
1 | # 注意,这里是我自己服务器对应的目录,大家可以根据自己的需求进行修改 |
- 创建数据库环境变量配置文件 db.env,用于配置可道云的数据库信息,其中内容如下:
1 | MYSQL_PASSWORD=0YXl7Q^kBGFO*&g8p96^ |
MYSQL_PASSWORD 是数据库密码,我生成了一个随机密码,大家可以根据自己的需求进行修改。
- 创建 compose.yml 文件,用于配置可道云的容器信息,其中内容如下:
1 | services: |
- MYSQL_ROOT_PASSWORD 和上面的数据库密码保持一致。
- ports 中的 80 端口可以根据自己的需求进行修改,因为 80 端口可能被其它服务占用,这时候因为端口为非标准的 http 端口,所以需要配置 nginx 或其它反向代理服务器,才能正常访问。
配置完成,使用以下命令启动可道云:
1 | docker compose up -d |
Caddy 配置反向代理
我使用的是 caddy 进行了反向代理,具体可以参考我的另一篇文章:Caddy反向代理。
在这里,我们只需要在 Caddyfile 中增加以下配置即可:
1 | 你的域名或者端口 { |
- “你的域名或者端口”需要替换成你自己的域名或者端口。
- 21773 是上面 compose.yml 文件中 app 服务的端口,也就是刚刚强调过的可以修改的 80 端口,我的compose.yml 文件中已经修改成了 21773。
配置完之后,重启 caddy 即可生效,使用配置的域名或者端口即可正常访问可道云。
进入可道云并配置对象存储
使用配置的域名或者端口访问可道云,进入可道云后,首先需要配置管理员账号和密码,这一部分就不用我过多赘述了,你自己配置好管理员账号和密码后,登录即可。
进入可道云后,首先需要配置对象存储,因为可道云默认使用的是本地存储,我们需要将其修改为对象存储,才能实现文件的存储和分享。
小兔互联对象存储配置
- 获取访问凭证信息
进入小兔互联的对象存储控制台,选择我们购买的对象存储实例,点击管理即可看到相关信息,如下:

- 创建存储桶并添加网络挂载
我们点击创建存储桶,自己取一个名字(只能是字母数字和 ‘-’,不能是其它字符),比如我取的是 emtime,所属实例选择我们购买的实例,点击创建即可创建好我们对应的存储桶。
回到可道云,我们点击左侧的文件管理,然后点击网络挂载,点击新增网络挂载,存储类型选择 MinIO。

- 名称:自定义,比如我这里填写的是小兔互联。
- 空间大小:根据购买的套餐填写,比如我这里填写的是 10,表示 10GB。
- Access Key ID:对应访问凭证信息图片中 Access Key。
- Access Key Secret:对应访问凭证信息图片中 Secret Key。
- Bucket 名称:就是我们自己创建的存储桶名称,比如我这里填写的是 emtime。
- 地域节点:对应访问凭证信息图片中的 API 端点。
- 存储区域:无需填写。
- 存储目录:默认即可。
- 允许文件缩略图:按自己的需求选择,我这里没有开启。
- 服务器中转:如果开启,文件传输会先经过可道云服务器,然后通过服务器再传输到对象存储,一般会占用服务器带宽。除非网络不通或直连不稳定,否则建议关闭,让客户端直接访问对象存储效率会更高。
- 设为默认:按自己的需求选择,我这里将小兔存储设置为了默认存储。
这样我们的对象存储就配置好了,接下来我们就可以上传文件了,上传的文件会自动存储到我们配置的对象存储中。
CloudFlare R2 配置
说来 CloudFlare 也算是“赛博善人”了,免费功能非常多:CDN 加速、虚拟组网、内网穿透(Cloudflare Tunnel),甚至还有 SSL 证书自动签发与续期。对个人开发者或小项目来说,这些工具几乎能解决大部分对外访问和安全的烦恼,省钱又省心。不过比较可惜的是,在国内用的话体验没那么理想,偶尔会遇到访问慢或者节点不太稳定的情况。
- 订阅 R2 存储并添加存储桶
如图所示,我们在对应菜单中点击 R2 对象存储,然后在界面的右上角点击创建存储桶,根据图片进行设置即可。


- 获取 API
CloudFlare 的对象存储提供了兼容 S3 的 API,而可道云也支持 S3,所以我们直接创建 S3 API 即可。按照我图片中的步骤进行操作即可。




最后这个图片是我们创建的 API 的信息,将图片中的信息最好全都复制出来,后面配置可道云的时候需要用到。

- 可道云添加网络挂载
和前面差不多,回到可道云,我们点击左侧的文件管理,然后点击网络挂载,点击新增网络挂载,存储类型选择 S3 存储。

- 名称:自定义,比如我这里填写的是 Cloudflare R2。
- 空间大小:CloudFlare R2 对象存储,免费版本也是 10GB,所以这里填写 10。
- Access Key ID:对应 API 信息中的访问密钥 ID。
- Access Key Secret:对应 API 信息中的机密访问密钥。
- Bucket 名称:创建存储桶时填写的名称。
- 地域节点:对应 API 信息中的为 S3 客户端使用管辖权地特定的终结点。
- 存储区域:无需填写。
- 存储目录:默认即可。
- 签名版本:默认 V4 即可。
- 允许文件缩略图:按自己的需求选择,我这里没有开启。
- 服务器中转:和之前一样,除非网络不通或直连不稳定,否则建议关闭,让客户端直接访问对象存储效率会更高。
- 设为默认:按自己的需求选择,因为我设置了小兔互联的对象存储为默认存储,所以这里就不勾选了。
这样我们的 CloudFlare R2 对象存储就配置好了,接下来我们就可以上传文件了,上传的文件会自动存储到我们配置的对象存储中。
测试使用
配置完成后,我们就可以像使用普通网盘一样上传、下载和分享文件了。
上传一个文件后,直接生成分享链接,其他人点击即可下载,整个传输过程都会通过对象存储完成,不再占用你服务器的带宽。

我分别测试了小兔互联和 Cloudflare R2 两个对象存储的下载速度(本地带宽为 1000 Mbps):
小兔互联:

可以看到,小兔互联的下载速度还是很快的,而且完全不占用服务器流量,体验非常好。
CloudFlare R2:

Cloudflare R2 的速度也很不错,只是由于节点主要在国外,在国内的访问速度和稳定性稍差一些。
不过对于个人使用来说,它依然是一个非常有性价比(甚至可以说“白嫖友好”)的方案。
总结
整体来说,这套 “可道云 + 对象存储” 的组合,既能拥有类似网盘的便捷体验,又不必担心限速等问题。
如果你手上也有一台闲置的服务器,不妨试试这套方案。
搭建过程不复杂,但带来的便利却很明显——让博客文件分享更轻、更快,也更优雅。