简介
对象存储服务(Object Storage Service,简称OSS) 是一种基于网络的数据存取服务,主要用于存储和管理非结构化数据,如文本、图片、音频和视频等。OSS 提供了高可靠性、高可用性和低成本的云存储解决方案,适用于各种应用场景。
对于个人而言,oss可以与markdown对接,实现图片上云,全网都可以访问。
阿里云、腾讯云等互联网大厂都提供了对象存储服务(阿里云oss、腾讯云cos等)。但大厂提供的存储服务有一个致命缺陷:按量计费。低廉的存储费用确实吸引人,但流量费用并不低,普遍在0.8元/g左右。更严重的是,各大厂商都不提供安全服务,当oss被恶意刷流量时无法自动停止,因此造成高昂的流量费用。有人甚至两天被刷20TB流量,账单过万。
因此,本文将介绍如何自建一个对象存储服务,实现所需功能的同时避免风险。在开始之前,你需要拥有:
- 一台大厂的云服务器(带公网ipv4),或者 一台nas(带公网ipv6)。
- 一个域名,绑定云服务器的ip,无需备案,但是访问控制台需要(如果绑定nas的ipv6则不需要备案)
- 明白如何配置反向代理,推荐使用lucky。
安装MinIO
我们使用开源项目MinIO搭建oss。这里以绿联nas的docker进行演示。
先进入文件管理,建立一个文件夹,命名为oss:
右键,进入属性,查看文件真实路径并且记录下来:
然后打开docker:
进入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
然后创建:
下载可能比较慢,耐心等待部署完成即可:
网络配置
我演示使用域名绑定ipv6地址,并且绑定20000端口进行反代。注意,这只是一个简易示例,具体配置请去查找专门的教程。
动态域名绑定:
ssl设置:
设置反代:
添加api的反代子规则:
添加控制台的反代子规则:
重定向别忘了:
之后就可以通过域名访问控制台了。
MinIO控制台初始化
如果绑定的域名已备案,或者是ipv6访问,可以通过配置的控制台域名访问控制台:
使用之前设定的账号密码登录:
然后就可以进入主界面,然后点击中央的Create a Bucket:
填入自己想要的桶名,然后创建:
点击这个bucket:
进入界面,点击Anonymous:
点击Add Access Rule:
第一行填/,然后点Save:
然后就可以了,你的oss已经配置好了。
oss的备份
由于采用了docker compose进行部署,所以存储库的备份相当的容易,容易地出乎意料:直接把整个文件夹备份。
就是这个文件夹,之前我们创建的,整个复制粘贴走就行。如果原文件夹损毁,可以用备份的文件夹通过docker compose进行恢复。恢复之后,所有数据,包括用户数据都将完好如初。
markdown接入oss
这里使用typora+picgo进行教学。
picgo部分
浏览器搜索picgo:
点进去,点击快速开始,然后进入山东大学镜像站下载:
下载这个文件:
之后正常安装即可。
安装之后,从右下角打开:
然后先打开魔法上网,这需要自行解决。之后点击插件,搜索minio:
点击右下角安装,我这里已经安装完了。
点击左侧列表的图床设置-MinIO图床,然后进入设置页面:
参照以下提示填写:
之后点击确定,然后再点设为默认图床:
typora部分
打开typora,进入偏好设置,然后点击图像,按照以下页面设置:
之后在typora中插入图片时,就会发现图片自动上传到oss,且使用oss的链接了。
默认评论
Halo系统提供的评论