研究对象存储服务(OSS)是因为考虑到将来可能会有在博客上放出一些可供分享的文件下载的服务需求,直接使用现有图床,容易混杂乱。因此我考虑重新建立一个独立OSS存储服务。直接Google搜到了Minio这个框架,10k+的Star,就决定选择这个了。Minio框架有如下几个优势:
使用Docker部署可以说是非常方便省事了。我的部署命令如下:
1 | docker create -p 9000:9000 \ |
其中的访问秘钥对需要替换成你自己设置的值。这一对值稍后会用于网页端的登录。然后用
1 | docker container start minio |
来启动镜像。完成后就可以在http://domain.com:9000中访问到了,输入docker命令中的秘钥对来登录。

而后你可以按照Lychee图床教程中的做法,添加Nginx反向代理和HTTPS支持。
1 2. Hexo中使用
部署完成后我才发现一个问题,那就是Minio生成的外链是强制有过期时间的,而且长度最多只七天。那我就不能像直接复制粘贴外链来使用了,同时,手动来每七天更新一次链接也是不可接受的。因此用Hexo脚本来自动实现了利用Minio的API接口来更新下载链接。脚本内容如下:
1 | ; |
在博客工程的根目录下创建一个文件夹scripts
,在其中创建一个js文件,如index.js
,然后将上述脚本内容粘贴进去。然后在这个目录下创建设置文件,minio_key.yml
,文件中需要包含如下信息:
1 | endPoint: 'minio.domain.com' |
然后还需要安装依赖
1 | npm install --save minio |
至此我们完成了脚本的安装。脚本为我们提供了一个标签插件,其使用范例如下:
1 | {% minio 'bucket_name' 'resource_name' %} |
在使用Hexo进行静态页面渲染时,这部分内容会被自动渲染成下载链接:
1 | <a target="_blank" href="download_url">下载链接</a> |
不过这种方法还是有一个显而易见的缺点:你需要是一个非常勤奋的作者,每周都来发布一次文章,不然旧文章的链接还是会失效。