简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床

2024-04-10 19:09:11 2点赞 26收藏 1评论

本文首发于只抄博客,欢迎点击原文链接了解更多内容。

前言

MinIO 是一个对象存储系统,它将数据以对象的形式进行存储。这些对象可以是各种类型的数据,例如文件、图片、视频等。我们可以在 VPS 服务器或者自己的 Nas 上进行部署,本文主要用它来存储图片作为图床来使用,我们可以直接在 MinIO 后台管理界面直接上传图片,通过 https://domain.com/bucket/image.png 这种形式访问图片。

PicList 是一款高效的云存储和图床平台管理工具,通过 PicList 上传图片时,可以自动对图片进行预处理,例如压缩图片、格式转换、添加水印等,同时在上传成功后,还会自动拼接 URL 地址。

Typora 是一款 Markdown 编辑器和阅读器,通过图像设置将上传服务选择为 PicList,即可实现图片拖入 Typora 后,自动调用 PicList 进行图片的预处理,然后将其上传至 MinIO 中,实现图片的无感上传。

MinIO

安装 MinIO

  1. MinIO 的安装十分简单,只需要使用官方一键脚本即可安装

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20240330094156.0.0_amd64.deb -O minio.deb sudo dpkg -i minio.deb

除此之外,也可以直接下载二进制文件,并添加运行权限

wget https://dl.min.io/server/minio/release/linux-amd64/minio chmod +x minio sudo mv minio /usr/local/bin/

  1. (可选) 创建 systemd 文件 vim /usr/lib/systemd/system/minio.service ,对于使用一键脚本安装的用户,systemd 文件脚本会自动进行创建,只需按照自己的需求编辑即可

[Unit] Description=MinIO Documentation=https://min.io/docs/minio/linux/index.html Wants=network-online.target After=network-online.target AssertFileIsExecutable=/usr/local/bin/minio ​ [Service] WorkingDirectory=/usr/local ​ User=root Group=root ProtectProc=invisible ​ EnvironmentFile=-/etc/default/minio ExecStartPre=/bin/bash -c "if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default/minio"; exit 1; fi" ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES ​ # MinIO RELEASE.2023-05-04T21-44-30Z adds support for Type=notify (https://www.freedesktop.org/software/systemd/man/systemd.service.html#Type=) # This may improve systemctl setups where other services use `After=minio.server` # Uncomment the line to enable the functionality # Type=notify ​ # Let systemd restart this service always Restart=always ​ # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 ​ # Specifies the maximum number of threads this process can create TasksMax=infinity ​ # Disable timeout logic and wait until process is stopped TimeoutStopSec=infinity SendSIGKILL=no ​ [Install] WantedBy=multi-user.target ​ # Built for ${project.name}-${project.version} (${project.name})

  1. 创建环境变量文件 vim /etc/default/minio,其中主要配置 MinIO 的用户名、密码、存储卷、控制面板端口等

# MINIO_ROOT_USER and MINIO_ROOT_PASSWORD sets the root account for the MinIO server. # This user has unrestricted permissions to perform S3 and administrative API operations on any resource in the deployment. # Omit to use the default values 'minioadmin:minioadmin'. # MinIO recommends setting non-default values as a best practice, regardless of environment ​ MINIO_ROOT_USER=myminioadmin MINIO_ROOT_PASSWORD=minio-secret-key-change-me ​ # MINIO_VOLUMES sets the storage volume or path to use for the MinIO server. ​ MINIO_VOLUMES="/mnt/data" ​ # MINIO_OPTS sets any additional commandline options to pass to the MinIO server. # For example, `--console-address :9001` sets the MinIO Console listen port MINIO_OPTS="--console-address :9001" ​ # MINIO_SERVER_URL sets the hostname of the local machine for use with the MinIO Server # MinIO assumes your network control plane can correctly resolve this hostname to the local machine ​ # Uncomment the following line and replace the value with the correct hostname for the local machine and port for the MinIO server (9000 by default). ​ #MINIO_SERVER_URL="http://minio.example.net:9000"

  1. 启动 MinIO

systemctl start minio.service systemctl enable minio.service

创建 Bucket

  1. 通过 http://ip:9001 访问 MinIO 的控制面板,使用环境变量中设置的用户名与密码进行登录

  2. 点击左侧的 Buckets,再点击右上角的 Create Bucket 创建一个存储桶,用于存储上传的图片

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床
  1. 给存储桶进行命名,桶名会在访问时,拼接在 URL 中

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床

权限设置

  1. 创建完成后,桶中的文件还无法进行访问,需要对其设置访问权限,进入桶的设置后,依次点击 Anonymous -> Add Access Rule 添加访问规则

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床
  1. 对于公开访问的图床,我们可以将访问权限设置为 readonly

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床
  1. 返回桶设置的首页,发现 Access Policy 处变为 custom,说明设置成功了

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床
  1. 对于非公开访问的图片,例如仅限自己的网站访问,则可以点击 custom,直接编辑访问规则,填入以下规则,并将 Resource 与 aws:Referer 修改为自己的桶名与网站域名

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": ["*"] }, "Action": "s3:GetObject", "Resource": ["arn:aws:s3:::test/*"], "Condition": { "StringLike": { "aws:Referer": ["https://zhichao.org/*"] } } } ] }

PicList

PicList 可以直接在官方文档进行下载,打开 PicList 后,在左边图床中选择 AWS S3 进行编辑,完成以下设置后,点击保存即可

  • AccessKeyId - MinIO 用户名

  • SecretAccessKey - MinIO 密码

  • Bucket - 桶名

  • 设定自定义节点 - API 地址 (例如 http://ip:9000)

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床

除此之外,来到上传页面,点击上方的图片处理,可以对上传的图片进行压缩、格式转换等操作

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床

Typora

Typora 1.6.0 以上版本直接参照下图,选择 PicList 路径即可,1.6.0 以下版本则需参照 PicList 文档进行设置

完成以上步骤后,在 Typora 中写作时,上传图片只需要将图片拖入对应位置,即可自动完成图片的处理、上传。

简化 Markdown 写作流程 | 使用 MinIO 与 PicList 自建对象存储与图床


展开 收起
1评论

  • 精彩
  • 最新
  • 你的写作内容太有趣了!用 MinIO 与 PicList 自建对象存储与图床,简化 Markdown 写作流程,这种思路真的太奇妙了。祝你写作愉快,期待你更多的作品!

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
26
扫一下,分享更方便,购买更轻松