【 MinIO + PicGo + Typora】 搭建个人图床参考,向“恶意刷流量”say no

写在前面

在互联网的知识里遨游时,我们或许需要写博客/做笔记来分享我们的知识,现在在线笔记工具非常多,当然,也可以选择本地 markdown 文档+图床的方案来实现[一处写文章,处处来发表]的高效流程,再也不必重复上传图片和担心防盗链啦!!

但是,图床的方案也有很多种:

  • 云服务厂商提供的对象存储服务(非常稳定)
  • GitHub 仓库(国内访问随缘,我们自己可以有办法解决,但是博客的读者不一定)
  • 自己搭建对象存储服务(本文的重点)
  • ······

MinIO 是什么

官网是这样说的:

MinIO 是一种高性能、S3 兼容的对象存储。 它专为大规模 AI/ML、数据湖和数据库工作负载而构建,并且它是由软件定义的存储,不需要购买任何专有硬件,就可以在云上和普通硬件上拥有分布式对象存储。 MinIO拥有开源 GNU AGPL v3 和商业企业许可证的双重许可。

简单来说,我们可以用它来搭建自己的对象存储服务

附上官网:

MinIO | 高性能分布式存储,私有云存储

安装和部署 MinIO --- MinIO Object Storage for Container

我选择了使用 MinIO 来搭建自己的图床,原因:1.我的需求不大;2.害怕图床被刷流量(没钱~~)3.自己动手实践,增强自身能力

话不多说,接下来开始吧~~

环境准备

  1. 需要有一台云服务器,云服务厂商很多,自由选择,最好是固定带宽不限流量的(这样就不怕被恶意刷流量了)

  2. 安装 Docker ,可以参考Docker 教程 | 菜鸟教程 (runoob.com),根据自己的系统选择对应的教程

  3. 需要安装好 PicGo ,本文的 PicGo 版本为 2.3.1 ; PicGo 是一个用于快速上传图片并获取图片 URL 链接的工具

    官方地址:

    下载地址

    PicGo 访问速度快一点

  4. Typora (或者其他可以使用 PicGo 的笔记工具)

Docker 部署 MinIO

  1. 拉取 MinIO 镜像
bash 复制代码
 docker pull quay.io/minio/minio
  1. 创建配置文件(作为MinIO容器挂载的配置文件)
arduino 复制代码
 mkdir -p /home/docker/minio/data
 vim /home/docker/minio/minio.conf

minio.conf 内容如下:(记得修改为自己的账号和密码)

ini 复制代码
 # MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server.
 # This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment.
 # Omit to use the default values 'minioadmin:minioadmin'.
 # MinIO recommends setting non-default values as a best practice, regardless of environment
 ​
 MINIO_ROOT_USER=myminioadmin
 MINIO_ROOT_PASSWORD=minio-secret-key-change-me
 ​
 # MINIO_VOLUMES sets the storage volume or path to use for the MinIO server.
 ​
 MINIO_VOLUMES="/mnt/data"
 ​
 # MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server
 # MinIO assumes your network control plane can correctly resolve this hostname to the local machine
  1. 创建并运行容器
bash 复制代码
 docker run -dt                                  \
   -p 9000:9000 -p 9090:9090                     \
   -v /home/docker/minio/data:/mnt/data                  \
   -v /home/docker/minio/minio.conf:/etc/config.env         \
   -e "MINIO_CONFIG_ENV_FILE=/etc/config.env"    \
   --name "minio"                          \
  quay.io/minio/minio server --console-address ":9090"

参数解读

  • -p : 映射端口,其中9000端口用于访问,9090端口用于控制台
  • -v : 挂载文件,/home/docker/minio/data 用于存放存储的数据,/home/docker/minio/minio.conf 配置文件
  • -e : 设置参数使得 MinIO 的配置文件为容器内的 /etc/config.env

现在,可以通过 域名/IP:9090 的方式访问 MinIO 的控制台了

控制台设置 MinIO

  1. 点击 Create a Bucket 创建一个新的存储桶

我们会得到这样的一个存储桶:这里以后就会是我们存放图片的地方

  1. 点击这个存储桶,可以看到,它现在的访问权限是 Private (私有)的,我们需要设置它为 ReadOnly /ReadWrite,这里我设置为ReadOnly
  1. 现在可以看到它的访问权限已经变为 custom (自定义)的了,我们可以点击右上角的文件夹图标,进入存储桶的目录结构,并上传一张图片来测试一下

现在,我们的图床就已经部署好了,接下来,我们就可以去配置我们的 PicGo 来实现便捷的图片上传!!

PicGo 使用 MinIO 图床

  1. 首先,我们需要安装 PicGo,在上面的【环境准备】中已有说明

  2. 由于 PicGo 本身的支持并不包含 MinIO ,所以我们需要下载 MinIO 对应的插件并安装(直接搜索 minio)

    插件官网:GitHub - Herbertzz/picgo-plugin-minio

  1. 在下一步之前,我们需要得到图床的 accessKey 和 secretKey,点击右边的 Create access key 按钮,创建就可以了(这里我已经创建好了一个,刚开始这里应该是空白的),一定记得保存好这两个字符串,secretKey 只会出现一次!! 下面我们会用到它们。
  1. 安装完成后,点击图床设置,点击 MinIO 图床,然后就可以看到需要配置的一些东西,下图是一些说明,按照对应的说明把信息填好就可以了

    • accessKey 和 secretKey 就是我们上一步创建好的
    • port :端口需要填写9000,或者可以不填,使用HTTP或HTTPS的默认端口,但是需要在服务器设置 Nginx 来反向代理到 9000 端口,这里就不展开了

现在,我们就准备好了,可以使用 PicGo 来上传一张图片试试了

Typora 使用 PicGo

不知不觉来到了最后一步,现在只需要在 Typora 中开启 PicGo 的图片上传功能就可以了(或者其他笔记工具也可以,笔者使用的是Typora)

接下来,让我们尽情地开始写博客记笔记吧~~

写在最后

现在我们只是完成了写博客的需求,MinIO 也提供了很多语言版本的 SDK 供我们使用,以后打算写一个工具类整合到项目中去,到时再发博客,如果感兴趣的话,麻烦点个关注啊~~

如果对你有用的话 点个赞再走呗~~


参考文章

PicGo minio 图床 - mikemhm - 博客园 (cnblogs.com)

使用 MinIO 搭建属于自己的对象存储(OSS) - Jetsung - 博客园 (cnblogs.com)

Minio+Nginx搭建私有图床,写博客从未这么爽 - 知乎 (zhihu.com)

使用Minio与Picgo搭建个人图床 | Kevin2li's Blog

Docker 搭建 Minio 对象存储服务 - 掘金 (juejin.cn)

【项目实践】手把手教你自建高性能对象存储服务器 - 掘金 (juejin.cn)

相关推荐
王二端茶倒水12 小时前
大龄程序员兼职跑外卖第五周之亲身感悟
前端·后端·程序员
Goboy15 小时前
工欲善其事,必先利其器;小白入门Hadoop必备过程
后端·程序员
zxg_神说要有光17 小时前
自由职业第二年,我忘记了为什么出发
前端·javascript·程序员
陈随易17 小时前
农村程序员-关于小孩教育的思考
前端·后端·程序员
sre运维4 天前
运维人员必备的 Mac Zsh 配置技巧
程序员
陈随易4 天前
anime,超强JS动画库和它的盈利模式
前端·后端·程序员
陈随易5 天前
秦少卫-耗时5个月收入超过北京工资的超级独立开发者
前端·后端·程序员
陈随易6 天前
wangEditor,从开源、停更到重生
前端·后端·程序员
黑心萝卜三条杠6 天前
【Go语言】深入理解Go语言:并发、内存管理和垃圾回收
google·程序员·go
一只爱撸猫的程序猿6 天前
在SpringBoot 项目简单实现一个 Jar 包加密,防止反编译
spring boot·安全·程序员