中文文档 http://docs.minio.org.cn/docs/

Minio Docker 单节点单磁盘

https://docs.min.io/docs/minio-docker-quickstart-guide.html

单节点部署又分为单磁盘、多磁盘部署,这里不推荐使用单磁盘,因为 minio 的纠删码 > 算法要求至少 4 块磁盘,否则应用不了纠删码,保证不了数据安全以及高可用。

https://min.io/docs/minio/linux/operations/install-deploy-manage/migrate-fs-gateway.html

RELEASE.2022-10-29T06-21-33Z 开始,MinIO 网关和相关的文件系统模式代码已被删除。仍在使用独立或文件系统 MinIO 模式升级到 RELEASE.2022-10-29T06-21-33Z 或更高版本的部署在尝试启动 MinIO 时收到错误。

错误信息为:

1
ERROR Unable to use the drive /data: Drive /data: found backend type fs, expected xl or xl-single - to migrate to a supported backend visit https://min.io/docs/minio/linux/operations/install-deploy-manage/migrate-fs-gateway.html: Invalid arguments specified

注意: RELEASE.2022-10-24T18-35-07Z 之前的版本升级需要迁移数据

1
2
3
4
5
6
7
8
9
10
11
wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc

chmod +x ./mc

# 设置minio2019的alias
./mc alias set minio2019 http://localhost:9000 likfees UU65D4ec62JusfyW9y
# 设置minio2023的alias
./mc alias set minio2023 http://localhost:19000 justfongs UU65D4ec62JusfyW9y

# 全量迁移
./mc mirror minio2019 minio2023
1
mkdir -p ~/minio/data

-v /data/minio/data:/data \ 持久化数据文件到本地 /data/minio/data
-v /data/minio/config:/root/.minio \ 映射配置目录到本地 /data/minio/config, 配置 HTTPS 需要
MINIO_ROOT_USER = 用户名 /accessKey
MINIO_ROOT_PASSWORD = 密码 /secretKey
MINIO_SERVER_URL=API 域名,通过 Web 管理域名登陆创建文件分享时会调用此 API 域名
–console-address ‘0.0.0.0:19001’: Minio 控制后台地址
–address ‘:19000’:Minio 的 API 地址端口

MINIO_DOMAIN 配置 MinIO 来支持自定义域名访问对象

  • 确保你的 SSL 证书支持 *.minio.。你可能需要一个通配符 SSL 证书。
  • 在 DNS 设置中,确保 *.minio.指向你的服务器 IP。
  • MinIO 的虚拟主机样式 URL 要求存储桶名称必须是域名的第一部分。例如,picture.对应的是 “picture” 存储桶。

** HTTP 方式,HTTPS 请看 HTTPS 章节,我尝试使用 nginx 进行反向代理配置 HTTPS 失败了。。。 **

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
docker run -d \
--name minio \
-p 19000:19000 \
-p 19001:19001 \
-v /data/minio:/data \
-v /data/minio/config:/root/.minio \
-e MINIO_ROOT_USER=<username> \
-e MINIO_ROOT_PASSWORD=<password> \
-e MINIO_SERVER_URL=http://127.0.0.1:19000 \
-e MINIO_BROWSER_REDIRECT_URL=http://<your-domain>:19001 \
-e MINIO_DOMAIN=<your-domain> \
-e TZ=Asia/Shanghai \
--restart always \
minio/minio:RELEASE.2024-07-16T23-46-41Z \
server /data --address ":19000" --console-address ":19001"
  1. docker ps -a 查看容器是否正常启动

启动完成后 访问 http://ip:19000 即可进入 Minio

https://minio.kl.do/picture/blog/100bf644d6ee557037794b1bca921d93.png

Docker-compose 搭建 HTTPS 节点

条件为安装 docker-compose

docker-compose.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
services:
minio:
image: minio/minio:RELEASE.2024-07-16T23-46-41Z
container_name: minio
ports:
- "19000:19000"
- "19001:19001"
volumes:
- /data/minio:/data
- /data/minio/config:/root/.minio
environment:
- MINIO_ROOT_USER=<username>
- MINIO_ROOT_PASSWORD=<password>
- MINIO_SERVER_URL=https://127.0.0.1:19000
- MINIO_BROWSER_REDIRECT_URL=https://<your-domain>:19000
- MINIO_DOMAIN=<your-domain>
- TZ=Asia/Shanghai
command: server /data --address ":19000" --console-address ":19001"
restart: always
  1. 修改 docker-compose.yaml 配置

MINIO_ROOT_USER = 用户名 /accessKey
MINIO_ROOT_PASSWORD = 密码 /secretKey
MINIO_SERVER_URL=API 域名
MINIO_BROWSER_REDIRECT_URL = 控制台访问地址

MINIO_DOMAIN 配置 MinIO 来支持自定义域名访问对象

  • 确保你的 SSL 证书支持 *.minio.。你可能需要一个通配符 SSL 证书。
  • 在 DNS 设置中,确保 *.minio.指向你的服务器 IP。
  • MinIO 的虚拟主机样式 URL 要求存储桶名称必须是域名的第一部分。例如,picture.对应的是 “picture” 存储桶。
  1. 执行安装
1
2
docker-compose pull
docker-compose up

配置 HTTPS 证书

本教程使用宝塔面板进行配置,你也可以使用 Let’s Encrypt 申请免费证书

  1. 创建 minio 站点
  2. 添加主域名和桶泛域名

https://minio.kl.do/picture/blog/dd52ad0deb91667112e56a510bfce0e8.png

  1. 申请 Let’s Encrypt

    https://minio.kl.do/picture/blog/69a4e21b73d3a8843a9725b7b55e42ca.png

    1. 将证书部署到 minio

      1
      2
      3
      cd /data/minio/config/certs
      touch private.key
      touch public.crt

      分别将申请证书的 密钥 (KEY) 证书 (PEM 格式) 填入 private.keypublic.crt

      1
      docker-compose restart
      1. 访问 MINIO

        https://

        https://minio.kl.do/picture/blog/100bf644d6ee557037794b1bca921d93.png

新建 Bucket 并设为公共访问

PS: 如果部署的是单节点单磁盘 Minio 提示以下内容,并不影响使用但会丢失高可用特性。如果需要可以使用 docker-compose 安装分布式节点

默认情况下新建的 Buckets 是私有权限,文件也可以直接分享带有效期的临时链接。如果需要当图床使用,可以将 Buckets 修改为公开权限,就可以直接用 https://kl.do/test/abc.jpg 当图床使用.

image-20220330012912194

设为公共访问 Public

image-20220330013131001

Nginx 反向代理

官方文档 http://docs.minio.org.cn/docs/master/setup-nginx-proxy-with-minio

标准的 Root 配置

在文件 /etc/nginx/sites-enabled 中添加下面的内容,同时删除同一个目录中现有的 default 文件。

1
2
3
4
5
6
7
8
server {
listen 80;
server_name example.com;
location / {
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:19000;
}
}

非 Root 配置

注意:

  • 用你自己的服务名替换 http://localhost:9000
  • 用所需的路径替换 files。这不能是 ~^/minio, 因为 minio 是 minio 中的保留字。
  • 所使用的路径 (在本例中为 files) 按照惯例,应设置为 minio 所使用的存储桶的名称。
  • 可以通过添加更多类似于上面定义的 location 定义来访问其他存储桶。
1
2
3
4
5
location ~^/files {
proxy_buffering off;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:19000;
}

宝塔面板

与非 Root 配置一样的

https://minio.kl.do/picture/blog/96b5c64d7a06512ffc3e558d4e5dca2d.png

保存即可使用,后点击修改,将以下内容粘贴

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Origin $http_origin;
proxy_set_header Access-Control-Allow-Origin *;

proxy_connect_timeout 300;
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;

proxy_pass https://127.0.0.1:19000;
}

PicGO

PicGo App

  1. 下载 PicGo
1
yay -S picgo-appimage
  1. 安装 minio 插件
    可以在 picgo 中安装
1
https://github.com/Herbertzz/picgo-plugin-minio
  1. 设置图床参数

测试上传即可

PicGO-Core

image-20230209092349035

安装 minio 插件

picgo 默认路径 C:\Users\<用户名>\AppData\Roaming\Typora\picgo\win64\picgo.exe

1
2
C:\Users\<用户名>\AppData\Roaming\Typora\picgo\win64\picgo.exe install minio
C:\Users\<用户名>\AppData\Roaming\Typora\picgo\win64\picgo.exe use uploader
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
"picBed": {
"uploader": "minio",
"current": "minio",
"minio": {
"endPoint": "minio.kl.do",
"port": "19000",
"useSSL": true,
"accessKey": "用户名",
"secretKey": "密码",
"bucket": "picture",
"sameNameFileProcessingMode": "覆盖",
"baseDir": "files",
"customDomain": "https://minio.kl.do",
"isAutoArchive": false
},
"transformer": "path"
},
"picgoPlugins": {
"picgo-plugin-minio": true
}
}

PicGo-Cli 推荐使用

Linux 需要使用 Cli 工具,Windonws 则不需要

1
sudo npm install -g picgo
  1. 设置图床信息
1
picgo set uploader
  • 设定仓库名:按照【用户名 / 图床仓库名】的格式填写
  • 设定分支名:【 main 】 2021 年后 master 改为 main
  • 设定 Token: 粘贴上述生成的【 Token 】
  • 指定存储路径:如【 images/ 】, 这样就会在仓库下创建一个名为 images 的文件夹,图片将会储存在此文件夹中
  • 设定自定义域名:它的的作用是,在图片上传后,PicGo 会按照【 自定义域名 + 上传的图片名 】的方式生成访问链接,放到粘贴板上,
  1. 安装插件
1
picgo install minio
  1. 配置 minio 参数
1
picgo set uploader

image-20220330020543381

image-20220508112322393

  1. 选择默认图床
1
picgo use uploader

Typora

image-20220330020916960