背景:之前使用阿里云OSS、腾讯云COS这些都是按照存储占用和访问流量进行计费,比较心疼,后来我就都不用了。最近网上冲浪发现其实可以使用minio来搭建私有的S3存储服务,并且可以通过PicGo满足Typora写作时自动上传图片作为图床使用。
以极空间NAS为例介绍方法(要买带Docker服务的NAS):
一、极空间配置
仓库搜索:elicro/minio并下载,选择导入到容器

(minio/minio测试也可以用,但注意容器设置和下面不一致)
容器设置:
设置文件夹路径、端口、环境,增加
MINIO_ROOT_USER、MINIO_ROOT_PASSWORD两处配置

容器运行后:

二、配置minio
访问http://极空间内网IP:40001地址,使用账号密码登录后,创建Bucket,例如我命名为“images-oss”

创建Access Keys
记得保存下来,后面配置上传时需要用到

设置access key只能用于images-oss这个bucket
json
"arn:aws:s3:::images-oss"这样好像也可以
修改为public

设置好以后,可以上传文件进行测试,看是否可以正常访问

三、配置Typora上传服务
下载PicGo
点击插件设置-搜索"minio"

按照下图进行设置,注意配置完之后可以在上传区上传图片进行测试是否可以上传成功

打开Typora-偏好设置-设置上传服务
插入图片时选择“上传图片”,这样设置好以后每次在typora粘贴图片时,就会自动上传

四、minio安全性配置
有一些安全性风险还需要注意⚠️
1、存储桶目录遍历风险
前文提到要将存储桶(bucket)配置为public,方便存储的文件能够直接通过链接访问,适用于博客图床。

但是默认配置会存在“存储桶目录遍历”的安全风险,攻击者获得文件分享链接后,将文件名删除,直接访问存储桶就可以看到存储的所有文件。如下图所示:

如何解决呢?可以设置custom,删除下面这一行后点击SET保存即可

此时再次直接访问存储桶,就会提示无权限

2、旧版本在集群模式下部署存在漏洞会泄露账号密码(CVE-2023-28432)
在其RELEASE.2023-03-20T20-16-18Z版本(不含)以前,集群模式部署下存在一处信息泄露漏洞,攻击者可以通过发送一个POST数据包获取进程所有的环境变量,其中就包含账号密码MINIO_SECRET_KEY和MINIO_ROOT_PASSWORD。详见:
https://github.com/vulhub/vulhub/blob/master/minio/CVE-2023-28432/README.zh-cn.md
五、其他补充说明
现在新版本的Minio在存储中实际的不是源文件,例如上传了cat.jpg,实际存储为cat.jpg/xl.meta,此时文件名是一个文件夹。如下图所示:


如果要以源文件进行存储,需要使用老版本,根据百度查到的信息,使用RELEASE.2022-05-26T05-48-41Z即可。

完结!