Cloudflare Pages + 电报搭建自己的图床

2026-01-28 13:36:00 0点赞 0收藏 0评论

#Cloudflare Pages 部署

  1. 访问 CloudFlare ImgBed 项目

  2. 点击右上角的 "Fork" 按钮

  3. 选择您的 GitHub 账户

  4. 确认 Fork 完成

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

#第二步:创建 Pages 项目

#2.1 访问 Cloudflare Dashboard

  1. 登录 Cloudflare Dashboard

  2. 选择左侧菜单的 "计算和AI" -> "Workers & Pages"

  3. 点击 "创建应用程序"

  4. 在最下方 Looking to deploy Pages? 选择 "Get started"

  5. 在 "导入现有 Git 存储库" 处点击 "开始使用"

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

填写配置并部署:

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

#第三步:配置数据库

数据库用于存储文件元数据,是必需的组件,可选数据库为 KV 数据库和 D1 数据库。两者对比如下表所示,根据自己使用场景从其中选择一种配置即可

特点KV 数据库D1 数据库读写性能高较低免费额度少多大文件上传支持不支持

KV 数据库和 D1 数据库只需要配置其中一个即可,不需要同时配置两个!建议根据上表选择适合自己的数据库类型。

#创建 D1 数据库

  1. 在 Cloudflare Dashboard 中选择 "存储和数据库"

  2. 点击 "D1 SQL 数据库"

  3. 点击 "创建数据库"

  4. 输入数据库名称:img_d1(建议使用此名称)

  5. 点击 "创建"

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

名称建议:img_d1

Cloudflare Pages + 电报搭建自己的图床

#初始化 D1 数据库

  1. 创建完成后,点击进入数据库详情页

  2. 选择 "控制台" 选项卡

  3. 在 SQL 输入框中粘贴并执行注释区域以下的内容(见项目仓库

  4. 点击 "执行"

代码地址: https://github.com/MarSeventh/CloudFlare-ImgBed/blob/main/database/init.sql

CREATE TABLE IF NOT EXISTS files ( id TEXT PRIMARY KEY, value TEXT, metadata TEXT NOT NULL, file_name TEXT, file_type TEXT, file_size TEXT, upload_ip TEXT, upload_address TEXT, list_type TEXT, timestamp INTEGER, label TEXT, directory TEXT, channel TEXT, channel_name TEXT, tg_file_id TEXT, tg_chat_id TEXT, tg_bot_token TEXT, is_chunked BOOLEAN DEFAULT FALSE, tags TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS settings ( key TEXT PRIMARY KEY, value TEXT NOT NULL, category TEXT, description TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS index_operations ( id TEXT PRIMARY KEY, type TEXT NOT NULL, timestamp INTEGER NOT NULL, data TEXT NOT NULL, processed BOOLEAN DEFAULT FALSE, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS index_metadata ( key TEXT PRIMARY KEY, last_updated INTEGER, total_count INTEGER DEFAULT 0, last_operation_id TEXT, chunk_count INTEGER DEFAULT 0, chunk_size INTEGER DEFAULT 0, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE IF NOT EXISTS other_data ( key TEXT PRIMARY KEY, value TEXT NOT NULL, type TEXT, description TEXT, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_files_timestamp ON files(timestamp DESC); CREATE INDEX IF NOT EXISTS idx_files_directory ON files(directory); CREATE INDEX IF NOT EXISTS idx_files_channel ON files(channel); CREATE INDEX IF NOT EXISTS idx_files_file_type ON files(file_type); CREATE INDEX IF NOT EXISTS idx_files_upload_ip ON files(upload_ip); CREATE INDEX IF NOT EXISTS idx_files_created_at ON files(created_at DESC); CREATE INDEX IF NOT EXISTS idx_files_tags ON files(tags); CREATE INDEX IF NOT EXISTS idx_settings_category ON settings(category); CREATE INDEX IF NOT EXISTS idx_index_operations_timestamp ON index_operations(timestamp); CREATE INDEX IF NOT EXISTS idx_index_operations_processed ON index_operations(processed); CREATE INDEX IF NOT EXISTS idx_index_operations_type ON index_operations(type); CREATE INDEX IF NOT EXISTS idx_other_data_type ON other_data(type); CREATE TRIGGER IF NOT EXISTS update_files_updated_at AFTER UPDATE ON files BEGIN UPDATE files SET updated_at = CURRENT_TIMESTAMP WHERE id = NEW.id; END; CREATE TRIGGER IF NOT EXISTS update_settings_updated_at AFTER UPDATE ON settings BEGIN UPDATE settings SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key; END; CREATE TRIGGER IF NOT EXISTS update_index_metadata_updated_at AFTER UPDATE ON index_metadata BEGIN UPDATE index_metadata SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key; END; CREATE TRIGGER IF NOT EXISTS update_other_data_updated_at AFTER UPDATE ON other_data BEGIN UPDATE other_data SET updated_at = CURRENT_TIMESTAMP WHERE key = NEW.key; END;

#绑定 D1 到项目

  1. 返回您的 Pages 项目

  2. 选择 "设置" → "绑定"

  3. 点击 "添加" → "D1 数据库"

  4. 填写绑定信息:

    • 变量名称img_d1(必须是这个名称)

    • D1 数据库:选择刚创建的数据库

  5. 点击 "保存"

#第四步:重新部署

绑定数据库后需要重新部署以生效:

  1. 进入项目的 "部署" 页面

  2. 找到最新的部署记录

  3. 点击右侧的 "..." 菜单

  4. 选择 "重试部署"

  5. 等待部署完成

#第五步:登录网页进行配置

复制Page的地址

Cloudflare Pages + 电报搭建自己的图床

#管理后台默认无需密码,登录后请及时设置管理员用户名和密码。

网页右下角:

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

在安全设置里设置用户名密码

Cloudflare Pages + 电报搭建自己的图床

#添加上传渠道

Cloudflare Pages + 电报搭建自己的图床

我这里使用了电报渠道。

Cloudflare Pages + 电报搭建自己的图床

token 找 botfather 获取。 id使用这个方法获取: https://gist.github.com/nafiesl/4ad622f344cd1dc3bb1ecbe468ff9f8a

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

配置好之后就可以通过网页上传了。

Cloudflare Pages + 电报搭建自己的图床

#第六步:配置picgo

创建一个api token

Cloudflare Pages + 电报搭建自己的图床

下载这个插件

https://github.com/xlenco/picgo-plugin-web-uploader-custom-url-prefix

可以通过 clone 的方式下载,也可以直接下载zip包然后解压

https://gh.idayer.com/https://github.com/xlenco/picgo-plugin-web-uploader-custom-url-prefix/archive/refs/heads/main.zip

https://raw.ihtw.moe/github.com/xlenco/picgo-plugin-web-uploader-custom-url-prefix/archive/refs/heads/main.zip

https://gh.zwy.one/https://github.com/xlenco/picgo-plugin-web-uploader-custom-url-prefix/archive/refs/heads/main.zip

当然,也可以使用下面这个云盘链接

https://www.123865.com/s/Y4kqVv-Ywrbv?pwd=znoG#

打开picgo 导入插件

Cloudflare Pages + 电报搭建自己的图床

配置插件

Cloudflare Pages + 电报搭建自己的图床

api地址:

图床域名/upload?authCode=创建的token&uploadFolder=

post 参数: file

json 路径: 0.src

自定义图盘前缀:图床域名

上传测试

Cloudflare Pages + 电报搭建自己的图床Cloudflare Pages + 电报搭建自己的图床

感谢大佬的辛苦付出 https://github.com/MarSeventh/CloudFlare-ImgBed


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
0
扫一下,分享更方便,购买更轻松