Minio(docker部署)+PicGo 打造个人图床+Typora 调用图床

一、Minio部署

1、docker-compose方式部署minio

mkdir /app/minio 
cd /app/minio 
vim /app/minio/docker-compose.yaml
version: '3.8'

services:
  minio:
    image: quay.io/minio/minio
    container_name: minio
    restart: always
    ports:
      - "127.0.0.1:9000:9000"  # 采用nginx反代,不对外暴露端口,端口映射采用127.0.0.1:{port}:{port}
      - "127.0.0.1:9001:9001"
    environment:
      MINIO_ROOT_USER: "crazyoss" 
      MINIO_ROOT_PASSWORD: "crazy1997."
      MINIO_BROWSER_REDIRECT_URL: "https://oss.xxxx.de/minio/ui" # 这里填写的域名地址是反代了minio console页面
    volumes:
      - ./minio-data:/data
    command: server /data --console-address ":9001"

2、配置nginx进行minio api 和console端口的反代

vim /etc/nginx/conf.d/minio.conf
upstream minio_s3 {
   least_conn;
   server 127.0.0.1:9000;
}

upstream minio_console {
   least_conn;
   server 127.0.0.1:9001;
}

server {
        listen       443 ssl;
        server_name  oss.xxx.de;
				 
  			#  文件上传限制大小 0为不限制
        client_max_body_size 0;

        access_log  /var/log/nginx/minio-access.log;
        error_log  /var/log/nginx/minio-error.log;
	 			# tls config
        ssl_certificate "/etc/nginx/cert/xxxx.de/fullchain.pem";
        ssl_certificate_key "/etc/nginx/cert/xxxx.de/privkey.pem";
        ssl_session_cache shared:MozSSL:10m;
        ssl_session_timeout  10m;
        ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4;
        ssl_prefer_server_ciphers on;

        # Allow special characters in headers
   			ignore_invalid_headers off;
   			# Allow any size file to be uploaded.
  			# Disable buffering
   			proxy_buffering off;
 			  proxy_request_buffering off;
				
  			# 反代minio s3 api 接口9000
        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_connect_timeout 300;
        	# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
        	proxy_http_version 1.1;
       	 	proxy_set_header Connection "";
        	chunked_transfer_encoding off;
        	proxy_cache off; 
        	proxy_set_header Upgrade $http_upgrade; 
        	proxy_pass http://minio_s3; # This uses the upstream directive definition to load balance
        }

				# 反代minio的console web管理ui页面 9001端口,由于不想多使用一个域名,通过域名路径的方式访问web页面
        location /minio/ui/ {
        	rewrite ^/minio/ui/(.*) /$1 break;
       	  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 X-NginX-Proxy true;
      		# This is necessary to pass the correct IP to be hashed
      		real_ip_header X-Real-IP;
      		proxy_connect_timeout 300;
      		# To support websockets in MinIO versions released after January 2023
      		proxy_http_version 1.1;
      		proxy_set_header Upgrade $http_upgrade;
      		proxy_set_header Connection "upgrade";
      		# Some environments may encounter CORS errors (Kubernetes + Nginx Ingress)
      		# Uncomment the following line to set the Origin request to an empty string
      		# proxy_set_header Origin '';
      		chunked_transfer_encoding off;
      		proxy_pass http://minio_console; # This uses the upstream directive definition to load balance
   }
}

3、验证成果,自行创建bucket

image-20250303231738604

二、Picgo配置Minio

1、通过Minio插件进行配置

image-20250303232109582

image-20250303232922032

image-20250303233029451

image-20250303233227914

三、Typora调用Picgo进行图床复制上传

image-20250303233421773