基于 Cloudflare 搭建专属开源图床
作为一名经常需要处理图片托管的开发者 / 创作者,找一个稳定、免费、可自定义的图床一直是刚需。市面上不少公共图床存在广告多、容量受限、访问不稳定等问题,而自建图床又担心服务器成本和维护难度。最近我基于 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_TOKEN和TG_CHAT_ID;若使用 R2/S3 存储,需提前创建对应的存储桶并配置密钥。
🤖 点击查看|如何开通Telegram的TG_BOT_TOKEN和TG_CHAT_ID
- 创建bot:向@BotFather发送
/newbot,按照提示输入bot的备注、用户名等信息。成功创建后获得TG_BOT_TOKEN。 - 创建一个新的频道,进入新建的频道,选择频道管理,将刚才创建的机器人设为频道管理员。
- 向
@VersaToolsBot转发一条第2步新建频道中的消息,获取TG_CHAT_ID(频道ID)
🚀部署步骤
1. 复刻项目仓库
首先访问 CloudFlare-ImgBed 的 GitHub 仓库,点击右上角 “Fork” 将项目复刻到自己的 GitHub 账号下,方便后续自定义修改和同步更新。
2. 配置 Cloudflare Pages 部署
登录 Cloudflare 后台,进入 “Pages” 模块,点击 “创建项目”,选择 “连接到 Git”;
选择刚才 fork 的 CloudFlare-ImgBed 仓库,配置部署参数:
构建命令:填写
npm install(v2.0 版本后构建命令调整,务必注意⚠️);构建输出目录:保持默认即可;
环境变量:若有 Telegram/S3/R2 等渠道配置,可先在此填写(后续也可在系统设置中修改);
点击 “部署站点”,Cloudflare 会自动拉取代码并构建部署,等待几分钟后即可生成默认的 Pages 域名。
3. 绑定自定义域名
在 Cloudflare Pages 项目的 “自定义域” 模块,点击 “添加自定义域”,输入
绑定的域名;按照提示在域名解析页面添加 CNAME 记录;
4. 关键配置项调整(v2.0 版本重点)
如果部署的是 v2.0 及以上版本,需注意这些关键设置:
同步 fork 的仓库至最新版本,确保代码无遗漏;
进入 Pages 管理页面的 “设置 -> 构建”,确认构建命令为
npm install,若之前部署过旧版本,需手动修改;KV 数据库为必配项:按照项目文档说明创建 Cloudflare KV 命名空间,并绑定到 Pages 项目中;
若使用 Telegram 上传渠道,需保留旧版本的 Telegram 环境变量(保证兼容性),同时在系统设置中补充
TG_BOT_TOKEN和TG_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_TOKEN和TG_CHAT_ID是否正确,确保 Bot 已加入指定 Channel 并拥有发送消息的权限📨;部署重试仍失败:检查构建命令是否为
npm install,删除旧的构建缓存后重新部署。
最后,附上项目地址和我的图床地址,感兴趣的朋友可以体验:
项目仓库:
https://github.com/MarSeventh/CloudFlare-ImgBed 拾音图床
认证码:tibtobhttps://img.tibtob.cn/
- 感谢你赐予我前进的力量

