前言
作为一个程序员,拥有自己的个人对象储存是非常合理的,目前市面上的服务提供商对个人用户非常不友好,除去收费以外,基本都需要域名备案.
因此使用 minio 搭建一个个人对象存储。使用 minio 的主要原因如下:
- minio 分为社区版和企业版,社区版开源免费试用,因此无需担心后续无人维护的问题
- api 完全兼容 Amazon S3 cloud storage
- 高性能,可单机部署也可集群部署
搭建
使用 docker 构建应用,方便快捷。这里没有使用官方的 docker 镜像,用的 bitnami 的镜像镜像地址,此镜像做了一些修改,支持非 root 用户启动。
- 其中
/hostPath
为数据持久化路径 - 1000 为用户 uid。
- MINIO_ROOT_USER 后台访问用户名
- MINIO_ROOT_PASSWORD 后台访问密码
docker 命令行方式
docker run -itd --user 1000 --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER="username" -e MINIO_ROOT_PASSWORD="password" -v /hostPath:/data bitnami/minio:latest
docker-compose
services:
minio:
image: bitnami/minio:latest
environment:
MINIO_ROOT_USER: "fanxb"
MINIO_ROOT_PASSWORD: "yts2qrtmz4"
user: "1000"
container_name: minio
volumes:
- /hostPath:/data
ports:
- 9000:9000
- 9001:9001
部署完毕后通过 9001 端口进行访问。9000 端口是 api 用的,9001 是管理界面访问端口。
使用
容器启动成功后会在/hostPath 下创建两个文件,分别为管理员用户名和密码。
下面说一些重点操作
创建指定 bucket 的访问密钥
进入 identity->Service Accounts
页面
点击create service account
开启Restrict beyond user policy
输入如下内容,将 bucketName 替换为你要控制的存储桶名:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": ["admin:*"]
},
{
"Effect": "Allow",
"Action": ["s3:*"],
"Resource": ["arn:aws:s3:::bucketName/*"]
}
]
}