前期准备
- 需要有一台服务器(可以在公网直接访问的)
- 一个域名(可以通过 DNS 解析访问到你的服务器的)
- docker 环境
- docker-compose
- nginx 服务
搭建 minio
minio 配置
docker-compose文件
version: "3"
services:
minio:
image: minio/minio:RELEASE.2024-02-26T09-33-48Z
restart: always
container_name: minio
ports:
- 9001:9001
- 9000:9000
command: server /data --console-address :9001 --address :9000
environment:
MINIO_BROWSER: "on" # 是否开启 webui
MINIO_BROWSER_LOGIN_ANIMATION: "on" # webui 登录动画
MINIO_BROWSER_REDIRECT_URL: https://file.domain.com
MINIO_BROWSER_SESSION_DURATION: # minio 会话持续时间
MINIO_ROOT_PASSWORD: admin # minio 登录密码
MINIO_ROOT_USER: admin # minio 登录用户
MINIO_SERVER_URL: https://console.domain.com
volumes:
- ./data:/data
nginx 配置
minio console 页面配置
server {
server_name console.domain.com;
client_max_body_size 100m; # 设置文件上传最大大小,nginx 默认最大 1MB
location / {
proxy_pass http://localhost:9000;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/console.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/console.domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = console.domain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name console.domain.com;
return 404;
}
minio api 页面配置
server {
server_name file.domain.com;
client_max_body_size 100m; # 设置文件上传最大大小,nginx 默认最大 1MB
location / {
proxy_pass http://localhost:9001;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
listen 443 ssl;
ssl_certificate /etc/letsencrypt/live/file.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/file.domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = file.domain.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name file.domain.com;
return 404;
}
PS:这里我的 ssl 证书是使用 certbot 进行生成的
注意:如果有上传大文件的需求,需要在 nginx 配置中设置 client_max_body_size
,否则最大上传大小为 1MB
minio 测试
登录到 minio console 界面中
输入前面 compose 中设置的用户名和密码 admin
创建一个 bucket
将 bucket 设置为 public 公共读
手动上传一张图片
此时可以看到此 bucket 的权限是公共的,所以他可以通过 url 进行公共读
获取 minio 的 key 和密钥
注意:此处创建完之后生成的 密钥只会出现一次,后续无法进行复制,请生成的时候进行保存即可
picgo-core 配置 minio
安装 minio 插件
picgo install picgo-plugin-minio
配置 minio 插件
使用 picgo 上传文件
此处可以看到可以使用 picgo 命令进行文件上传,然后我们将链接复制到浏览器中进行查看,是可以看到有文件上传上去的