如何利用MinIO构建自己的私有对象存储服务

# 前言

最近在研究如何将我越来越多的文章图片转移储存位置了,之前都是放在腾讯的对象储存上,但是超出10G免费额度后,费用越来越夸张,用不起用不起。

 

经过简单搜索,我发现了一个非常NICE的自建对象储存服务:MinIO

 

它是使用标准的S3 协议的,这样就可以兼容所有的S3基础设施,原有的S3用户也可以无缝迁移到MinIO 。

 

下面我就使用docker实际部署一遍,做个记录分享。

202212131134041

 

# 使用docker 部署

如果你的系统没有安装docker,使用以下命令安装:

apt install docker.io

 

docker安装好了之后,就可以粘贴以下代码直接Run了,因为docker实在是太简单了。

docker run -d --name=minio --restart=always \
    -v 【文件实际储存位置】:/data \
    -p 9000:9000 \
    -p 9001:9001 \
    -e MINIO_ROOT_USER=【用户名】 \
    -e MINIO_ROOT_PASSWORD=【密码】 \
    -e MINIO_SERVER_URL=【API地址】 \
    -e MINIO_BROWSER_REDIRECT_URL=【管理地址】 \
    minio/minio:latest server /data --console-address ":9001"

将上述中文替换为你实际的参数后再运行。MINIOSERVERURL 为API 域名,通过Web 管理域名登陆创建文件分享时会调用此API 域名,如果不是很明白的话,可以使用下面这个默认配置:

docker run -d --name=minio --restart=always \
    -v /data:/data \
    -p 9000:9000 \
    -p 9001:9001 \
    -e MINIO_ROOT_USER=admin \
    -e MINIO_ROOT_PASSWORD=passwd\
    -e MINIO_SERVER_URL=https://share.tstrs.me \
    -e MINIO_BROWSER_REDIRECT_URL=https://drive.tstrs.me \
    minio/minio:latest server /data --console-address ":9001"

 

运行后,你打开服务器http://server_ip:9001 就可以访问后台,默认账户admin,密码passwd,登陆后创建Buckets,最后上传文件使用即可。

202212131205845

 

# 配置权限

默认的Buckets权限为私有,这样我们就不能作为图床使用了,需要将访问政策修改为 custom,并输入以下字段,记得将【Buckets name】替换为你实际的 Buckets 名称。

{
    "Version": "2012-10-17",
    "Statement": [
   {
  "Effect": "Allow",
  "Principal": {
 "AWS": [
"*"
 ]
  },
  "Action": [
 "s3:GetBucketLocation"
  ],
  "Resource": [
 "arn:aws:s3:::【Buckets name】"
  ]
   },
   {
  "Effect": "Allow",
  "Principal": {
 "AWS": [
"*"
 ]
  },
  "Action": [
 "s3:GetObject"
  ],
  "Resource": [
 "arn:aws:s3:::【Buckets name】/*"
  ]
   }
    ]
}

 

THE END