在使用 MinIO + PicList 图床 方案之前,我也自建过兰空图床、EasyImages2、Chevereto,不过它们更像是公开给别人临时使用的,而不是自己用的,用着不直观。
MinIO + PicList 方案,思路很简单:MinIO 负责保存图片、开放下载网址,PicList 用于上传图片和构造网址。
介绍 MinIO 如何作为图床
MinIO 属于对象存储,就是一个网络目录,可以上传文件、下载文件,可以通过网址访问文件。
- 如果我们上传图片到 MinIO、并构造正确的网址,就能在网页上显示这张图片了——图床🎉
- 如果上传视频,那就能直接在网页上播放视频(前提是浏览器支持播放的格式,比如 mp4)——视频床🎉
- 如果上传音频,就是音频床
- 如果上传普通文件,可以当作网盘用来分享文件
安装 MinIO: 自建 对象存储 – 构建高效可靠的数据存储系统 – 技焉洲 (vfly2.com)
手动上传并构造网址是完全可以的,上传的文件的下载链接格式为(填入 ip 或域名、桶名 vfly2 和文件名 file.name,注意端口是 9000)
http://ip:9000/vfly2/file.name
比如,在 MinIO 后台创建了一个 imagesbed 桶,在里面上传了一张名为 vfly2technique.png 的图片,那么这张图片的网络地址就是: http://imgbed.ahfei.blog:9000/imagesbed/vfly2technique.png ,用浏览器访问这个网址就能看到图片:
在写 md 格式的文章时,想插入这个图片,使用指定格式就可以了。
![](http://imgbed.ahfei.blog:9000/imagesbed/vfly2technique.png)
如果借助工具,把上传和构造网址的工作自动化,就更方便了。开源的 PicList 就是专门做这个的。
反代
需要说明一点,有的网站不支持显示非 HTTPS 的图片,上面就是一个反例。这时可以用 Nginx 进行反代。
我使用 ib.ahfei.blog 反向代理 imgbed.ahfei.blog:9000。这样,访问 https://ib.ahfei.blog 就是在访问 http://imgbed.ahfei.blog:9000 ,这个 https://ib.ahfei.blog/imagesbed/vfly2technique.png 同上面的网址。
下面一律使用 ib.ahfei.blog
设置 Bucket 读写权限
修改 Access Policy 为 Custom,具体是(根据注释自定义桶名)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::vfly2imagesbed" // 修改 vfly2imagesbed 为你的桶名,并删除这个注释
]
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Action": [
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::vfly2imagesbed/*" // 修改 vfly2imagesbed 为你的桶名,并删除这个注释
]
}
]
}
这样的权限下,其他人只能读取桶中的文件列表和获取其中的文件,上传图片后,可以作为图床使用。
PicList
PicList 是一款高效的云存储和图床平台管理工具,在 PicGo 的基础上经过深度的二次开发。支持非常丰富的存储方式:WebDAV、S3 API 兼容平台、腾讯COS V5、Github 等,还有插件功能,通过插件可以支持 MinIO。
GitHub: Kuingsmile/PicList: An image upload and manage tool, base on PicGo (github.com)
另外,同作者还开发了安卓版的: Kuingsmile/PicHoro: 一款手机端云存储平台/图床管理和文件上传/下载工具,支持直接管理Webdav,Alist,SSH/SFTP,云服务器,兼容S3 API的平台,腾讯COS,阿里OSS,七牛云,又拍云,兰空图床,Imgur,SM.MS和github AhFei 没有使用过。
安装 PicList
下载地址: https://github.com/Kuingsmile/PicList/releases ,找到需要的版本下载安装。
如果访问 GitHub 不畅,也可以到 UpdateFetch Web (vfly2.com) 下载,这是 AhFei 编写并开源的一个自动下载工具。
MacOS 用户现在可以使用 Homebrew 来安装 PicList 了,只需要执行以下命令即可:
brew install piclist --cask
卸载命令:
brew uninstall piclist
设置 PicList 使用 MinIO 当图床
- 在【插件】界面,搜索
MinIO
,安装作者是 herbertzz 的那个插件。其 GitHub 地址是 https://github.com/Herbertzz/picgo-plugin-minio 。(可能需要先安装 nodejs ,并且还有重启电脑才能生效) - 在【图床】,选择【MinIO图床】,编辑配置,需要说明的有
- endPoint:服务端的域名或者 IP 地址,ib.ahfei.blog
- port: 443
- userSSL:是否开启 SSL,选择开启
- accessKey:安装 Minio Server 时设置的用户名,vfly2
- secretKey:之前设置的密码,pass_vfly2_word
- bucket:创建的桶名称,imagesbed
- 保存配置
- 在【上传】,选择图床,然后随便上传一张图片试试是否成功(实际体验,如果与服务端网络不太好,超过 1 MB 就很容易失败)
Access key 和 secretKey 就是登录网站用的用户名和密码,完全不知道后台创建的 key 该怎么用
配合 Obsidian 使用
简单说明作用: 在拖入图片到 Obsidian 时,自动上传到图床
- Obsidian 安装插件:Image Auto Upload Plugin
- 进入插件设置页面,
- 修改默认上传器为
PicGo(app)
- 设置
PicGo server 上传接口
为http://127.0.0.1:36677/upload
- 该插件还额外支持通过 PicList 进行云端删除,在删除接口填入
http://127.0.0.1:36677/delete
- 其他设置按需选择
- 修改默认上传器为
- 拖入一张图片测试
效果
PicList 其他有用的配置
可以浏览一遍【设置】界面。
在【上传设置】中
- 可以选择把不用的图床隐藏起来
- 另外【高级重命名】我一直在用,我的重命名格式为
{filename}-{y}-{m}-{s}
,也就是在原本的文件名后,加上 -年-月-秒,如PicList-Obsidian-24-03-01.png
这样不用担心重名的问题。 - 【自定义链接格式】,我用的是
<video controls> <source src="$url"> not support video tag. </video>
,然后在首页上传前,链接格式选择 Custom,出来的网址可以直接播放视频
视频床
上一节也提到了,其实就是把视频这个文件的网址,按照一定格式构造。$url
替换为真实网址:
<video controls> <source src="$url"> not support video tag. </video>
比如在 Obsidian,是支持 HTML 标签的,因此,放入这样的段落,就是在插入视频
<video controls> <source src="https://ib.ahfei.blog/videobed/lightningrod-vid_wg_720p.mp4"> not support video tag. </video>
音频床
可以用于 Anki 的自制卡片,格式为
<audio controls> <source src="$url" type="audio/mpeg"> not support audio tag </audio>
比如
<audio controls> <source src="https://ib.ahfei.blog/audiobed/indulge-23-09-54.mp3" type="audio/mpeg"> not support audio tag </audio>
分享普通文件
学会构造网址就行。格式为
http://ip:9000/bucket_name/file.name
然后就能直接下载了。这里自荐一下 AhFei 创建的开源自动下载工具: 定期检查和下载软件的最新版 UpdateFetch 的安装步骤 – 技焉洲 (vfly2.com) ,它利用 MinIO 保存文件,方便分享。
原文链接: https://yanh.tech/2024/03/self-hosted-image-hosting-service/
版权声明:本博客所有文章除特別声明外,均为 AhFei 原创,采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 技焉洲 (yanh.tech) 。
保持更新 ٩(•̤̀ᵕ•̤́๑)ᵒᵏᵎᵎᵎᵎ 清晰恒益的实用技能,欢迎使用 RSS 订阅,或在支持 ActivityPub 的平台关注 @vfly2tech@yanh.tech
接收新文章的推送,如果能留言互动就更好了。
可在 Telegram 群组 https://t.me/vfly2 交流依文章步骤遇到的问题。
评论