一杯奶茶钱,PicGo + 阿里云 OSS 搭建永久稳定的个人图床

大家好,我是老刘

今天不聊Flutter开发,聊聊程序员常用的markdown工具。

最近这两天是用阿里云oss搞了个图床,发现还是有很多细节问题的,给大家分享一下。

这件事的起因是之前一直用的写文章的在线服务出了点问题,现在想直接在本地Trae或者Obsidian中写文章(markdown格式),但是为了复制到公众号方便,要自己搞一个图床,否则图片就不能直接复制到公众号和其它平台了。

研究了一圈后最终选择了PicGo 配合阿里云 OSS(对象存储)。

为啥选阿里云 OSS?

这目前最稳定、速度最快且性价比极高的图床方案之一。

而且是目前还有3个月的免费试用。

虽然它不是完全免费(需要极少的存储费和流量费,个人使用通常一年不到一杯奶茶钱),但带来的体验升级远超免费图床。

阿里云 OSS 是按量付费的,主要包含两部分:

  1. 存储费 : 存多少收多少,个人博客通常只有几百 MB,一个月0.12元。
  2. 流量费 : 有人访问你的图片才收费 。
    • 00:00 - 08:00 (闲时): 0.25元/GB
    • 08:00 - 24:00 (忙时): 0.50元/GB
  • 注:不同地域价格微调,以上为参考。

为啥不选免费图床?

  • GitHub 的问题: 由于国内网络原因,GitHub 的链接经常超时。这会导致发布平台抓取图片失败,最后不得不一张张手动重新上传图片,效率极低。

  • Gitee 的问题:

    1. PicGo本身默认移除了 Gitee 官方支持(旧版可能有,新版需插件)。
    2. Gitee 为了防止滥用,限制了文件的外链访问,也就是访问量大有可能失败。(这个是听人说的,我自己在Obsidian笔记中用没有发现)
    3. 担心如果被系统判定为图床仓库,可能会导致仓库甚至账号被封禁。

接下来是 从零开始配置 PicGo + 阿里云 OSS 的详细保姆级教程。


配置方案

第一阶段:阿里云 OSS 配置 (只需做一次)

1. 开通 OSS 服务

  1. 登录 www.aliyun.com/
  2. 搜索 "对象存储 OSS",点击进入控制台。
  3. 点击 "开通服务"(如果已开通则跳过)。

2. 创建 Bucket (存储桶)

  1. 在 OSS 控制台左侧菜单,点击 Bucket 列表 -> 创建 Bucket
  2. 填写配置:
    • Bucket 名称 : 起个名字(例如 oss_img)。
    • 地域 (Region) : 选择离你或者你的用户访问地点最近的(例如 华北2 (北京))。记住这个地域,后面要用
    • 存储类型: 标准存储。
    • 读写权限 (ACL) : 公共读 (Public Read)。这一点非常重要,否则图片链接发给别人无法访问。
    • 其他选项默认即可。
  3. 点击确定创建。

3. 获取 AccessKey (密钥)

为了安全,不建议使用主账号的 Key,建议创建一个专门用于 OSS 的子账号。

回到 OSS 控制台的主界面,注意不是Bucket管理界面。

  1. 鼠标悬停在右上角头像,选择 AccessKey 管理 -> 使用RAM用户 AccessKey
  2. 进入 RAM 访问控制台,点击 创建用户
    • 登录名称 : 例如 picgo-user
    • 访问方式 : 勾选 API 访问
  3. 点击确定,立即复制保存 AccessKey IDAccessKey Secret(Secret 只显示这一次,丢了要重新建)。
  4. 给子用户授权
    • 在用户列表页面,找到刚才创建的 picgo-user,点击右侧 添加权限
    • 搜索 OSS,选择 AliyunOSSFullAccess (或者更精细的权限,简单起见选 FullAccess)。
    • 点击确定。

第二阶段:PicGo 客户端/插件配置

我是用的是PicGo 桌面版,因为一方面我的场景是在Trae和Obsidian中都要用,另一方面,vs-picgo插件已经好几年没更新了。

所以如果你经常要在 Typora、Obsidian 等多个软件里用图床,建议配置桌面版。

而且日常使用我都是通过快捷键操作,桌面版和插件的操作复杂度是一样的,桌面版还有更全面的功能。

配置 PicGo 桌面版

  1. 下载并安装 PicGo 桌面版。
  2. 打开 PicGo -> 图床设置 -> 阿里云 OSS
  1. 填写配置:
    • 设定 KeyId : AccessKey ID
    • 设定 KeySecret : AccessKey Secret
    • 设定存储空间名 : Bucket 名称 (例如 oss_img)
    • 确认存储区域 : 也就是 Area,例如 oss-cn-beijing
    • 指定存储路径 : img/
  2. 点击 确定设为默认图床

第三阶段:验证与使用

  1. 测试上传:

    • 拖拽一张图片到 PicGo 主窗口。
    • 或者随便截张图,然后按 Ctrl+Shift+P 自动上传 看到上传成功的提示后生成的链接已经自动复制到剪贴板。
  2. 检查链接:

    • 如果你看到生成的链接类似 https://oss_img.oss-cn-beijing.aliyuncs.com/img/xxx.png,且能在浏览器中正常打开图片,说明配置成功!

其它事项

本地冗余还是同城冗余

对于 个人图床 (博客、笔记图片)这种场景,答案非常明确,请选择本地冗余 (LRS)

  1. 更便宜 (核心理由)

    • 本地冗余 (LRS): 价格较低(标准存储约 0.12元/GB/月)。
    • 同城冗余 (ZRS) : 价格较高(标准存储约 0.15元/GB/月),比本地冗余贵约 25%
    • 对于个人用户,没必要多花这份钱,特别是存储量大的时候差距还是比较大的。
  2. 可靠性已经足够高

    • 本地冗余 的意思是:你的数据会存在阿里云同一个机房内的不同设备上。除非这整个机房发生灾难性毁灭(如大地震彻底摧毁机房),否则数据不会丢。数据可靠性高达 99.999999999% (11个9)。
    • 同城冗余 的意思是:你的数据会存在同一个城市的三个不同机房里。只有当这个城市的三个机房同时全挂了,数据才会丢。数据可靠性高达 12个9。

对于个人博客图片,本地冗余 (11个9) 的安全性已经远远溢出了。即使真的遇到极小概率的机房故障,阿里云通常也有修复手段。为了那几十块钱的图片去买"抗核弹级"的同城冗余,属于过度消费。

如果你实在不放心,就写个脚本定期把图片备份到其它平台即可。

防坑指南

特别注意:不要把 AccessKey 泄露给别人

阿里云 OSS 是按量付费的,主要包含两部分:

  1. 存储费: 存多少收多少,个人博客通常只有几百 MB,这个很少。
  2. 流量费: 有人访问你的图片才收费。

如果你的图片是自己使用,比如Obsidian笔记,或者发布到公众号文章,那么问题不大。

比如老刘自己的Obsidian笔记只有几台电脑和手机同步使用,用量很小。

如果发布到公众号、csdn等平台也问题不大,因为各个平台都会抓取你的图片,发布的文章中使用的是平台的图片链接,而不是你自己的图片链接。

但是如果你是自建的个人博客,要注意一下访问量。

  • 如果你的博客访问量非常巨大(每天几万),流量费会是一笔开支。对于普通个人博客,一年通常也就几十块钱。
  • 可以在阿里云后台设置 "消费预警",例如设置消费超过 10 元发短信通知,防止被恶意刷流量。

最后再说两句

折腾这么一圈,其实就为了一个目的:让写作回归写作本身

我们花时间去配置图床、优化流程,不是为了成为工具大师,而是为了在灵感迸发的那一刻,不会因为图片上传失败这种破事而打断思路。

工具最好的状态,就是当你用它的时候,你根本感觉不到它的存在。

配置好 PicGo + 阿里云 OSS,把琐碎的技术细节丢给自动化工具,剩下的,就是尽情释放你的创造力了。

毕竟,内容,才是一切的王道

如果看到这里的同学对客户端或者Flutter开发感兴趣,欢迎联系老刘,我们互相学习。

私信免费领老刘整理的《Flutter开发手册》,覆盖90%应用开发场景。

可以作为Flutter学习的知识地图。

------ laoliu_dev

相关推荐
奋斗的小青年!!5 小时前
OpenHarmony Flutter 拖拽排序组件性能优化与跨平台适配指南
flutter·harmonyos·鸿蒙
小雨下雨的雨7 小时前
Flutter 框架跨平台鸿蒙开发 —— Stack 控件之三维层叠艺术
flutter·华为·harmonyos
行者967 小时前
OpenHarmony平台Flutter手风琴菜单组件的跨平台适配实践
flutter·harmonyos·鸿蒙
小雨下雨的雨9 小时前
Flutter 框架跨平台鸿蒙开发 —— Flex 控件之响应式弹性布局
flutter·ui·华为·harmonyos·鸿蒙系统
cn_mengbei9 小时前
Flutter for OpenHarmony 实战:CheckboxListTile 复选框列表项详解
flutter
cn_mengbei9 小时前
Flutter for OpenHarmony 实战:Switch 开关按钮详解
flutter
奋斗的小青年!!9 小时前
OpenHarmony Flutter实战:打造高性能订单确认流程步骤条
flutter·harmonyos·鸿蒙
Coder_Boy_10 小时前
Flutter基础介绍-跨平台移动应用开发框架
spring boot·flutter
cn_mengbei10 小时前
Flutter for OpenHarmony 实战:Slider 滑块控件详解
flutter