本文将详细介绍如何使用 MinIO 自建对象存储服务,并通过 PicGo 实现 Markdown 图片自动上传到云端。解决大厂 OSS 服务流量费用高、安全风险大的问题,提供完整的安装配置教程和备份方案。

什么是对象存储服务

对象存储服务(Object Storage Service,简称 OSS)是一种基于网络的数据存取服务,主要用于存储和管理非结构化数据,如文本、图片、音频和视频等。OSS 提供了高可靠性、高可用性和低成本的云存储解决方案,适用于各种应用场景。

对于个人而言,OSS 可以与 Markdown 对接,实现图片上云,全网都可以访问。

阿里云、腾讯云等互联网大厂都提供了对象存储服务(阿里云 OSS、腾讯云 COS 等)。但大厂提供的存储服务有一个致命缺陷:按量计费。低廉的存储费用确实吸引人,但流量费用并不低,普遍在0.8 元/GB左右。更严重的是,各大厂商都不提供安全服务,当 OSS 被恶意刷流量时无法自动停止,因此造成高昂的流量费用。有人甚至两天被刷20TB流量,账单过万。

准备工作

在开始之前,你需要拥有:

  • 一台大厂的云服务器(带公网 IPv4),或者一台 NAS(带公网 IPv6)
  • 一个域名,绑定云服务器的 IP,无需备案,但是访问控制台需要(如果绑定 NAS 的 IPv6 则不需要备案)
  • 明白如何配置反向代理,推荐使用 Lucky

安装 MinIO

我们使用开源项目MinIO搭建 OSS。这里以绿联 NAS 的 Docker 进行演示。

先进入文件管理,建立一个文件夹,命名为 oss:

创建 MinIO 存储文件夹步骤

右键,进入属性,查看文件真实路径并且记录下来:

查看文件夹路径属性

然后打开 Docker:

打开 Docker 管理界面

进入 Docker Compose(绿联这边叫项目),然后新建项目:

创建 Docker Compose 项目

路径选你新建的文件夹。

之后,复制以下代码到 YAML 里面,注意我提醒的要修改的地方:

version: '3.8'

services:
  minio:
    image: minio/minio:RELEASE.2025-04-22T22-12-26Z
    container_name: minio
    restart: unless-stopped
    environment:
      MINIO_ROOT_USER: 填你想要设置的账号名,注意 10 个字母以上
      MINIO_ROOT_PASSWORD: 填你想要设定的密码,注意 10 个字符以上,要同时包含字母和数字
      MINIO_API_REQUESTS_MAX: 10000
      MINIO_API_REQUESTS_RATE_LIMIT: 1000
    ports:
      - "9000:9000"   # API 端口,别改
      - "9001:9001"   # 控制台端口,别改
    volumes:
      - 填你前面保存的地址,注意-和地址之间有一个空格
    command: server --console-address ":9001" --address ":9000" /data

然后创建:

Docker Compose 创建确认界面

下载可能比较慢,耐心等待部署完成即可:

MinIO 部署完成状态

网络配置

我演示使用域名绑定 IPv6 地址,并且绑定 20000 端口进行反代。注意,这只是一个简易示例,具体配置请去查找专门的教程。

动态域名绑定:

动态域名解析配置

SSL 设置:

SSL 证书配置界面

设置反代:

反向代理基础设置

添加 API 的反代子规则:

API 反向代理规则配置

添加控制台的反代子规则:

控制台反向代理规则配置

重定向别忘了:

HTTP 重定向设置

之后就可以通过域名访问控制台了。

MinIO 控制台初始化

如果绑定的域名已备案,或者是 IPv6 访问,可以通过配置的控制台域名访问控制台:

MinIO 控制台登录页面

使用之前设定的账号密码登录:

MinIO 登录认证界面

然后就可以进入主界面,然后点击中央的Create a Bucket

MinIO 主控制台界面

填入自己想要的桶名,然后创建:

创建存储桶对话框

点击这个 bucket:

存储桶列表页面

进入界面,点击Anonymous

存储桶权限管理界面

点击Add Access Rule

添加访问规则按钮

第一行填/,然后点Save

访问规则配置界面

然后就可以了,你的 OSS 已经配置好了。

OSS 的备份

由于采用了Docker Compose进行部署,所以存储库的备份相当的容易,容易地出乎意料:直接把整个文件夹备份。

OSS 备份文件夹位置

就是这个文件夹,之前我们创建的,整个复制粘贴走就行。如果原文件夹损毁,可以用备份的文件夹通过Docker Compose进行恢复。恢复之后,所有数据,包括用户数据都将完好如初。

Markdown 接入 OSS

这里使用Typora+PicGo进行教学。

PicGo 部分

浏览器搜索 PicGo:

PicGo 搜索引擎结果

点进去,点击快速开始,然后进入山东大学镜像站下载:

PicGo 官网下载页面

下载这个文件:

PicGo 安装文件选择

之后正常安装即可。

安装之后,从右下角打开:

PicGo 系统托盘图标

然后先打开魔法上网,这需要自行解决。之后点击插件,搜索minio

PicGo 插件搜索界面

点击右下角安装,我这里已经安装完了。

点击左侧列表的图床设置-MinIO 图床,然后进入设置页面:

PicGo MinIO 图床配置界面

参照以下提示填写:

MinIO 配置参数说明 1
MinIO 配置参数说明 2

之后点击确定,然后再点设为默认图床

设置默认图床选项

Typora 部分

打开 Typora,进入偏好设置,然后点击图像,按照以下页面设置:

Typora 图像上传设置界面

之后在 Typora 中插入图片时,就会发现图片自动上传到 OSS,且使用 OSS 的链接了。