作为一名经常需要处理图片托管的开发者 / 创作者,找一个稳定、免费、可自定义的图床一直是刚需。市面上不少公共图床存在广告多、容量受限、访问不稳定等问题,而自建图床又担心服务器成本和维护难度。最近我基于 Cloudflare,部署了开源项目 CloudFlare-ImgBed,搭建了专属的图床网站,整个过程踩了一些坑但整体体验极佳,今天就把完整的部署和使用经验分享给大家。

🌟关于CloudFlare-ImgBed

CloudFlare-ImgBed 是一款基于 Cloudflare 生态的开源文件托管解决方案,相比其他图床方案,它的核心优势十分突出:

  • 💰零服务器成本:依托 Cloudflare Pages、R2 等无服务器服务,无需购买云服务器,几乎零成本即可搭建;

  • 🔀多存储渠道支持:兼容 Cloudflare R2、S3、Telegram Channel 等多种存储方式,可根据需求灵活切换;

  • 📋功能全面:覆盖文件上传、管理、读取、删除全生命周期,支持鉴权、目录管理、图片审查、随机图、WebDAV 协议、RESTful API 等特性,满足个人 / 小型团队的各类需求;

  • 🔧部署灵活:支持 Docker 部署和无服务器部署两种方式,技术门槛适配不同水平的使用者;

  • ✏️开源可定制:项目完全开源,可根据自身需求修改代码,自定义界面和功能。

📦部署前的准备工作

在开始部署前,需要先准备好这些基础资源:

  • ☁️Cloudflare 账号:需完成邮箱验证,且拥有可管理的域名;

  • 🐙GitHub 账号:用于 fork 项目仓库、管理代码和触发 Cloudflare Pages 部署;

  • 📱可选配置:若使用 Telegram 作为上传渠道,需提前创建 Telegram Bot 并获取TG_BOT_TOKENTG_CHAT_ID;若使用 R2/S3 存储,需提前创建对应的存储桶并配置密钥。

🤖 点击查看|如何开通Telegram的TG_BOT_TOKENTG_CHAT_ID
  • 创建bot:向@BotFather发送/newbot,按照提示输入bot的备注、用户名等信息。成功创建后获得TG_BOT_TOKEN
  • 创建一个新的频道,进入新建的频道,选择频道管理,将刚才创建的机器人设为频道管理员。
  • @VersaToolsBot转发一条第2步新建频道中的消息,获取TG_CHAT_ID(频道ID)

🚀部署步骤

1. 复刻项目仓库

首先访问 CloudFlare-ImgBed 的 GitHub 仓库,点击右上角 “Fork” 将项目复刻到自己的 GitHub 账号下,方便后续自定义修改和同步更新。

2. 配置 Cloudflare Pages 部署

  1. 登录 Cloudflare 后台,进入 “Pages” 模块,点击 “创建项目”,选择 “连接到 Git”;

  2. 选择刚才 fork 的 CloudFlare-ImgBed 仓库,配置部署参数:

    • 构建命令:填写npm install(v2.0 版本后构建命令调整,务必注意⚠️);

    • 构建输出目录:保持默认即可;

    • 环境变量:若有 Telegram/S3/R2 等渠道配置,可先在此填写(后续也可在系统设置中修改);

  3. 点击 “部署站点”,Cloudflare 会自动拉取代码并构建部署,等待几分钟后即可生成默认的 Pages 域名。

3. 绑定自定义域名

  1. 在 Cloudflare Pages 项目的 “自定义域” 模块,点击 “添加自定义域”,输入绑定的域名

  2. 按照提示在域名解析页面添加 CNAME 记录;

4. 关键配置项调整(v2.0 版本重点)

如果部署的是 v2.0 及以上版本,需注意这些关键设置:

  • 同步 fork 的仓库至最新版本,确保代码无遗漏;

  • 进入 Pages 管理页面的 “设置 -> 构建”,确认构建命令为npm install,若之前部署过旧版本,需手动修改;

  • KV 数据库为必配项:按照项目文档说明创建 Cloudflare KV 命名空间,并绑定到 Pages 项目中;

  • 若使用 Telegram 上传渠道,需保留旧版本的 Telegram 环境变量(保证兼容性),同时在系统设置中补充TG_BOT_TOKENTG_CHAT_ID

5. 部署后验证

部署完成后访问绑定的自定义域名,若能看到图床的上传界面(支持拖拽、粘贴、点击上传),说明基础部署成功。可先上传一张测试图片,检查上传、存储、访问是否正常。

💡实用功能与使用技巧

🔄多存储渠道切换

在图床的 “系统设置 -> 上传渠道” 中,可自由切换 Telegram、Cloudflare R2、S3 等存储渠道:

  • 个人轻量使用:推荐 Telegram Channel(单张≤20MB),无需额外存储费用💸;

  • 大量图片存储:推荐 Cloudflare R2,无出口流量费,访问速度快⚡;

  • 跨平台兼容:S3 渠道适配各类兼容 S3 协议的存储服务。

🛡️安全与权限管理

  • 可在 “安全设置” 中配置 IP 黑白名单,限制特定 IP 的上传 / 访问权限;

  • 支持用户鉴权,避免图床被滥用;

  • 图片审查功能可过滤违规内容,适合公开使用的场景。

🗂️ 高效管理文件

  • 支持按关键字搜索文件,快速定位所需图片;

  • 可创建目录分类存储,整理不同类型的图片;

  • 提供数据备份 / 恢复功能,定期备份避免文件丢失📥。

🔌WebDAV 与 API 调用

开启 WebDAV 协议后,可将图床挂载为本地磁盘,像管理本地文件一样操作图床中的图片;同时项目提供 RESTful API,可集成到自己的博客、小程序等项目中,实现自动化上传 / 调用。

常见问题解决❓

  • 自定义网站图标不生效:该问题在项目历史更新中已修复,需确保 fork 的仓库是最新版本,重新部署后清理浏览器缓存即可🧹;

  • APITokens 保存失效:检查 KV 数据库配置是否正确,确保 Pages 项目已绑定 KV 命名空间,重新生成 Token 并保存;

  • Telegram 渠道上传失败:核对TG_BOT_TOKENTG_CHAT_ID是否正确,确保 Bot 已加入指定 Channel 并拥有发送消息的权限📨;

  • 部署重试仍失败:检查构建命令是否为npm install,删除旧的构建缓存后重新部署。

最后,附上项目地址和我的图床地址,感兴趣的朋友可以体验: