零成本!用 CF 搭建基于 TG 的无限容量私有图床加网盘
前言
最近的一个项目叫K-Vault,一款部署在Cloudflare上利用 Telegram 的无限存储空间私人存储与图床方案。类似的方案其实还挺多的,比如Telegraph-Image、 TGIMGHub等等,推荐这个项目的原因一是比较新,作者更新积极,二是功能比较多,除了TG还集成很多其他方案。只要不传一些奇怪的东西,TG就足够用了。 项目地址:https://github.com/katelya77/K-Vault

功能特性
无限存储 - 不限数量的图片和文件上传
完全免费 - 托管于 Cloudflare,免费额度内零成本
免费域名 - 使用
*.pages.dev二级域名,也支持自定义域名多存储后端 - 支持 Telegram、Cloudflare R2、S3 兼容存储、Discord、HuggingFace、WebDAV、GitHub
Telegram Webhook 回链 - 机器人在频道/群接收文件后自动回复直链
KV 写入优化 - Telegram 可启用签名直链,显著降低 KV 读写消耗
内容审核 - 可选的图片审核 API,自动屏蔽不良内容
多格式支持 - 图片、视频、音频、文档、压缩包等
在线预览 - 支持图片、视频、音频、文档(pdf、docx、txt)格式的预览
分片上传 - 支持最大 100MB 文件(配合 R2/S3)
访客上传 - 可选的访客上传功能,支持文件大小和每日次数限制
API Token 认证 - 支持
curl/ ShareX / 脚本等程序化上传与调用多种视图 - 网格、列表、瀑布流多种管理界面
存储分类 - 直观区分不同存储后端的文件
双模部署 - 保留 Cloudflare Pages 部署,同时新增 Docker 自托管(
docker compose up -d)动态存储配置管理 - 支持在管理端通过 API 对存储配置进行新增/编辑/删除/测试/设为默认
可插拔设置存储(Docker) - 基础站点设置可使用
sqlite(默认)或 Redis 协议后端(Upstash / Redis / KVrocks)前端路径简化 - 以根路径页面为主流程(
/、/admin.html、/webdav.html)GitHub Actions 镜像构建 - 主分支/Tag 自动构建并推送
api+web镜像
准备部署
前置要求
Cloudflare账户
Telegram 账户(如使用 Telegram 存储)
Docker + Docker Compose(可选,用于自托管部署)
获取 Telegram 凭据
向 @BotFather 发送
/newbot按提示创建机器人,获得
BOT_TOKEN
blog image
创建频道并添加机器人
创建一个新的 Telegram 频道
将机器人添加为频道管理员

blog image
获取 Chat ID
向 @VersaToolsBot 或 @GetTheirIDBot 发送消息获取频道 ID

blog image
部署到 Cloudflare
Fork 本仓库
创建 Pages 项目
进入
Workers 和 Pages→创建应用程序→Pages→连接到 Git选择 Fork 的仓库,点击部署

blog image
配置环境变量
进入项目
设置→环境变量添加必需变量:
变量名 | 说明 | 必需 |
|---|---|---|
| Telegram Bot Token | ✅ |
| Telegram 频道 ID | ✅ |
| 管理后台用户名 | 可选 |
| 管理后台密码 | 可选 |
重新部署 - 修改环境变量后需重新部署生效

配置KV 存储(图片管理,必需)
启用图片管理功能需要配置 KV:
进入 Cloudflare Dashboard →
Workers 和 Pages→KV点击
创建命名空间,命名为k-vault
blog image 进入 Pages 项目 →
设置→函数→KV 命名空间绑定
blog image 添加绑定:变量名
img_url,选择创建的命名空间
blog image 添加自定义域名

blog image 重新部署项目
如何使用
初次访问输入账户密码

blog image TG 频道添加机器人为管理员

blog image 查看连接状态

blog image 上传一个图片测试一下

blog image TG频道里也可以看到了

blog image
Telegram 增强模式(自部署 Bot API + Webhook)
项目已支持将 Telegram API 基础地址切换为自部署 Bot API,并支持通过 Webhook 在群/频道接收文件后自动回复直链。官方Bot API会有单文件20兆限制,自部署的话是20G的限制。 关键环境变量:
变量名 | 说明 | 示例 |
|---|---|---|
| 自部署 Bot API 地址(不填则默认 |
|
| Webhook 回链时使用的公网域名(建议填写) |
|
| Webhook 密钥,校验头 |
|
| Telegram 链接模式,设为 |
|
| 设为 |
|
| Telegram 元数据写入策略: |
|
| 网页上传成功后,是否额外发送“直链+File ID”通知消息 |
|
| 签名直链密钥(不填则回退到 |
|
Webhook 部署步骤: |
在 Telegram 中把 Bot 拉进目标频道/群并授予发言权限(频道建议管理员)。
在 Cloudflare Pages 中配置
TG_Bot_Token、PUBLIC_BASE_URL、TG_WEBHOOK_SECRET,然后重新部署。
blog image 
blog image 重新部署生效
调用
setWebhook指向本项目接口: 测试: 新开页面打开以下连接注意不要有空格https://api.telegram.org/bot<YOUR_BOT_TOKEN>/setWebhook?url=【你的url】/api/telegram/webhook&secret_token=【你的SECRET】
blog image 测试一下:频道/群内发送图片或文件,Bot 会自动回复
/file/...直链。
blog image 管理后台也可以看到并预览

blog image
然后还可以根据官方文档,添加一些其他的环境变量,或添加其他存储桶。
使用限制
Cloudflare 免费额度:
每日 100,000 次请求
KV 每日 1,000 次写入、100,000 次读取、1,000 次列出
超出后需升级付费计划($5/月起)
建议 Telegram 场景开启签名直链或低 KV 写入模式以降低额度压力

blog image Docker 自托管模式下,Node 运行时不受 Cloudflare 免费额度限制(受你自己的服务器和存储后端限制)
请求数再高的CF就无法满足了,可以在境外VPS用docker部署。有兴趣的可以自己尝试,本文就不在继续演示了。
相关文章
暂无相关文章