Lazy loaded image
部署教程
CloudFlare ImgBed部署教程
Words 4799Read Time 12 min
2026-2-13
2026-2-17
type
Post
status
Published
date
Feb 13, 2026
slug
imgbed2
summary
CloudFlare ImgBed 提供了丰富的功能特性,满足不同用户的需求
tags
cloudflare
category
部署教程
icon
password
网址

前期准备

在开始部署 CloudFlare ImgBed 之前,您需要根据要使用的存储渠道进行相应的准备工作。

1. 渠道说明

项目支持使用不同的存储渠道作为后端存储,每种渠道有不同的优缺点和限制,您可以根据自己的需求选择合适的渠道。
渠道类型
优点
限制
Telegram Bot
完全免费、无限容量
大于20MB文件需分片存储
Cloudflare R2
无文件大小限制、企业级性能
超出10G免费额度后收费,需要绑定支付方式
S3 兼容存储
选择多样、价格灵活
根据服务商定价
Discord
完全免费、简单易用
大于10MB文件需分片存储
HuggingFace
完全免费、支持大文件直传
需要 HuggingFace 账号

2. Telegram Bot 渠道

2.1 获取 TG_BOT_TOKEN

  • 发送 /newbot 命令
  • 按提示输入 Bot 名称和用户名
  • 获得 Bot Token(格式:123456789:ABCdefGHIjklMNOpqrsTUVwxyz

2.2 获取 TG_CHAT_ID

  • 创建一个新的 Telegram 频道(Channel)
  • 将创建的 Bot 添加为频道管理员
  • 给予 Bot 消息管理的权限
  • 在频道中发送一条测试消息
  • 获得频道 ID(示例:1001234567890
注意
  • 频道 ID 前面有  号时需要保留
  • Bot 必须具有频道管理员权限

3. Cloudflare R2 渠道

3.1 创建 R2 存储桶

  • 选择 "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:存储区域(可选)

5. Discord 渠道(由 @林酱 佬贡献)

5.1 创建 Discord Bot

  • 点击 "New Application" 创建应用
  • 进入 "Bot" 页面,点击 "Add Bot"
  • 复制 Bot Token

5.2 获取 Channel ID

  • 在 Discord 客户端中启用开发者模式(用户设置 → 高级 → 开发者模式)
  • 创建一个用于存储文件的频道
  • 右键点击频道,选择 "复制频道 ID"
  • 将 Bot 添加到服务器并授予发送文件的权限
注意
  • 普通用户文件大小限制为 10MB
  • Nitro 用户文件大小限制为 25MB
  • 需要确保 Bot 有发送消息和附件的权限
  • Discord 官方有接口频率限制,不建议将此渠道用作大规模并发场景

6. HuggingFace 渠道(由 @林酱 佬贡献)

6.1 创建 HuggingFace 账号

6.2 获取 Access Token

  • 点击 "New token" 创建新 Token
  • 选择 "Write" 权限
  • 复制生成的 Token
提示
HuggingFace 渠道支持大文件直传,推荐用于上传超过 20MB 的文件。

🚀 下一步

Cloudflare Pages 部署

Cloudflare Pages 是推荐的部署方式,提供免费托管、全球 CDN 加速和无需服务器维护的优势。

📂 第一步:Fork 项目

  1. 访问 CloudFlare ImgBed 项目
  1. 点击右上角的 "Fork" 按钮
  1. 选择您的 GitHub 账户
  1. 确认 Fork 完成

🏗️ 第二步:创建 Pages 项目

2.1 访问 Cloudflare Dashboard

  1. 登录 Cloudflare Dashboard
  1. 选择左侧菜单的 "计算和AI" -> "Workers & Pages"
  1. 点击 "创建应用程序"
  1. 在最下方 Looking to deploy Pages? 选择 "Get started"
  1. 在 "导入现有 Git 存储库" 处点击 "开始使用"
创建 Pages 项目
创建 Pages 项目

2.2 连接 GitHub 仓库

  1. 如果首次使用,需要授权 Cloudflare 访问 GitHub
  1. 选择您 Fork 的 CloudFlare-ImgBed 仓库
  1. 点击 "开始设置"

2.3 配置项目设置

配置项
说明
项目名称
cloudflare-imgbed(或自定义)
项目标识符
生产分支
main
生产环境分支
构建命令
npm install
重要:v2.0 新构建命令
构建输出目录
/
保持默认
配置项目设置
重要提醒
v2.0 版本的构建命令已变更为 npm install,请确保使用正确的构建命令。

2.4 部署项目

  1. 点击 "保存并部署"
  1. 等待首次部署完成(约 2-3 分钟)

🗄️ 第三步:配置数据库

数据库用于存储文件元数据,是必需的组件,可选数据库为 KV 数据库和 D1 数据库。两者对比如下表所示,根据自己使用场景从其中选择一种配置即可
特点
KV 数据库
D1 数据库
读写性能
较低
免费额度
大文件上传
支持
不支持
重要提示
KV 数据库和 D1 数据库只需要配置其中一个即可,不需要同时配置两个!建议根据上表选择适合自己的数据库类型。

3.1 KV 数据库配置

创建 KV 命名空间

  1. 在 Cloudflare Dashboard 中选择 "存储和数据库"
  1. 点击 "Workers KV"
  1. 点击 "创建实例"
  1. 输入命名空间名称:img_url(建议使用此名称)
  1. 点击 "创建"
创建 KV 命名空间
创建 KV 命名空间

绑定 KV 到项目

  1. 返回您的 Pages 项目
  1. 选择 "设置" → "绑定"
  1. 点击 "添加" → "KV 命名空间"
  1. 填写绑定信息:
      • 变量名称img_url(必须是这个名称)
      • KV 命名空间:选择刚创建的命名空间
  1. 点击 "保存"
注意
绑定 KV 时,变量名称必须为 img_url,这是项目预设的变量名,填错会出现无法进入管理界面等情况。

3.2 D1 数据库配置

创建 D1 数据库

  1. 在 Cloudflare Dashboard 中选择 "存储和数据库"
  1. 点击 "D1 SQL 数据库"
  1. 点击 "创建数据库"
  1. 输入数据库名称:img_d1(建议使用此名称)
  1. 点击 "创建"

初始化 D1 数据库

  1. 创建完成后,点击进入数据库详情页
  1. 选择 "控制台" 选项卡
  1. 在 SQL 输入框中粘贴并执行注释区域以下的内容(见项目仓库
  1. 点击 "执行"

绑定 D1 到项目

  1. 返回您的 Pages 项目
  1. 选择 "设置" → "绑定"
  1. 点击 "添加" → "D1 数据库"
  1. 填写绑定信息:
      • 变量名称img_d1(必须是这个名称)
      • D1 数据库:选择刚创建的数据库
  1. 点击 "保存"

🔄 第四步:重新部署

绑定数据库后需要重新部署以生效:
  1. 进入项目的 "部署" 页面
  1. 找到最新的部署记录
  1. 点击右侧的 "..." 菜单
  1. 选择 "重试部署"
  1. 等待部署完成
重新部署

🚀 下一步

🗂️ 存储渠道配置

部署完成后访问您的域名,进入管理后台配置存储渠道。

访问管理后台

访问 https://your-domain/dashboard
提示
管理后台默认无需密码,登录后请及时设置管理员用户名和密码。

配置 Telegram 渠道

  1. 左上角菜单栏进入 "系统设置" → "上传设置"
  1. 找到 "Telegram 渠道配置"
  1. 点击 "添加渠道"
  1. 填入准备好的 Token 和 Chat ID:
      • 渠道名称:自定义名称(如:主渠道)
      • Bot Token:从 @BotFather 获得的 Token
      • Chat ID:频道 ID(有号时需要保留)
      • 代理 URL:(可选)自定义代理地址,用于代理 Telegram API 请求
      • 启用状态:开启
  1. 点击 "保存设置"
关于代理配置
如果您的服务器无法直接访问 Telegram API,可以配置代理 URL。您可以使用 Cloudflare Worker 搭建简单的代理服务:
// worker.js export default { async fetch(request) { const url = new URL(request.url); const target = `https://api.telegram.org${url.pathname}${url.search}`; const resp = await fetch(target, { method: request.method, headers: request.headers, body: request.body, redirect: 'follow' }); return new Response(resp.body, { status: resp.status, headers: resp.headers }); } };
部署此 Worker 后,将 Worker 地址填入代理 URL 字段即可。

配置 R2 渠道

服务器部署时默认添加了 Cloudflare R2 存储方式,以下步骤仅针对 Cloudflare 部署方式:
  1. 在项目设置中绑定 R2 存储桶:
      • 选择 "设置" → "绑定"
      • 添加 "R2 存储桶"
      • 变量名称img_r2
      • R2 存储桶:选择已创建的存储桶
配置 R2 渠道
  1. 在管理后台配置:
      • 进入 "系统设置" → "上传设置"
      • 配置 R2 渠道参数
      • 如需图像审查,填入 R2 公开访问链接
提示
请注意Cloudflare R2 的免费额度限制,超过后可能会产生费用。
注意

配置 S3 渠道

在管理后台的 S3 渠道配置中填入:
  • Access Key ID:访问密钥 ID
  • Secret Access Key:机密访问密钥
  • Bucket Name:存储桶名称
  • PathStyle:路径样式(如需兼容旧 S3 版本,开启此选项)
  • Region:存储区域(可选)
  • CDN 域名:(可选)自定义 CDN 加速域名,设置后优先通过CDN读取文件

配置 Discord 渠道

在管理后台的 Discord 渠道配置中填入:
  • 渠道名称:自定义名称
  • Bot Token:Discord Bot Token
  • Channel ID:Discord 频道 ID
  • Is Nitro:是否为 Nitro 用户(Nitro 用户单文件限制为 25MB,普通用户为 10MB)
  • 代理 URL:(可选)自定义代理地址

配置 HuggingFace 渠道

在管理后台的 HuggingFace 渠道配置中填入:
  • 渠道名称:自定义名称
  • Repo:仓库名称(格式:username/repo-name,用户名须填写正确,会自动创建 dataset 类型仓库)
  • Is Private:是否为私有仓库
提示
HuggingFace 渠道支持大文件直传,适合上传超过 20MB 的文件。对于大文件,系统会自动使用 LFS 协议进行分片上传。

🔒 安全设置

安全相关设置,在管理后台的 "系统设置" → "安全设置" 中配置

认证管理

  • 用户端认证:用于 Web 端用户登录和 API 认证
  • 管理端认证: 管理员用户名和密码,用于访问管理后台

上传管理

图像审查

审查渠道支持 nsfwjs 和 moderatecontent.com,可根据如下步骤自行配置。

1.moderatecontent.com

  • 注册并获取免费 API Key(目前已不再支持免费注册)
  • 在管理后台 "系统设置" → "安全设置" 中填入 API Key

2.nsfwjs

  • 使用 Docker 部署 nsfwjs 审查服务
# 参考命令 docker run -d -p 127.0.0.1:5000:5000/tcp \ --env PORT=5000 \ --restart=always \ eugencepoi/nsfw_api:latest
  • 在管理后台 "系统设置" → "安全设置" 中填入审查服务地址,如 https://nsfwjs.your.domain

访问管理

  • 域名过滤
    • 放行域名:允许访问的域名列表(留空放行所有域名,否则需要手动添加图床自身域名)
  • 白名单模式:启用后仅允许加入白名单的文件被访问

🌐 网页设置

前端网页相关设置,在管理后台的 "系统设置" → "网页设置" 中配置
字段名
用途
类型
内容规范
siteTitle
网站标题
字符串
只支持字符串类型,设置为你自定义的网站标题
siteIcon
网站图标
字符串
只支持字符串类型,设置为你自定义的网站图标链接
ownerName
图床名称
字符串
只支持字符串类型,设置为你自定义的图床名称(默认为Sanyue
logoUrl
图床Logo
字符串
只支持字符串类型,设置为你自定义的图床Logo链接
logoLink
Logo跳转链接
字符串
只支持字符串类型,设置为点击Logo时跳转的链接,留空则使用默认GitHub链接。仅对上传页面生效
bkInterval
背景切换间隔
正整数
设置为背景图的轮播时间,默认3000,单位ms。例如你希望10s切换一次,设置为10000即可。
bkOpacity
背景图透明度
(0,1]的浮点数
展示的背景图透明度,默认为1。如果你觉得显示效果不佳,可以自定义,如0.8
urlPrefix
默认 URL 前缀
字符串
只支持字符串类型,设置为自定义的全局默认链接前缀,该前缀会覆盖原始默认前缀,但不会覆盖用户自定义的链接前缀
announcement
公告
字符串
只支持字符串类型,可以为 HTML 格式,设置为你自定义的公告内容(如有)
defaultUploadChannel
默认上传渠道
字符串
只支持字符串类型,设置为你自定义的默认上传渠道,支持telegram(Telegram 渠道)、cfr2(Cloudflare R2)、s3(S3 渠道)、discord(Discord 渠道)和huggingface(HuggingFace 渠道)
defaultChannelName
默认渠道名称
字符串
只支持字符串类型,指定默认使用的渠道名称,需先选择上传渠道。当同一渠道类型配置了多个渠道时,可通过此项指定默认使用哪个渠道
defaultUploadNameType
默认命名方式
字符串
只支持字符串类型,设置为你自定义的默认上传文件命名方式,支持default(默认)、index(仅前缀)、original(仅原名)和short(短链接)
loginBkImg
登录页背景图
列表/字符串
1、当字段类型为列表时,列表中元素为需要添加到轮播列表中的图片链接(列表中只有一张图时即为固定背景),形如["1.jpg","2.jpg"]2、当字段类型为字符串时,目前仅支持字符串值为bing,设置为该值时启用bing随机图片轮播模式。
uploadBkImg
上传页背景图
列表/字符串
同loginBkImg
footerLink
页脚传送门链接
字符串
只支持字符串类型,设置为你自定义的传送地址(如个人博客链接)
disableFooter
隐藏页脚
boolean
支持boolean类型,设为true时禁用页脚,默认false
defaultConvertToWebp
默认转换 WebP
boolean
支持boolean类型,设为true时默认开启 WebP 转换,默认false
defaultCustomerCompress
默认开启压缩
boolean
支持boolean类型,设为true时默认开启客户端压缩,默认true
defaultCompressBar
默认压缩阈值
数字
图片大小超过此值将自动压缩,单位 MB,范围 1-20,默认5
defaultCompressQuality
默认期望大小
数字
压缩后图片大小期望值,单位 MB,范围 0.5-压缩阈值,默认4
adminLoginBkImg
管理页登录背景图
列表/字符串
同loginBkImg
adminBkImg
管理页背景图
列表/字符串
同loginBkImg

🛠️ 其他设置

其他设置项,在管理后台的 "系统设置" → "其他设置" 中配置

远端遥测

便于开发者进行bug的捕捉和定位,但是过程中可能收集到访问链接、域名等信息,如您不愿意泄露类似信息给项目开发者,请在管理后台禁用此功能。

随机图像 API

  • 目录:开放随机图权限的目录,默认为根目录,多个目录用逗号分隔;目录均采用绝对路径,例如/img/cover,表示该目录及其所有子目录的文件可被随机图API访问。

访客图库

允许未登录用户访问指定目录的文件,可用于创建公开图库或相册展示。
  • 启用公开浏览:开启或关闭公开浏览功能
  • 允许访问的目录:开放公开访问权限的目录,多个目录用逗号分隔;目录均采用绝对路径(可不写开头的/),例如/img/gallery,/img/wallpapers
提示
启用后,用户可通过 /browse/目录名 路径访问公开图库,例如 /browse/img/gallery

CloudFlare API Token

正常情况下,因为CloudFlare CDN缓存的存在,在管理端进行删除、拉黑、加白名单等操作不会立即生效,需要等到缓存过期才能生效。为了让操作立即生效,建议设置此项,设置方式如下:
  • CF_ZONE_ID:绑定域名的 Cloudflare Zone ID
    • 获取方法
  • CF_EMAIL:Cloudflare 账户邮箱
  • CF_API_KEY:Cloudflare Global API Key
    • 获取方法

WebDAV

WebDAV 服务相关设置,详细介绍和使用方式请查看 API 文档
  • 启用 WebDAV 服务:开启或关闭 WebDAV 服务
  • 用户名:WebDAV 登录用户名
  • 密码:WebDAV 登录密码
  • 上传渠道:通过 WebDAV 上传文件时使用的存储渠道,支持 Telegram、Cloudflare R2、S3、Discord、HuggingFace
  • 指定渠道名:当选择的上传渠道有多个配置时,可指定具体使用哪个渠道名称进行上传

🔧 环境变量清单

注意
环境变量设置方式在 v2.0 版本后已废弃,以下配置请在管理后台进行。

基础认证配置

变量名
类型
必需
说明
示例值
BASIC_USER
string
管理员用户名
admin
BASIC_PASS
string
管理员密码
your_secure_password
AUTH_CODE
string
上传认证码
your_auth_code

存储渠道配置

Telegram 渠道

变量名
类型
必需
说明
示例值
TG_BOT_TOKEN
string
Telegram Bot Token
123456789:ABCdefGHI...
TG_CHAT_ID
string
Telegram 频道 ID
-1001234567890

功能开关配置

变量名
类型
默认值
说明
AllowRandom
boolean
false
启用随机图 API
WhiteList_Mode
boolean
false
启用白名单模式
disable_telemetry
boolean
false
禁用遥测数据

安全配置

变量名
类型
说明
示例值
ALLOWED_DOMAINS
string
允许访问的域名列表
domain1.com,domain2.com
ModerateContentApiKey
string
图像内容审查 API Key
your_api_key

CDN 缓存配置

变量名
类型
说明
用途
CF_ZONE_ID
string
Cloudflare Zone ID
自动清除 CDN 缓存
CF_EMAIL
string
Cloudflare 账户邮箱
自动清除 CDN 缓存
CF_API_KEY
string
Cloudflare Global API Key
自动清除 CDN 缓存
上一篇
CloudNav-abcd部署教程
下一篇
eidam/cf-workers-status-page