Telegram图床管理搭建:Cloudflare R2与Workers图床应用

24 年 4 月 14 日 星期日
1259 字
7 分钟

AI 摘要

奋力赶来...

作为一个长期依赖Cloudflare R2提供免费、靠谱图床服务的用户,我已经习惯了利用网页界面上传和管理我的图像资源。但是,探索和创新是技术人的本性。最近,我发现了一个开放源代码项目——图片老妈,采用全新的图片上传方式。这个项目利用Telegram的优势,允许用户一键上传照片至Cloudflare R2和Backblaze B2,并且是在Cloudflare Workers和KV的强大基础上运行。想象一下,在Telegram中轻触一下,瞬间你就得到一条可以分享的图片链接——这样的体验,无疑是极其简化的操作。

与文档中使用Wrangler在本地部署方式不同,现在有了GitHub开源项目,我觉着可以通过 GitHub Action 直接实现,所以会涉及这部分的相关配置,但也会实现一条方便快捷地进行自动化部署的工作流,而本质只需一个命名合适的 .yml 文件,就能够一键完成部署。

操作步骤

准备工作

  1. 获取Telegram Bot Token:

    启动Telegram Bot的创建流程,使用 BotFather里的 ’/newbot‘ 指令,遵循简易的步骤来完成。最终,记录下你的Token供之后使用。

创建Bot
  1. 找到你的Telegram Username

    在Telegram的“Settings”界面,点击“Edit”可以很容易地找到你的用户名。

  2. 记录你的Cloudflare Account ID

    登录你的Cloudflare账户后,几乎在所有页面都能找到Account ID,例如Cloudflare R2服务页。

Cloudflare Account ID
  1. R2存储信息获取

    在Cloudflare R2页面创建一个新的存储桶,并记下桶的名字。随后绑定自定义域名,后续还需要用到这个自定义域名。

存储桶名
绑定自定义域名
  1. 创建并记录KV Namespace ID

    在Cloudflare的KV区,创建一个名为“KV-IMG-MOM”的命名空间,并记录下Namespace ID。

KV Namespace ID
  1. 生成Cloudflare API Token

    使用“Edit Cloudflare Workers”模版权限创建一个API Token,并妥善保管它(因为它只会显示一次)。

Cloudflare API Token

为确保您的Cloudflare Workers自动化部署流程安全且无缝,需要在GitHub仓库中妥善设置必要的secrets。这些涉密数据将包括从Telegram和Cloudflare收集的关键信息。

安全添加Repository Secrets

进入您的GitHub仓库,导航至“Settings - Secrets and variables - Actions”板块,开始添加repository secret,这样可以保障涉密信息不需显式出现在仓库中。

Repository Secret

将您之前记录好的数据准确无误地输入,这一步至关重要以防止在部署过程中的任何潜在错误,一定不要出现不该有的换行,会影响sed命令的执行。

您需要添加的secrets包括:

  • CLOUDFLARE_ACCOUNT_ID
  • CLOUDFLARE_API_TOKEN
  • CLOUDFLARE_BUCKET_NAME
  • CLOUDFLARE_KV_NAMESPACE_ID
  • CLOUDFLARE_R2_CUSTOM_DOMAIN
  • TG_BOT_ALLOW_ANYONE(直接设为False)
  • TG_BOT_OWNER_USERNAME
  • TG_BOT_TOKEN
  • TG_WEBHOOK_SECRET_TOKEN(例如 ”12345abcde“)

设定GitHub Action

在仓库的根目录创建 .github/workflows/deploy-CloudflareWorkers.yml 文件,并粘贴下面提供的GitHub Action配置代码。

yml
name: Deploy to Cloudflare Workers
on:
  push:
    branches:
      - master
jobs:
  deploy_worker:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          cp wrangler.example.toml wrangler.toml
          sed -i ’s/account_id = ”“/account_id = ”${{ secrets.CLOUDFLARE_ACCOUNT_ID }}“/‘ wrangler.toml
          sed -i ’s/TG_BOT_TOKEN = ”“/TG_BOT_TOKEN = ”${{ secrets.TG_BOT_TOKEN }}“/‘ wrangler.toml
          sed -i ’s/TG_WEBHOOK_SECRET_TOKEN = ”“/TG_WEBHOOK_SECRET_TOKEN = ”${{ secrets.TG_WEBHOOK_SECRET_TOKEN }}“/‘ wrangler.toml
          sed -i ’s/TG_BOT_OWNER_USERNAME = ”“/TG_BOT_OWNER_USERNAME = ”${{ secrets.TG_BOT_OWNER_USERNAME }}“/‘ wrangler.toml
          sed -i ’s/TG_BOT_ALLOW_ANYONE = ”“/TG_BOT_ALLOW_ANYONE = ”${{ secrets.TG_BOT_ALLOW_ANYONE }}“/‘ wrangler.toml
          sed -i ’s/R2_CUSTOM_DOMAIN = ”“/R2_CUSTOM_DOMAIN = ”${{ secrets.CLOUDFLARE_R2_CUSTOM_DOMAIN }}“/‘ wrangler.toml
          sed -i ’s/id = ”“/id = ”${{ secrets.CLOUDFLARE_KV_NAMESPACE_ID }}“/‘ wrangler.toml
          sed -i ’s/bucket_name = ”“/bucket_name = ”${{ secrets.CLOUDFLARE_BUCKET_NAME }}“/‘ wrangler.toml
      - uses: actions/setup-node@v4
        with:
          node-version-file: package.json
      - run: npm install
      - run: npm run build
      - uses: cloudflare/wrangler-action@v3
        with:
          apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
          command: deploy —var VERSION:${{ github.sha }}

这段代码确立了一旦代码推至master分支便自动执行部署的工作流,涵盖了从代码检出到构建及部署。通过GitHub Action的自动化,在确保了操作的准确性的同时,开发效率也将大幅提升。

借助上述步骤的操作,可以实现Cloudflare Workers部署流程自动化,只需变更 GitHub 仓库就可以快速而安全的自动更新部署。

成功部署项目后,接下来的关键步骤是配置Telegram Bot WebHook,确保Telegram能与我们的Cloudflare Workers应用无缝沟通。

Telegram Bot 初始配置

访问您的项目设置链接来启动Bot:

https://img-mom.{{username}}.workers.dev/setup

若一切顺利,您将看到设置成功的界面提示。

最后,回到您的Telegram Bot,通过发送 /settings 命令按提示完成Cloudflare R2的相关配置。

Bot Settings

确保每一步执行准确,将帮助您实现一个稳定的通信桥梁,让您的图片上传工具随时待命。Telegram Bot不仅部署成了一个强大的图床工具,也变得更易于管理和使用。

最终

如果需要使用 B2 作为存储的话,只需要修改 GitHub Action 中的 sed 部分,同时增加 GitHub Repository Secret 就行。

使用 Telegram 上传图片是很顺畅的操作体验,不足之处就是没办法删除图片,这部分操作还是需要依赖网页,后续可以增强 Bot 功能,实现完整的图床管理。

文章标题:Telegram图床管理搭建:Cloudflare R2与Workers图床应用

文章作者:Cedar

文章链接:https://some.fylsen.com/posts/telegram-automation-image-hosting-guide-cloudflare-integration  [复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。