本地图床搭建:宝塔+Docker+MinIO+PicGo+cpolar:打造本地化图床方案

写在前面:本博客仅作记录学习之用,部分图片来自网络,如需引用请注明出处,同时如有侵犯您的权益,请联系删除!


前言

在博客创作过程中,图片管理是不可或缺的重要环节。对于众多依赖 WordPress 搭建博客网站的用户而言,每次上传媒体文件都需要在后台手动操作,流程繁琐且效率低下。而选择公开图床虽能暂时解决存储问题,但数据安全与稳定性始终是悬而未决的隐患——一旦图床服务商关闭或数据丢失,辛苦积累的视觉素材可能瞬间化为乌有。

为破解这一困境,本地化图床方案应运而生。通过服务器环境中的宝塔面板,可快速部署 Docker 容器化服务,实现存储与应用的物理隔离。在此基础上,采用 MinIO 构建高性能、S3 协议兼容的对象存储系统,既能满足海量图片的分布式存储需求,又可通过标准化接口与第三方工具无缝对接。同时,借助 PicGo 实现便捷的客户端上传功能,并配合 cpolar 内网穿透技术,将本地服务映射为公网可访问的静态资源地址以实现图片资产的自主掌控与高效管理。


宝塔安装Docker

首先在宝塔面板进行Docker安装,操作如下:

image-20250413115158697

注意:虚拟机的宝塔面板的无法实现外网访问。

  • 授权特定IP也不行。
  • 建议修改虚拟机的网络模式为桥接模式:NAT模式只能本机访问,桥接可局域网访问,相对方便点。
  • 桥接模式可实现局域网内对 MinIO 的访问,即在不同电脑上都可以使用本地图床,达到多机访问。

桥接模式设置如下:

image-20250413144352453


MinIO

Minio 是高性能分布式对象存储存储系统,属于开源软件,旨在满足非结构化数据增长需求。

本文主要涉及 Minio 安装与访问,以提供图像的存储服务,进而实现图床的功能。

为实现公网的图像访问,采取 cpolar 对 Minio 的端口进行映射,因此建议 Minio 的存储桶的权限设置为可读。

MinIO 安装

  • Docker 安装 MinIO 插件,操作如下:

image-20250413115437135

  • 记住其中的账号密码,操作如下:

image-20250413115916074

  • 可查看 MinIO 日志,明确后台IP,操作如下:

image-20250413120059670


MinIO 访问

  • 浏览器中输入后台网址:127.0.0.1:19001, 并输入账号密码进行登录。

image-20250413120329300

  • 新建图床的存储桶,并进行对应的设置。

存储桶是用于组织和管理在对象存储服务中存储的数据(即对象)的逻辑单位,相当于一个高度可配置和可扩展的文件夹。存储桶拥有更多的元数据和访问控制策略,每个存储桶都有一个全局唯一的名称,并且通常用于存放一组相关的数据。

image-20250413120410174

  • 进行必要命名。

image-20250413120624917

  • 进行权限修改,可读的权限。

image-20250413121141625

image-20250413121408741

  • 可尝试上传,成功上传即可。

image-20250413121800704

  • 创建访问密钥,请妥善保存密钥,后续PicGo会用到。

image-20250413122257595


cploar内网穿透

cpolar 是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务。为实现对 MinIO 的图像可以公网访问,采取的方法是将 MinIO 的19000端口通过安全隧道暴露至公网。

免费版套餐提供的域名是随机的,因此每次映射或者重启cpolar都会发送改变,建议升级为基础版本(99RMB/年)。可实现3个二级域名的保留,就是固定域名。三个二级域名可实现 wordpress 的博客网站的映射和 MinIO 端口映射,以及其他的需要,无需备案。gridinsoft显示笔者所使用的域名(dhxl.vip.cpolar.cn)已于6年钱通过阿里云计算有限公司(万网)公司注册,所有者为北京嘉迅科技有限公司,该公司已经备案,个人无需备案。

有想法尝试下cploar的叶子可使用笔者的推广链接:https://i.cpolar.com/m/5sc2

cploar安装(Linux/Ubuntu)

当然你需要一个注册一个号,cploar官网:https://www.cpolar.com/

  • 登陆后可以看见安装步骤,Linux 不推荐这样安装,浏览器可能无法访问cpolar web UI管理界面。image-20250413134717233

上述操作,配置文件在/home/用户名/.cpolar/cpolar.yml,无法配置系统服务,即cpolar http 80会报错找不到cpolar,进而向系统添加、启动、查看cpolar服务:sudo systemctl enable cpolarsudo systemctl start cpolarsudo systemctl status cpolar都会提示没有该服务。

笔者也尝试过创建cpolar.service、将cpolar可执行文件移动到/usr/lccal/bin等,甚至添加环境变量,编辑./bash_bashrc等等,网上找了一堆解决办法都不行,甚至一度怀疑是不是虚拟机的问题。

最后发现是安装有问题,于是卸载cpolar进行重新安装。

卸载: curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash -s -- --remove

  • cploar 正确的安装方法(Linux)
  1. 切换到root账户:sudo -s
  2. cpolar 安装:curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  3. 查看版本: cpolar version
  4. token认证: cpolar authtoken 你的authtoken

image-20250413140404808

  1. 添加系统服务:sudo systemctl enable cpolar
  2. 启动服务:sudo systemctl start cpolar
  3. 查看服务:sudo systemctl start cpolar, 正常在线即可。

image-20250413140724628

cploar映射 MinIO 端口

  • 首先保留一个二级域名,此处以dhxl为例:

image-20250414203425813

  • 要在 cploar web UI 管理界面 进行隧道的建立。

image-20250414203849259

  • 在隧道列表里面可看到固定的二级域名

image-20250414204112238

相反本地很简单,就一行命令:cpolar http 19000

此时就可以通过 dhxl.vip.cpolar.cn 访问图床了。


PicGo下载与安装

Gitee 下载 PicGo: PicGo

不推荐 Github 的下载方式,国内访问受限或者需要科学上网。

image-20250414205507525

  • 下载AppImage结尾的文件

image-20250413130951224

  • 可执行文件右键修改执行权限

image-20250413131224270

  • 运行PicGo-2.3.1.AppImage:./PicGo-2.3.1.AppImage

可能会遇到报错:dlopen(): error loading libfuse.so.2,AppImages require FUSE to run.You might still be able to extract the contents of this AppImage,if you run it with the –appimage-extract option.See https://github.com/AppImage/AppImageKit/wiki/FUSE for more information

  • 解决办法: sudo apt install libfuse2

image-20250413131655744

  • picgo-plugin-minio 插件下载
  1. Gitee下载地址:picgo-plugin-minio
  2. 可通过git进行克隆 git clone https://gitee.com/wanghuya/picgo-plugin-minio.git
  3. 可以下载zip, 然后使用unzip picgo-plugin-minio.zip进行解压。
  • picgo-plugin-minio 安装

由于该插件需要 npm,所以先进行安装。安装流程如下:

  1. sudo apt install npm
  2. cd picgo-plugin-minio
  3. npm install

image-20250413132817499

  • PicGo 配置 picgo-plugin-minio
  1. 安装本地插件

image-20250413133204353

  1. 配置 MinIO 端口

image-20250413133642349

  • PicGo 修改图片链接

image-20250413134013564


typora安装

由于多数博客均是使用markdown语法,并非使用html进行编辑。因此在本地编辑希望将插入的图像直接转成对应的公网可访问的图片连接避免一个个替换,typora恰好提供了这样的功能。

image-20250413141635822

image-20250413141724915

  • 安装

sudo dpkg -i typora_1.10.8_amd64.deb

image-20250413141926128

  • 偏好设置 – 图像上传 MinIO

image-20250413142048167

image-20250413142130093

image-20250413143028582

  • 插入效果

image-20250413150529805


总结

总结: 本文通过宝塔面板安装Docker,提供MinIO服务以实现对象存储,进一步使用PicGo上传MinIO,并以cpolar实现内网穿透的同时提供公网访问的图像IP以搭建本地图床。


致谢

欲尽善本文,因所视短浅,怎奈所书皆是瞽言蒭议。行文至此,诚向予助与余者致以谢意。


参考

[1] https://www.cpolar.com/
[2] 山东大学的镜像站
[3] PicGo
[4] picgo-plugin-minio
[5] https://typoraio.cn/releases/all
[6] https://cloud.tencent.com/developer/article/2446060

发表评论

滚动至顶部