通过MinIO + PicList自建图床

2024-07-04

1617

0

前言

看过我前面文章的知道,其实我已经 通过 Github + jsDelivr + PicGo 配置了免费图床 ,并且一直在使用,那为什么还要闲的没事,自建图床呢?

原因前面也提到过,Github + jsDelivr 的方案什么都好,免费高效配置简单,唯一的毛病就是内地这边不太稳定,如果主打海外市场,这个问题可能并不明显,但如果大部分读者都在国内,那还是挺糟心的了。

我一开始还想着反正网站也没什么人访问,而且在我看来大部分访问的人估计也只是看看效果就退出去了,不怎么会详细浏览,所以一直没怎么放在心上,但最近反馈的有点多,所以想着还是自建一个吧,毕竟图床对图片的管理确实太方便了!

于是就在网上搜索并对比了一圈,最终选择了MinIO + PicList的方案,因为该方案与我的运行环境比较契合,部署起来比较简单。

1. 环境准备

我们知道通过 Github + jsDelivr + PicGo 配置图床,真的只需要简单的配置一下就可以了,不需要投入任何资源,可以说是零成本。而自建图床就不一样了,可能至少需要如下准备:

不难发现,环境的准备还是挺麻烦的,但如果你前面搭建博客的步骤和我一样,那么,这次的图床搭建也会非常简单,事实上前面的每一个步骤都非常简单且很有必要。环境搭建就跟学习一样,基础打牢了,后面的每一步就都简单了。

2. Minio部署

这里我用到了 minio/minio 镜像,这个是官方的,你也可以用 bitnami/minio ,它在 minio/minio 的基础上做了一些扩展,这个虽然是非官方的,但经过了官方认证,用的人也挺多,不过对于我们而言,二者其实没有太大区别。

首先,通过如下命令拉取镜像:

docker pull minio/minio

事实上,也可以省略上述步骤,直接执行下面的脚本启动容器,如果本地没有镜像,会自动从服务端拉取:

docker run --network=ilaozhu_net --name minio -d --restart=always -e "MINIO_ROOT_USER=xxxx" -e "MINIO_ROOT_PASSWORD=xxxxxxxx" -v /data/minio:/data minio/minio server /data --console-address ":9000" --address ":9001"

值得注意的是:

  • 需要通过 --network确保minio容器和反向代理服务容器(我这里是Nginx Proxy Manager)在同一网络,否则两个容器网络不通,反向代理会不成功;
  • 通过MINIO_ROOT_USERMINIO_ROOT_PASSWORD设置登录账号密码,其中,MINIO_ROOT_PASSWORD必须至少是8位字符,否则容器启动会报错;
  • 细心的会发现,我这里没有将90009001端口与主机进行端口映射,因为后续会配置反向代理,映射了也用不上,所以干脆省掉了;
  • 这里的9000端口对应的是管理控制台,而9001对应的是 API 接口。

2. 反向代理与证书

其实经过上面的一行脚本,容器就已经部署成功了,但由于没有对外暴露 90009001 端口,所以还不能访问,还需要配置反向代理做域名映射后才行,域名映射对应关系如下表所示:

域名端口说明
imgr.ilaozhu.com9000管理控制台
imgs.ilaozhu.com9001API接口

2.1 设置反向代理

2.2 设置SSL证书

2.3 最终效果

一共就只有上面两项需要设置,两个域名都设置完成的最终效果如下图所示:

接下来就可以通过 https://imgr.ilaozhu.com 登录控制台了。

3. 图床设置

图床的设置也很简单,只需要创建桶授权两个步骤就可以了。

3.1 创建桶

登录后打开主界面,选择 Buckets,并点击Create Bucket,如下图所示:

填写桶名称,最好是用英文。提示说的是下面的特性单磁盘不可用,不用管,直接创建就可以了。

3.2 设置权限

最后一步,把访问权限设置成Public

接下来就可以通过控制台上传图片,然后通过https://你的API接口域名/桶名/图片名来访问了。

4. 设置PicList

如果直接在浏览器上管理图片,不仅功能缺失,而且还很不方便,因此,我们还需要把PicList配置起来。

如何安装PicList就不赘述了,这里主要介绍如何在PicList上安装设置所需的插件。

4.1 安装插件

首先,直接在插件中搜索minio,第一个就是,安装它。

4.2 配置插件

然后,到已安装的插件列表中,点击插件上的齿轮配置插件。

这里需要特别注意一下的是,已安装的插件列表中还有一个rename-file插件,这是之前安装的,用来生成文件名称与目录的,现在依然需要。

有了它,无论使用什么图床,都可以保证目录结构和文件命名方式一致,方便迁移,当然,使用这个插件,minio插件中的自动归档就不能开启了。

好了,到这里所有的安装配置都完成了,去试试操作是否丝滑吧。

5. 图片迁移

配置了新的图床,图片肯定是需要迁移的,好在也不复杂,我们之前的图片全在github上,现在只需要下载下来,然后整个目录完整上传到新的图床空间中就可以了。

接下来,就可以将原图片链接中的 https://cdn.jsdelivr.net/gh/ZShijun/image-repo 替换成https://imgs.ilaozhu.com/images,用新地址访问图片了,虽然历史文章替换起来有些麻烦,但总的来讲还是可以接受的。

很明显,这次学聪明了,用上了域名映射,也就是说如果以后还想换成其它更强大的图床,如阿里云OSS,或腾讯云的COS等,直接换存储方式和域名映射就可以了,上层使用方式完全不受影响。

结语

好了,到这里自建图床就全部完成了,如果恰好你也用得上,就赶紧部署起来试试吧!

相关推荐

  1. 通过Nginx Proxy Manager为自建图床配置防盗链 2024-07-12
  2. 通过 Github + jsDelivr + PicGo 配置免费图床 2024-04-19

本文作者: 老朱

原文链接: 通过MinIO + PicList自建图床

版权声明: 本站所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

免责声明: 文中如涉及第三方资源,均来自互联网,仅供学习研究,禁止商业使用,如有侵权,联系我们24小时内删除!

图床

评论6

😊 😃 😄 😁 😆 😅 😂 🤣 🙂 🙃 😉 😇 😏 😌 😍 😘 😗 😙 😚 😋 😛 😜 😝 😒 😔 😖 😞 😟 😠 😡 😳 😨 😰 😥 😢 😭 😱 😲 😵 😷 🤒 🤕 🤢 😴 🤤 😪 😫 😬 😮 🤲 🤜 🤛 🤚 🤝 🙏 🤞 🤟 🤘 🤙 👌 👍 👎 👊 👏 🙌 👐 💪
  1. 空白格

    大佬,请教个问题,您最后一张图片,从GitHub 迁移的目录能直接在minio 目录下用吗,minio 中的图片实际是个目录+元数据?
    tree Actual_A.png/
    Actual_A.png/
    └── xl.meta

    并且如果npm 中不设置 允许 websocket ,minio object broswer 就一直 loading

    2024-09-04 21:40
    1. 老朱

      我是直接迁移的,并且也没有允许websocket,你看看是不是代理的端口不对,要代理到API接口的这个9001端口

      2024-09-04 22:22
  2. 运维学习笔记博客

    我喜欢直接把图片放在本地,然后针对图片CDN 上开大缓存策略,这样备份迁移很方便!

    2024-07-25 12:12
    1. 老朱

      这样也是个好办法

      2024-07-25 12:17
  3. Huo

    看起来这个方案很不错,特别想尝试一下!

    2024-07-19 00:50
    1. 老朱

      用了段时间,感觉还可以😁

      2024-07-19 08:54