1069 字
5 分钟
PicGo + GitHub + Cloudflare 搭建图床
2025-12-05
2025-12-09
- 次浏览

使用 PicGo + GitHub + Cloudflare 搭建稳定图床#

搭建图床方案:

  • PicGo v2.4.0
  • GitHub 图床仓库(Public)
  • Cloudflare CDN(通过 Cloudflare Pages Functions 实现加速)
搭建图床的作用

博客 Markdown 直接插入 CDN 外链图片,不用每次手动上传、管理本地文件。


一、使用到的技术栈#

组件版本用途
PicGov2.4.0本地上传图片到 GitHub
GitHub2025 平台 / Token Classic API存储图片文件
Cloudflare Pages免费版提供静态代理并加速 GitHub 图片

二、图床整体架构说明#

使用 GitHub 存图片,PicGo 上传,Cloudflare 跑 CDN 加速。

图表加载中...

最终 Markdown 图片链接示例:

![示例图片](https://你的域名/gh/<用户名>/<仓库名>/<分支名>/<图片路径>/<文件名>)

三、准备 GitHub 仓库(图床后台)#

登录 GitHub

新建一个公开仓库(必须 Public 才能被 CDN 加速)

设置:
名称:myImage
描述:用于博客图床的静态资源仓库
记录下:
<用户名>
<仓库名>
<分支名>
✔ 示例
用户名:xiaowenmimimi
仓库名:myImage
分支名:main


四、生成 GitHub Fine-grained Token#

1. 打开 Token 创建入口#

  • GitHub → 右上角头像 → Settings
  • 左侧菜单 → Developer settings
  • 选择:Personal access tokens → Fine-grained tokens
  • 点击右侧按钮:Generate new token

2. 配置 Token 基本信息#

  • Token name:PicGoUploadToken
  • Expiration:建议设置较长时间(安全起见可设置 90 天或 1 年)。
  • Resource owner:选择你的 GitHub 账号
  • Repository access:选择 Only select repositories,并勾选你的图床仓库(例如 myImage

3. 配置权限#

关键

找到 Permissions 区域,在 Repository permissions 中 只启用两个权限

权限项选择
ContentsRead and write
MetadataRead-only(默认即可)

PicGo 上传图片只需要写入仓库内容,不需要其他敏感权限。

4. 生成 Token#

滚动到页面底部 → 点击 Generate token

GitHub 会生成一段以 github_pat_ 开头的 Token(生成后复制,只显示一次),例如:

github_pat_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


五、安装 PicGo 并配置 GitHub 图床#

PicGo 下载(官方 GitHub Releases) 使用版本:PicGo v2.4.0

打开 PicGo → 左侧“图床设置” → “GitHub”

填写以下内容:

字段内容
图床配置名填写内容
仓库名<用户名>/<仓库名> 例如 xiaowenmimimi/myImage
分支名main
Token你的 GitHub Token
存储路径img/blog/(可自定义)
自定义域名https://myimage-9r1.pages.dev/gh/xiaowenmimimi/myImage/main (Cloudflare CDN 生成的地址)

六、配置 Cloudflare CDN 加速#

使用 Cloudflare Pages Functions 做 GitHub 文件的代理加速。Pages 内置的 Serverless 函数,可以写反向代理、重写请求,跑在边缘节点上。免费额度每天 100,000 次请求,对于个人图床够用了。

Cloudflare Pages 官方文档

1. 新建 Cloudflare Pages 项目#

  • 在 Cloudflare 控制台:
  • 左侧菜单:Workers 和 Pages
  • 创建应用程序

  • 选择 Connect GitHub

  • 选择底部的 Get started

  • 导入现有 GitHub 仓库
  • 绑定一个仓库(我这里绑定的是刚刚新建在 GitHub 的 myImage 仓库)

  • 维持默认配置后,保存并部署

2. 创建静态代理 Functions#

GitHub 仓库文件配置

在绑定的仓库根目录下创建/functions/gh文件夹,文件夹下创建文件[[path]].js,填入以下内容:

/functions/gh/[[path]].js
export async function onRequest(context) {
// [[path]] 对应的参数名就是 path,这里会是一个数组
const segments = context.params.path || [];
const path = segments.join("/");
// 组装成 GitHub Raw 地址
const url = `https://raw.githubusercontent.com/${path}`;
const res = await fetch(url, {
headers: {
"User-Agent": "Mozilla/5.0"
}
});
return new Response(res.body, {
headers: {
"Content-Type": res.headers.get("Content-Type") || "application/octet-stream",
"Cache-Control": "public, max-age=31536000"
},
status: res.status
});
}

Cloudflare 会自动缓存资源。

3. 部署 Cloudflare Pages#

部署完成后 Cloudflare 会生成默认域名,例如:

https://your-project.pages.dev

配置使用自定义域名(可选)

例如:

https://img.xhwen.cn

添加一条 CNAME 解析到 Cloudflare Pages 就行。

4. 最终 CDN URL 格式#

将图片从 GitHub 映射到 Cloudflare:

https://myimage-9r1.pages.dev/gh/<用户名>/<仓库名>/<分支名>/<路径>/<图片文件名>

https://myimage-9r1.pages.dev/gh/xiaowenmimimi/myImage/main/img/blog/sample_pictures.jpg
PicGo 配置修改

在 PicGo 的 GitHub 图床设置中,将 自定义域名 修改为:

https://myimage-9r1.pages.dev/gh/<用户名>/<仓库名>/<分支名>

例如:

https://img.xhwen.cn/gh/xiaowenmimimi/myImage/main

PicGo 上传后生成的 URL 自动使用 Cloudflare CDN 链接。


七、测试上传图片#

  • 拖一张图片进 PicGo

  • 上传成功后,PicGo 会返回 CDN 链接

  • 在浏览器打开检查是否正常显示


Astro 博客中的示例截图#

这里是写作过程中的一个界面:

示例图片

Fuwari 自带响应式图片布局,不用额外调。

PicGo + GitHub + Cloudflare 搭建图床
https://blog.xhwen.cn/posts/blog/github-image-hosting-with-picgo/
作者
朗姆提子冰淇淋
发布于
2025-12-05
许可协议
CC BY-NC-SA 4.0

评论

文字让我们短暂相逢。

评论加载中…