作为一个长期依赖Cloudflare R2提供免费、靠谱图床服务的用户,我已经习惯了利用网页界面上传和管理我的图像资源。但是,探索和创新是技术人的本性。最近,我发现了一个开放源代码项目——图片老妈,采用全新的图片上传方式。这个项目利用Telegram的优势,允许用户一键上传照片至Cloudflare R2和Backblaze B2,并且是在Cloudflare Workers和KV的强大基础上运行。想象一下,在Telegram中轻触一下,瞬间你就得到一条可以分享的图片链接——这样的体验,无疑是极其简化的操作。
与文档中使用Wrangler在本地部署方式不同,现在有了GitHub开源项目,我觉着可以通过 GitHub Action 直接实现,所以会涉及这部分的相关配置,但也会实现一条方便快捷地进行自动化部署的工作流,而本质只需一个命名合适的 .yml
文件,就能够一键完成部署。
操作步骤
准备工作
-
获取Telegram Bot Token:
启动Telegram Bot的创建流程,使用 BotFather里的"/newbot"指令,遵循简易的步骤来完成。最终,记录下你的Token供之后使用。
-
找到你的Telegram Username:
在Telegram的"Settings"界面,点击"Edit"可以很容易地找到你的用户名。
-
记录你的Cloudflare Account ID:
登录你的Cloudflare账户后,几乎在所有页面都能找到Account ID,例如Cloudflare R2服务页。
-
R2存储信息获取:
在Cloudflare R2页面创建一个新的存储桶,并记下桶的名字。随后绑定自定义域名,后续还需要用到这个自定义域名。
-
创建并记录KV Namespace ID:
在Cloudflare的KV区,创建一个名为"KV-IMG-MOM"的命名空间,并记录下Namespace ID。
-
生成Cloudflare API Token:
使用"Edit Cloudflare Workers"模版权限创建一个API Token,并妥善保管它(因为它只会显示一次)。
为确保您的Cloudflare Workers自动化部署流程安全且无缝,需要在GitHub仓库中妥善设置必要的secrets。这些涉密数据将包括从Telegram和Cloudflare收集的关键信息。
安全添加Repository Secrets
进入您的GitHub仓库,导航至"Settings - Secrets and variables - Actions"板块,开始添加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配置代码。
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.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
sed -i 's/B2_KEY_ID = ""/B2_KEY_ID = "${{ secrets.B2_KEY_ID }}"/' wrangler.toml
sed -i 's/B2_SECRET_KEY = ""/B2_SECRET_KEY = "${{ secrets.B2_SECRET_KEY }}"/' wrangler.toml
sed -i 's/B2_ENDPOINT = ""/B2_ENDPOINT = "${{ secrets.B2_ENDPOINT }}"/' wrangler.toml
sed -i 's/B2_BUCKET = ""/B2_BUCKET = "${{ secrets.B2_BUCKET }}"/' wrangler.toml
sed -i 's/B2_CUSTOM_DOMAIN = ""/B2_CUSTOM_DOMAIN = "${{ secrets.B2_CUSTOM_DOMAIN }}"/' wrangler.toml
- uses: actions/setup-node@v4
with:
node-version-file: package.json
- run: npm install
- uses: cloudflare/wrangler-action@v3
with:
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
command: deploy --var VERSION:${{ github.sha }} --minify src/index.ts
这段代码确立了一旦代码推至master分支便自动执行部署的工作流,涵盖了从代码检出到构建及部署。通过GitHub Action的自动化,在确保了操作的准确性的同时,开发效率也将大幅提升。
借助上述步骤的操作,可以实现Cloudflare Workers部署流程自动化,只需变更 GitHub 仓库就可以快速而安全的自动更新部署。
成功部署项目后,接下来的关键步骤是配置Telegram Bot WebHook,确保Telegram能与我们的Cloudflare Workers应用无缝沟通。
Telegram Bot 初始配置
访问您的项目设置链接来启动Bot:
若一切顺利,您将看到设置成功的界面提示。
最后,回到您的Telegram Bot,通过发送 /settings 命令按提示完成Cloudflare R2的相关配置。
确保每一步执行准确,将帮助您实现一个稳定的通信桥梁,让您的图片上传工具随时待命。Telegram Bot不仅部署成了一个强大的图床工具,也变得更易于管理和使用。
最终
如果需要使用 B2 作为存储的话,只需要修改 GitHub Action 中的 sed 部分,同时增加 GitHub Repository Secret 就行。
使用 Telegram 上传图片是很顺畅的操作体验,不足之处就是没办法删除图片,这部分操作还是需要依赖网页,后续可以增强 Bot 功能,实现完整的图床管理。