跳到正文
SALIX
返回

使用Cloudflare R2 + PicList零成本搭建个人图床

编辑页面

什么是图床

图床(Image Hosting)是一种专门用于存储图片并提供外链访问的服务。

简单来说,当你将图片上传到图床后,会获得一个公开访问的 URL 地址。无论是在博客、Markdown 文档、Obsidian 笔记、论坛还是社交平台中,都可以通过这个链接直接引用图片,而无需依赖本地文件。

相比直接将图片存放在项目仓库或服务器中,图床具有以下优势:

对于个人博客和知识库而言,图床本质上是一套“图片存储 + 外链访问”的解决方案,能够让内容管理更加灵活和高效。目前较为流行的方案包括 Cloudflare R2GitHub 仓库图床、Telegram 图床以及各类对象存储服务。

为什么需要图床

把图片直接丢进 Git 仓库是很多人起步时的习惯,但用久了会发现:

独立图床的本质就是存储与内容分离。一个图片链接可以同时在博客、Obsidian、论坛、邮件里使用,换什么工具都不影响。

如果你只想选一个免费且长久可用的方案,Cloudflare R2 无疑是目前最成熟的选择。


优势

R2 的关键优势是 出站流量不收费,这是它比 AWS S3 或阿里云 OSS 更适合做图床的地方。


准备工作

image.webp


一、域名接入 Cloudflare

如果你已经将域名托管在 Cloudflare,直接跳过这步。

  1. 在域名注册商后台,把 NS 服务器改成 Cloudflare 分配的地址
  2. 在 Cloudflare 控制台添加站点,等 DNS 生效(几分钟到几小时不等)
  3. 确认域名的代理状态是 橙色云朵(开启 CDN)

image.webp

image.webp

如果后面绑定自定义域名后访问不了,先回 DNS 检查这个域名是不是走了代理(橙色)。走灰色 DNS Only 的话,R2 的公开桶也能访问,但不会走 Cloudflare 边缘缓存。


二、创建 R2 存储桶

进入 Cloudflare 控制台 → R2 → Create bucket。

命名规则:全小写、用连字符,比如 blog-imgfrostsalix-assets

区域选 Auto 就行。

image.webp

image.webp

image.webp

完成后点击创建按钮。

创建后默认是私有的,需要手动打开公开访问:

进入 bucket → Settings → Bucket access → Allow public access。

打开后你会看到一个 pub-xxxx.r2.dev 的地址,先记着,后面测试用。

image.webp


三、绑定自定义域名(推荐)

bucket 页面左侧菜单 → Custom Domains → Connect domain。

输入 img.yourdomain.com(换成你自己的)。

Cloudflare 会自动加一条 CNAME 记录,指向 R2 的公开端点。

生效后,图片就能通过:

https://img.yourdomain.com/图片名

访问。

image.webp


四、生成 API 密钥(给 PicList 用)

R2 → Manage API Tokens → Create API token。

创建后 立刻保存 Secret Access Key,只出现一次。

同时记下:

image.webp

image.webp


五、安装并配置 PicList

下载安装 PicList: https://piclist.cn/ (选对应系统版本) PicList 原生支持 S3

配置 R2 连接

进入 PicList → 图床设置 → Amazon S3(或类似的 S3 选项)。

填下面这些:

字段
AccessKeyID上一步生成的 Access Key ID
SecretAccessKey上一步的 Secret Key
BucketNameblog-img(你的 bucket 名)
FilePath可选,比如 images/(虚拟目录,不填则直接放根目录)
CustomUrlhttps://img.yourdomain.com(你的自定义域名,不要加尾部斜杠)
Endpointhttps://<account_id>.r2.cloudflarestorage.com
Region留空或填 auto(R2 会忽略)
ACLpublic-read(关键)

image.webp

image.webp

保存,并设为默认图床。


六、测试上传

拖一张图片到 PicList 上传区。 如果成功,日志会显示类似:

[上传成功] https://img.yourdomain.com/2026/06/test.png

image.webp

复制链接,在浏览器打开看是否正常显示。

如果返回 AccessDenied


七、Obsidian 自动上传(可选)

推荐插件:Image Auto Upload

  1. Obsidian 社区插件搜索安装
  2. 插件设置 → Uploader 选 **PicGo(app)**(PicList 兼容这个接口)
  3. PicList 里开启 Server:设置 → 设置 Server → 打开开关,端口默认 36677

之后在 Obsidian 里 Ctrl + V 粘贴图片,会自动上传并替换成 Markdown 链接。 image.webp image.webp


八、目录组织建议

一个比较好的习惯是在 Bucket 里按 年/月/ 分目录,比如:

blog-img/
├── 2026/
│   └── 06/
│       └── first-post-cover.png
└── 2026/
    └── 07/
        └── obsidian-note-screenshot.jpg

PicList 可以在 FilePath 里写 {year}/{month}/(它支持变量),或者直接写固定前缀。 配合 PicList 的「时间戳重命名」功能,上传后自动生成唯一文件名,省去命名的麻烦。


总结

R2 的稳定性 + PicList 的本地体验 + 自定义域名的可控性,对于独立博客和知识库来说,远好于那些随时可能关闭的免费图床服务。 如果卡在某一步,通常是 API 密钥的 Endpoint 写错,或者 bucket 没开公开访问,检查这两处能解决 80% 的问题。


编辑页面
分享这篇文章:

评论与讨论


下一篇
当代学生是否缺乏社会经验?