在 Cloudflare 上零成本搭建全能私有图床与文件托管服务
CloudFlare ImgBed:在 Cloudflare 上零成本搭建全能私有图床与文件托管服务
项目介绍
在博客写作、社交媒体分享或日常工作中,我们经常需要上传图片或文件并获取可分享的链接。但传统的图床服务要么收费,要么有存储和流量限制,数据安全和隐私也无法完全掌控。而 CloudFlare ImgBed 的出现完美解决了这一问题——它是一个运行在 Cloudflare 上的开源文件托管解决方案,让你可以在零服务器成本的情况下,拥有一个功能完整、界面优雅的私有图床和文件托管系统。[reference:0][reference:1]
项目地址:https://github.com/luochen-zhang/CloudFlare-ImgBed
开源协议:MIT
核心优势
- 费用:0 元(利用 Cloudflare 免费额度)
- 性能:极速(部署在 Cloudflare 全球边缘节点)
- 灵活:支持 Telegram、Discord、Cloudflare R2、S3、Hugging Face、WebDAV 等多种存储后端[reference:2]
- 数据私有:所有文件和数据都存储在自己的存储渠道中
- 运维成本:零——无需管理服务器
核心功能
CloudFlare ImgBed 不是简单的文件上传器,而是一个全链路文件生命周期管理工具[reference:4],功能覆盖了日常使用的方方面面:
| 功能 | 说明 |
|---|---|
| 多格式文件托管 | 支持图片、视频、动图等绝大多数常见格式 |
| 多种上传方式 | 支持拖拽点击、粘贴上传(支持文件和 URL),批量上传 |
| 后台管理 | 完整的文件管理界面,支持目录组织、批量操作[reference:7] |
| 登录鉴权 | 支持身份认证,保护你的文件不被公开访问 |
| 图片审查 | 自动进行内容审核和成人元素鉴定[reference:10] |
| 多样化链接复制 | 支持 MarkDown、HTML、BBCode 和原始链接四种格式 |
| 随机图 API | 支持随机图片接口,适合用于博客配图等场景[reference:13] |
| 多存储渠道 | 支持 Telegram、Discord、R2、S3、Hugging Face、WebDAV 等[reference:14] |
| RESTful API | 提供完整的 RESTful API,方便集成到其他系统[reference:15] |
| WebDAV 支持 | 支持 WebDAV 协议,可作为网络硬盘使用[reference:16] |
| 自动压缩 | 过大图片在前端自动压缩,提升上传稳定性和加载性能 |
| 响应式设计 | 基于 Vue.js 构建,自动适配 PC 和移动端[reference:18] |
技术栈
CloudFlare ImgBed 采用了现代化的全栈技术方案:
- 平台:Cloudflare Pages / Workers
- 前端框架:Vue.js(响应式设计)[reference:19]
- 后端架构:Cloudflare Workers 无服务器架构[reference:20]
- 存储层:支持 Telegram、Discord、R2、S3 等多种存储后端[reference:21]
- 元数据存储:Cloudflare KV[reference:22]
部署教程
准备工作
开始部署前,你需要准备:
- 一个 Cloudflare 账号
- 一个 GitHub 账号
- Telegram Bot Token 和 Chat ID(推荐,作为默认存储渠道)
- (可选)Cloudflare R2 存储桶(如使用 R2 作为存储后端)
方式一:Cloudflare Pages 可视化部署(推荐)
这是最简单的部署方式,全程在浏览器中完成。
第 1 步:Fork 仓库
登录 GitHub,打开 CloudFlare ImgBed 项目仓库,点击右上角的 Fork 按钮,将仓库复制到你的 GitHub 账号下。
第 2 步:进入 Cloudflare Workers & Pages
登录 Cloudflare 控制台,进入 Workers & Pages 创建页面:
https://dash.cloudflare.com/?to=/:account/workers-and-pages/create
第 3 步:连接 GitHub 并选择仓库
点击 连接到 Git,按提示授权 Cloudflare 访问你的 GitHub 账号,然后选择你刚刚 Fork 的 CloudFlare-ImgBed 仓库。
第 4 步:配置构建设置
⚠️ 注意:从 v2.7.1 版本开始,前端构建输出目录已变更为
frontend-dist。
- 框架预设:选择 Nuxt.js 或 Vue.js(根据项目实际配置)
- 构建命令:
npm install - 输出目录:
/frontend-dist
💡 如使用旧版本,输出目录可能为
/,请根据实际情况调整。
第 5 步:配置环境变量与绑定
CloudFlare ImgBed 需要配置以下内容:
环境变量(推荐在管理后台配置):
💡 新版本所有设置项已迁移至 管理端 → 系统设置 界面,原则上无需再通过环境变量设置。
但以下 Telegram 相关变量建议保留,以保证兼容性:
| 变量名 | 说明 | 是否必需 |
|---|---|---|
TG_BOT_TOKEN |
Telegram Bot Token | 是(默认存储渠道) |
TG_CHAT_ID |
Telegram Channel ID | 是(默认存储渠道) |
KV 数据库绑定(必须配置):
⚠️ KV 数据库为必须配置,如果未配置将无法正常使用。
- 在 Cloudflare 控制台创建 KV 命名空间
- 在 Pages 项目的 设置 → 绑定 中添加 KV 绑定
第 6 步:保存并部署
完成所有配置后,点击 保存并部署,等待部署流程完成。
第 7 步:访问使用
部署成功后,访问你的 Pages 域名,使用默认密码 cfbed 登录即可开始使用[reference:32]。
💡 官方演示站:https://cfbed.1314883.xyz/(访问密码:
cfbed)[reference:34]
方式二:CLI 部署(适合开发者)
如果你习惯使用命令行,也可以通过 Wrangler CLI 部署:
# 克隆仓库
git clone https://github.com/luochen-zhang/CloudFlare-ImgBed.git
cd CloudFlare-ImgBed
# 安装依赖
npm install
# 登录 Cloudflare
npx wrangler login
# 部署
npm run deploy