一、搭建前需要准备
1、Telegram 相关
- Telegram Bot Token
- Telegram 管理员
user_id
2、Cloudflare R2 相关
- Cloudflare R2
Access Key - Cloudflare R2
Secret Key - R2 Bucket 名称
- R2 绑定的自定义域名
3、项目地址
https://github.com/ATanZheng/tg-img-r2-bot
二、搭建步骤
1、Cloudflare R2 配置
1.1 创建 R2 存储桶

1.2 开启公共访问 URL

1.3 绑定自定义域名
(建议绑定一个 CDN 域名,如 img.xxx.com)

1.4 创建 API Key
记录以下信息,后面会用到:
ACCOUNT_IDACCESS_KEY_IDSECRET_ACCESS_KEY

Telegram 创建机器人步骤不再赘述,可自行搜索相关教程。
2、服务器部署 tg-img-r2-bot
2.1 拉取项目代码
git clone https://github.com/ATanZheng/tg-img-r2-bot.git
cd tg-img-r2-bot
2.2 配置 config.py
# ================= Telegram =================
TELEGRAM_BOT_TOKEN = "你的TelegramBotToken"
# 允许上传的 Telegram 用户 ID(管理员)
# 可填写一个或多个
ADMIN_USER_IDS = [
123456789, # 替换为你的 Telegram user_id
]
TELEGRAM_FILE_API = f"https://api.telegram.org/file/bot{TELEGRAM_BOT_TOKEN}"
# ================= Cloudflare R2 ===========
R2_ACCESS_KEY_ID = "你的R2AccessKey"
R2_SECRET_ACCESS_KEY = "你的R2SecretKey"
R2_ACCOUNT_ID = "你的CloudflareAccountID"
R2_BUCKET = "tg-img"
R2_ENDPOINT = f"https://{R2_ACCOUNT_ID}.r2.cloudflarestorage.com"
# ================= 对外访问 =================
PUBLIC_BASE_URL = "https://img.yourdomain.com"
注意:
ADMIN_USER_IDS不正确机器人不会响应PUBLIC_BASE_URL必须与 R2 绑定的自定义域名一致
2.3 构建并运行
docker build -t tg-img-r2 .
docker-compose up -d
三、使用说明
部署完成后,直接在 Telegram 中向机器人发送图片,即可返回
Cloudflare R2 + 自定义域名的图片直链,可直接用于论坛 / 博客 / 图床。

四、总结
- Telegram 直接上传图片
- 自动存储到 Cloudflare R2
- 返回 CDN 加速后的直链
- 支持管理员权限,防止滥用
- 成本低,速度快,适合自用图床
项目地址:
https://github.com/ATanZheng/tg-img-r2-bot
CF图床确实省钱省力,但晚高峰图根本打不开
好帖
r2不敢用,怕被反撸了
@hahaaa #3 设置策略缓存就行
@wolaile #1 现在还没有尝试,我设置的地区是亚太地区
@luoacc #5 应该选美西地区的,大陆访问cf cdn是连的北美边缘节点
@ShowUNow #6 这样的吗
目前这个规则是只有tg管理员有权限上传图片,这个应该不会被薅吧,哈哈
tg机器人上传图片大小有限制
自己应该是够用了