CloudFlare-ImgBed

CloudFlare-ImgBed
TownMarshal基于 CloudFlare 的开源文件托管解决方案(图床/文件床/网盘)
github地址:
1 | https://github.com/MarSeventh/CloudFlare-ImgBed |
参考文档:
1 | https://cfbed.sanyue.de/deployment/prerequisites.html |
前期准备
1. 渠道说明
项目支持使用不同的存储渠道作为后端存储,每种渠道有不同的优缺点和限制,您可以根据自己的需求选择合适的渠道。
渠道类型 优点 限制
Telegram Bot 完全免费、无限容量 大于20MB文件需分片存储
Cloudflare R2 无文件大小限制、企业级性能 超出10G免费额度后收费,需要绑定支付方式
S3 兼容存储 选择多样、价格灵活 根据服务商定价
2. Telegram Bot 渠道
2.1 获取 TG_BOT_TOKEN
在 Telegram 中搜索 @BotFather
发送 /newbot 命令
按提示输入 Bot 名称和用户名
获得 Bot Token(格式:123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
2.2 获取 TG_CHAT_ID
创建一个新的 Telegram 频道(Channel)
将创建的 Bot 添加为频道管理员
给予 Bot 消息管理的权限
在频道中发送一条测试消息
向 @VersaToolsBot 转发这条消息
获得频道 ID(示例:-1001234567890)
注意
频道 ID 前面有 - 号时需要保留
Bot 必须具有频道管理员权限
3. Cloudflare R2 渠道
3.1 创建 R2 存储桶
登录 Cloudflare Dashboard
选择 "R2 存储对象"
点击 "创建存储桶"
输入存储桶名称(全局唯一)
选择存储区域
点击 "创建存储桶"
3.2 配置公开访问(可选)
如果需要启用图像审查功能:
进入创建的存储桶
选择 "Settings" → "Public access"
启用 "Allow Access" 或配置自定义域名
记录完整公开访问链接(如 https://your-bucket.r2.cloudflarestorage.com/)
4. S3 兼容存储
4.1 支持的服务商
服务商 地区 特点
Amazon S3 全球 最原始的 S3 服务
七牛云 中国 国内访问速度快
又拍云 中国 CDN 加速
Backblaze B2 美国 价格便宜
Cloudflare R2 全球 与 Cloudflare 生态集成
MinIO 全球 开源 S3 兼容存储
提示
以上为经过测试的 S3 兼容存储服务商,其他 S3 兼容服务商未经测试,有概率出现兼容问题。
4.2 需要准备的信息
S3_ACCESS_KEY_ID:访问密钥 ID
S3_SECRET_ACCESS_KEY:私有访问密钥
S3_BUCKET_NAME:存储桶名称
S3_ENDPOINT:服务端点 URL
S3_REGION:存储区域(可选)
🚀 下一步
完成准备工作后,您可以选择合适的部署方式:
Cloudflare 部署
Docker 部署
手动部署
这里采用Cloudflare 部署
Cloudflare Pages 部署
Cloudflare Pages 是推荐的部署方式,提供免费托管、全球 CDN 加速和无需服务器维护的优势。
📂 第一步:Fork 项目
- 访问 CloudFlare ImgBed 项目
- 点击右上角的 “Fork” 按钮
- 选择您的 GitHub 账户
- 确认 Fork 完成
🏗️ 第二步:创建 Pages 项目
2.1 访问 Cloudflare Dashboard
登录 Cloudflare Dashboard
选择左侧菜单的 "Workers & Pages"
点击 "创建应用程序"
选择 "Pages" 选项卡
点击 "连接到 Git"
2.2 连接 GitHub 仓库
如果首次使用,需要授权 Cloudflare 访问 GitHub
选择您 Fork 的 CloudFlare-ImgBed 仓库
点击 "开始设置"
2.3 配置项目设置
配置项 值 说明
项目名称 cloudflare-imgbed(或自定义) 项目标识符
生产分支 main 生产环境分支
构建命令 npm install 重要:v2.0 新构建命令
构建输出目录 / 保持默认
重要提醒!
v2.0 版本的构建命令已变更为 npm install,请确保使用正确的构建命令。
2.4 部署项目
点击 "保存并部署"
等待首次部署完成(约 2-3 分钟)
🗄️ 第三步:配置数据库
数据库用于存储文件元数据,是必需的组件,可选数据库为 KV 数据库和 D1 数据库。两者对比如下表所示,根据自己使用场景从其中选择一种配置即可。
特点 KV 数据库 D1 数据库
读写性能 高 较低
免费额度 少 多
大文件上传 支持 不支持
3.1 KV 数据库配置
创建 KV 命名空间
在 Cloudflare Dashboard 中选择 "存储和数据库"
点击 "KV"
点击 "创建命名空间"
输入命名空间名称:img_url(建议使用此名称)
点击 "添加"
绑定 KV 到项目
返回您的 Pages 项目
选择 "设置" → "绑定"
点击 "添加" → "KV 命名空间"
填写绑定信息:
变量名称:img_url(必须是这个名称)
KV 命名空间:选择刚创建的命名空间
点击 "保存"
注意
绑定 KV 时,变量名称必须为 img_url,这是项目预设的变量名,填错会出现无法进入管理界面等情况。
3.2 D1 数据库配置
D1 数据库配置
在 Cloudflare Dashboard 中选择 "存储和数据库"
点击 "D1 SQL 数据库"
点击 "创建数据库"
输入数据库名称:img_d1(建议使用此名称)
点击 "创建"
初始化 D1 数据库
创建完成后,点击进入数据库详情页
选择 "控制台" 选项卡
在 SQL 输入框中逐段粘贴并执行初始化语句(见项目仓库)
点击 "执行"
绑定 D1 到项目
返回您的 Pages 项目
选择 "设置" → "绑定"
点击 "添加" → "D1 数据库"
填写绑定信息:
变量名称:img_d1(必须是这个名称)
D1 数据库:选择刚创建的数据库
点击 "保存"
🔄 第四步:重新部署
绑定数据库后需要重新部署以生效:
进入项目的 "部署" 页面
找到最新的部署记录
点击右侧的 "..." 菜单
选择 "重试部署"
等待部署完成
🚀 下一步
至此已经完成项目在 Cloudflare Pages 的部署,但是尚未添加存储渠道,添加存储渠道和进行其他设置的方式请参考 配置说明。







