跳到正文

工作原理

TG Vault 采用服务器中转:浏览器和 Telegram 不直接持有云存储密钥,而是把任务交给后端;后端完成校验、临时落盘、目标写入和数据库登记。

组件

浏览器 ───────┐
Telegram Bot ─┼─→ Backend / 任务队列 ─→ 本地临时空间 ─→ 存储目标
账号级客户端 ─┘                              ├─ Local
                                             ├─ OneDrive / Google Drive
                                             ├─ Aliyun OSS / S3
                                             └─ WebDAV

Web 前端 ←──────────── API / 文件索引 / 预览 ────────────┘
                         │
                     PostgreSQL

Docker Compose 中:

Web 上传

浏览器选择文件
  → 小文件上传或大文件分片协议
  → 后端校验会话、Origin、大小与磁盘预算
  → 写入临时区域并生成/恢复上传状态
  → 按任务目标写入存储提供商
  → 数据库登记文件与存储账户
  → 生成缩略图/预览信息
  → 前端刷新列表

服务器中转的代价是占用服务器流量和临时磁盘;好处是云存储凭据不进入浏览器,所有提供商共享一致的校验、任务和索引逻辑。

Telegram 文件链路

Bot 基础链路:

用户给 Bot 发送文件
  → 身份与限流检查
  → 捕获聊天目标和保存目录
  → 创建持久化任务
  → Telegram 下载
  → 写入目标存储
  → 数据库登记
  → Bot 发送结果或失败原因

账号级下载器在此基础上增加频道/群组读取、按日期或标签扫描、媒体组整理和订阅同步。它不是 Bot 基础能力的前置条件。

存储目标快照

TG Vault 把“选择哪个账户”分成两个层级:

任务创建时会捕获 provider + accountId。之后切换默认账户不会改变已经提交的任务,避免排队期间把文件写到意外位置。

任务状态与恢复

Web 上传和 Telegram 下载都会产生可追踪的任务状态。任务支持等待、运行、暂停、继续、取消、失败重试以及服务重启后的恢复处理。

关键安全原则:

文件读取与预览

数据库保存文件所属提供商和账户。读取时,后端按原始 source + storage_account_id 找到对应适配器:

因此切换系统默认存储不会让已有文件“找不到”:已有文件仍按其原账户读取。

安全与持久化边界

进一步阅读