前些天听人推荐MinIO后尝试了下,发现比那几个用PHP写的图床流畅、好用。虽然不能像图床那样可以直观展示,但它用途更广、性能更强。
MinIO公网单服务器部署
MinIO compose部署
我的VPS环境是Debian 12,有root权限,采用docker compose的部署方式。其实官网对于各平台、各种部署方式有着详细的文档和视频教程,但英语确实让不少人望而却步。我在这贴下链接:MinIO docker部署,并给出我的compose.yaml
:
|
|
同compose.yaml
文件夹下新建个.env
,这些环境变量用于配置MinIO WebUI的管理员账号和登录面板地址:
|
|
Nginx反代配置
官网上对于Nginx反代的详细配置:MinIO Nginx反代。对于MinIO API和MinIO Console控制台有两种反代方式:
- API与Console使用同一域名,但路径上有区别,即API:
https://minio.example.com
,Console:https://minio.example.com/minio/ui
- API与Console采用两个不同的域名,即API:
https://minio.example.com
,Console:https://console.example.com
。
我使用的是第一种方式,/etc/nginx/conf.d
下的minio.conf
:
|
|
额外贴下我的/etc/nginx/nginx.conf
(通用配置):
|
|
MinIO Bucket配置
Bucket翻译成桶,桶里什么都能装,所以我们要创建桶并设置好桶的规则。
Bucket的创建
- 创建一个Bucket,名称随意
- 下面的三个选项按需开启,默认都不开启。
Bucket的Policy设置
- 将该
public
桶的规则设置为所有人只读。 - 这样设置后,该
public
桶里的所有内容将只允许其他人查看,不允许其他人写入、删除等。
普通账户与Access Key
强烈不建议使用管理员账户或继承自管理员账户权限的Access Key进行对象管理,改用普通账户。
普通账户的Policy设置
- 新建名为
picgo-policy
的policy - 各项参数的作用,详见MinIO S3 Policy Action,Policy配置如下:
|
|
新建账户与赋权
- 新建名为
picgo
的用户,设置密码,并将该用户的Policy设置为刚才创建的picgo-policy
。
普通账户的Access Key
- Access Key的权限默认继承自当前账户的Policy,因此我们要生成一个来自
picgo
用户的Access Key,记好key和secret。
PicGo设置MinIO
- PicGo添加MinIO插件不再赘述。
- 导入
picgo
的Access Key - 然后就可以通过PicGo上传图片到自建的MinIO图床里了。如果上传到
public
的子目录,记得添加基础目录,还可以设置自定义域名和基础路径。
补充
- MinIO目前不支持在某个Bucket的Policy里直接指定某用户的权限,只允许设置匿名账户,详见此处。官方推荐的做法是通过不同账户或Access Key的Policy来设置不同的权限,也就是我上文使用的做法。
- 域名挂靠在Cloudflare上并打开CF的CDN后,PicGo里用API上传会失败,提示认证错误,等有空我排查下是什么原因。