基于 Cloudflare Worker 和 Pages 的图床

介绍

基于 Cloudflare Worker 和 Pages 的图床,部署简单,佬友人手一个:+1:

为什么叫Telegraph图床?
因为一开始是上传到telegraph储存的,后续有限制之后才改到tgbot。

Github 仓库地址:

功能特点

  • 一键复制链接
  • 本地上传历史记录
  • 可选的访客验证功能
  • 单文件最大支持 20MB
  • 支持多文件上传和粘贴上传
  • 支持批量操作和显示上传时间
  • 图片自动压缩(GIF和视频除外)
  • Cloudflare Cache API 缓存支持
  • 基于 Telegram Bot API 的文件存储
  • 支持多种链接格式(URL、BBCode、Markdown)
  • 支持常见的图片和视频格式(jpg、png、gif、mp4)

样式:

部署步骤

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

2. 创建 Telegram Bot

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

3. 创建 Telegram 频道或群组

  1. 创建一个新的频道或群组
  2. 将你的 Bot 添加为管理员
  3. 获取频道/群组 ID:
    • 发送频道内的任意消息给 @getidsbot
    • 在 Origin chat 下找到对应的 ID (格式为 -100xxxxxxxxxx)
    • 这个 ID 将用作环境变量 TG_CHAT_ID

4. 创建 D1 数据库

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

5. 创建 Worker

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

6. 配置环境变量

  1. 在 Worker 的 设置变量和机密
  2. 点击 添加 添加变量
  3. 点击 部署

7. 绑定数据库

  1. 在 Worker 设置页面找到 设置绑定
  2. 点击 添加
  3. 选择 D1数据库
  4. 设置变量名为 DATABASE
  5. 选择之前创建的数据库
  6. 点击 部署

8. 绑定域名

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

9. 部署代码

  1. 进入 Worker 的编辑页面
  2. _worker.js 的完整代码复制粘贴到编辑器中
  3. 点击 部署
20 个赞

感谢佬友分享

1 个赞

感谢 佬友 分享

1 个赞

感谢佬友分享

1 个赞

感谢佬友分享 :bili_057:

1 个赞

咱们佬友也有开发一个图床

3 个赞

各有不同,选自己喜欢的就好。我这个就一个文件,部署起来方便点。 :bili_004:

1 个赞

感谢佬友分享

1 个赞

你是不是他小号 每次图床都能看到你发这个 :tieba_087:

有个问题,当我添加变量ADMIN_PATH的时候,无论我写什么值,链接带上/value、都没法访问

哈哈哈哈,不是,主要是个人用着比较不错,印象深刻,所以遇到类似的帖子就忍不住推荐一下

:tieba_025: 好的好的 是我误会你了

楼主六六六啊

成功部署了,感谢佬友

尝试部署默认的’hello world’看看报错吗,我是直接黑号了’hello world’都看不到,就又去注册了个新号

这个项目是我的。我刚注册 Linux.do

估计环境变量没有设置对吧,readme有详细图片的教程,你可以参考一下。

可以脱离cloudflare的worker吗,想使用,还是说得自己重新写一份。

有点想试试node能不能实现,我去翻翻源码。

可以参考一下这个,之前写的,需要你修改一下上传接口。