基于 Cloudflare Worker 和 Pages 以及TG_BOT的图床/视频床/文件床服务
2025-8-3
| 2025-8-3
字数 1416阅读时长 4 分钟
type
status
date
slug
summary
tags
category
icon
password
Property
Aug 3, 2025 02:56 AM

介绍

基于 Cloudflare Worker 和 Pages 以及TG_BOT的图床/视频床/文件床服务

功能特点

  • 可选的访客验证功能
  • 可选的图片压缩功能(默认开启)
  • 可选的文件大小限制(默认20MB)
  • 支持查看本地历史记录
  • 支持所有文件格式上传
  • 支持多文件上传和粘贴上传
  • 支持批量操作和显示上传时间
  • Cloudflare Cache API 缓存支持
  • 基于 Telegram Bot API 的文件存储

更新日志

最近更新: 2024-12-18
  • 更新管理界面样式
  • 移除前端的文件类型和文件大小限制
  • 通过环境变量控制上传文件的大小
<details> <summary>历史更新记录</summary>

2024-12-18

  • 更新管理界面样式
  • 移除前端的文件类型和文件大小限制
  • 通过环境变量控制上传文件的大小

2024-12-17

  • 在前端新增一个压缩按钮,用于控制压缩功能,默认状态为开启。

2024-12-13

  • 通过哈希校验来避免重复上传。
  • 调整压缩率为0.75,同时去除分辨率限制。
  • 给删除接口 /delete-images 添加了认证检查。

2024-11-29

管理页面

  • 新增全选和复制功能
  • 删除前进行二次确认
  • 优化资源加载逻辑
  • 禁用视频文件自动播放

首页

  • 修复粘贴上传时不显示移除按钮的问题

2024-11-21日

  • 优化上传体验,默认开启压缩,加快文件上传速度
    • 如需关闭,请将代码的238行修改为enableCompression: false

2024-11-01

  • 修复上传后无法加载的问题

2024-10-19

  • 修复webp无法上传的BUG

2024-09-29

  • 优化缓存功能,采用 Cloudflare Cache API 缓存支持

2024-09-25

  • 修复GIF文件上传的问题,感谢 nodeseek 用户 @Libs 提供的思路
  • Telegraph接口移到了telegraph分支,main分支为TG_BOT接口,可以通过直接fork仓库部署到pages

2024-09-23

  • 修复链接失效的问题,支持视频文件上传

2024-09-14

  • Telegraph接口上传的文件有时效性,建议使用TG_BOT上传

2024-09-13

  • 支持通过TG_BOT上传到频道

2024-09-12

  • 已修复,可正常上传到telegraph

2024-09-06

2024年9月6日起 telegra.ph 禁止了上传媒体文件,此项目终结。
</details>

部署步骤

1. 变量说明

需要在 Cloudflare Workers 中配置以下环境变量:
变量名
说明
必填
示例
DOMAIN
自定义域名
example.workers.dev
DATABASE
D1 数据库绑定变量名称
DATABASE
TG_BOT_TOKEN
Telegram Bot Token
123456789:ABCdefGHIjklMNOpqrsTUVwxyz
TG_CHAT_ID
Telegram 频道/群组 ID
-100xxxxxxxxxx
USERNAME
管理员用户名
admin
PASSWORD
管理员密码
password123
ADMIN_PATH
管理后台路径
admin
ENABLE_AUTH
访客验证(设置为 true 开启,不设置或设置为 false 则关闭)
false
MAX_SIZE_MB
单文件最大支持大小(单位:MB,默认值为 20)
20

2. 创建 Telegram Bot

  1. 在 Telegram 中找到 @BotFather
  1. 发送 /newbot 命令创建新机器人
  1. 按照提示设置机器人名和用户名
  1. 保存获得的 Bot Token (格式为123456789:ABCdefGHIjklMNOpqrsTUVwxyz)
      • 这个 Token 将用作环境变量 TG_BOT_TOKEN

3. 创建 Telegram 频道或群组

  1. 创建一个新的频道或群组
  1. 将你的 Bot 添加为管理员
  1. 获取频道/群组 ID:
      • 在 Origin chat 下找到对应的 ID (格式为 100xxxxxxxxxx)
      • 这个 ID 将用作环境变量 TG_CHAT_ID

4. 创建 D1 数据库

  1. 登录 Cloudflare Dashboard
  1. 进入 Workers & PagesD1 SQL 数据库
  1. 点击 创建 创建数据库
      • 数据库名称可自定义,例如images
      • 建议选择数据库位置为 亚太地区,可以获得更好的访问速度
  1. 创建数据表:
      • 点击数据库名称进入详情页
      • 选择 控制台 标签
      • 执行下 SQL 语句:

5. 创建 Worker

  1. 进入 Workers & Pages
  1. 点击 创建
  1. 选择 创建 Worker
  1. 为 Worker 设置一个名称
  1. 点击 部署 创建 Worker
  1. 点击继续处理项目

6. 配置变量和机密

  1. 在 Worker 的 设置变量和机密
  1. 根据需要逐个点击 添加 添加以下变量
      • DOMAIN
      • TG_BOT_TOKEN
      • TG_CHAT_ID
      • USERNAME
      • PASSWORD
      • ADMIN_PATH
      • ENABLE_AUTH(可选)
      • MAX_SIZE_MB(可选)
  1. 点击 部署

7. 绑定数据库

  1. 在 Worker 设置页面找到 设置绑定
  1. 点击 添加 添加以下变量名称
      • DATABASE
  1. 点击 部署

8. 绑定域名

  1. 在 Worker 的 设置域和路由
  1. 点击 添加自定义域
  1. 输入你在Cloudflare绑定的域名
  1. 点击 添加域
  1. 等待域名生效

9. 部署代码

  1. 进入你的worker项目 → 点击编辑代码
  1. _worker.js 的完整代码复制粘贴到编辑器中
  1. 点击 部署

部署步骤参考:

⚠️ 以下图片里的仅供参考,Cloudflare 面板可能会更新,具体操作请以上方文字教程为准。
💡另外可以参考 nodeseek用户@sdo888的图文教程

Worker 部署示例

1、初始化数据库

image
image
image
image
image

2、创建worker

image
image

3、设置自定义域名

image
image
image
image
image

4、设置变量

image

5、将_worker.js中的代码复制粘贴到编辑器中

image
image

6、点击部署即可

image

Pages部署教程:

1、初始化数据库

image
image
image
image
image

2、部署到pages

image
  • 2.1 下载_worker.js,打包成zip上传到pages
image
  • 2.2 通过fork本仓库部署到pages
    • image
      image

3、设置变量

image

4、设置自定义域名。

image
image
image

5、重新部署生效刚刚配置的自定义域名和变量

image
image
image

开源协议

MIT License
  • cloudflare
  • 图床
  • 自用
  • Blog 图床方案:Backblaze B2 (私密桶) + Cloudflare Workers + PicGo通过s3协议,把Oracle存储桶当图床用
    Loading...