logo NodeSeekbeta

[开源项目] TG-Vault:Telegram 全自动转存 + 私有云存储系统

项目地址:https://github.com/hicocos/tg-vault

大家好,最近把自己二开的一个项目整理开源了,叫 TG Vault。

它的定位比较明确:面向个人和小团队,把 Telegram 里的文件、频道/群组媒体、视频链接下载任务,统一转存到自己可控的私有云存储里,并提供一个 Web 文件管理界面。

如果你平时有这些需求,可能会比较适合:

  • Telegram 里经常收文件,想顺手转存到自己的服务器或对象存储
  • 频道/群组里有大量媒体,想按日期、标签或订阅方式归档
  • 想要一个轻量的 Web 文件管理入口,而不是只靠命令行整理文件
  • 想把本地盘、OneDrive、Google Drive、S3/WebDAV 等存储统一接入

它能做什么

模块 功能
Web 文件管理 文件上传、分片大文件上传、文件夹、预览、删除、存储源管理
多存储源 本地、OneDrive、Google Drive、阿里云 OSS、S3 兼容存储、WebDAV
Telegram Bot 私聊发文件转存、任务队列、存储统计、删除文件、yt-dlp 下载
Telegram 账号级下载器 频道/群组按日期或标签批量抓取、订阅同步、大文件更稳定下载
自动归档 默认按来源/频道和文件类型保存,例如 telegram/channel/images/file.jpg
安全相关 首次初始化管理员、HttpOnly Cookie、Origin 校验、签名 URL、TOTP 双重验证

Bot 和账号级下载器的区别

这里我特意把两层能力拆开了,避免为了用基础功能就必须登录 Telegram 用户账号。

能力 只启用 Bot 启用账号级下载器
私聊发送文件给 Bot 转存 支持 支持
任务管理、存储统计、删除文件 支持 支持
/ytdlp 下载视频链接 支持 支持
频道/群组按日期或标签批量抓取 不支持 支持
频道/群组订阅自动同步 不支持 支持
超过 Bot 限制的大文件下载 可能失败 更稳定

也就是说,如果你只是想把发给 Bot 的文件转存、看看任务、跑 yt-dlp,不生成用户账号 session 也能用。只有频道/群组批量抓取、订阅同步、大文件下载这些场景,才需要额外启用账号级下载器。


快速部署

  1. 克隆仓库
git clone https://github.com/hicocos/tg-vault.git
cd tg-vault
  1. 配置环境变量
cp .env.example .env
vi .env
使用场景 需要填写/执行
基础 Web 部署 DB_PASSWORD、VITE_API_URL、CORS_ORIGIN、DOMAIN
启用 Telegram Bot 基础能力 额外填写 TELEGRAM_BOT_TOKEN、TELEGRAM_API_ID、TELEGRAM_API_HASH
启用账号级 Telegram 下载器 在 Bot 基础配置之后,运行登录脚本生成 TELEGRAM_USER_SESSION_FILE
  1. 构建前端
set -a
source .env
set +a

docker build \
  --build-arg VITE_API_URL="${VITE_API_URL}" \
  -t tg-vault-frontend:latest \
  ./frontend
  1. 构建后端
docker build -t tg-vault-backend:latest ./backend
  1. 生成用户账号 session(可选)
    仅在需要账号级 Telegram 下载器时执行
docker compose run --rm --no-deps backend npm run login:telegram-user
  1. 启动服务
docker compose up -d

7.反代

访问域名 转发至宿主机 IP:端口 说明
cloud.example.com 127.0.0.1:47832 强制https协议,前端 / 网页入口
api.example.com 127.0.0.1:51947 强制https协议,后端 / API 接口

8.首次访问前端cloud.example.com 配置前端访问密码以及tgbot的验证密码(强制4位数字)

至此-完成部署

9.后续怎么更新同步上游
先cd到项目目录

git fetch origin
git pull --ff-only origin main

docker compose up -d --build

开源协议

项目基于 MIT License 开源。

GitHub 地址:

https://github.com/hicocos/tg-vault

如果这个项目刚好解决了你的需求,欢迎试用、提 issue,也欢迎顺手点个 Star。后面我也会继续根据自己的使用场景和评论区反馈慢慢补功能和修细节。
本项目基于 https://www.nodeseek.com/post-618525-1 深度二开
ps:部分功能预览放到评论区1f展示

大家有什么优化建议,新增功能,bug都欢迎在评论区留言!

  • 更新日志简要说明
    7月2日晚18点30分

    更新文件级并发设置,在tgbot菜单中可选择1,2,3,4个同时下载

    7月3日19点20分

    1.项目正式改名成 tg-vault
    2.修复两个bug:前端网页图片视频401报错问题
    修正/tg_download date 日期的对应逻辑
    3.新增功能:对频道评论区的支持,生效范围是按照日期和标签下载时候会提示是否扫描评论区
    4.优化大型批量下载任务队列,扫描队列更智能更持久。

    7月4日9点30分

    1.增加对谷歌共享云盘(团队盘)的支持
    2.bot菜单添加切换配置好的第三方存储的功能
    3.网页端操作逻辑,性能,功能。优化
    4.针对超大型大型任务,数据表索引的优化。

    7月5日14点50分

    根据反馈增加对私密频道链接的识别和支持
    优化对订阅频道有效性检测机制。

    7月6日

    新增 Google Drive 上传限额冷却机制。
    触发每日上传限额后,自动暂停约 24 小时并保留剩余文件,冷却结束后后台任务自动继续。

    7月11日

    文件命名优化
    下载队列模块细化,更精确化管理多任务

    7月14日

    改善因为服务器docker重启等等原因造成下载任务中断逻辑等,增加无损恢复性
    重构Web端大文件分片上传
    防误删逻辑增强
    登录安全进一步加固

    7月17日

    修复评论区提到的关于webdav链路和数据库任务冲突,导致任务卡住无响应问题
    强化上传下载链路到第三方和数据库逻辑
    更新前端依赖...etc

    7月23日

    此次主要针对web端,交互逻辑,web端和tgbot端真正互通,新增任务中心
    全面增强验证收尾
    此版本改动很多,推荐更新,有bug及时反馈。

    8月26日

    修复bug交互逻辑,部署报错
    针对web端又一轮的优化增强

  • @致敬稻神袁隆平 #54
    目前的形式是:根据你们的反馈来修bug或者增加功能优化等。这种被动更新

    我就暂时不主动想着更新了,目前在二开一个喜马拉雅下载器的工具,等搞的差不多了再说

  • @武则天 #94
    @武则天 #95
    抱歉,昨晚蹬了一晚,对整个项目做了大量的修改优化增加功能等等。

    没实际验收就推送到github了,我的锅
    我等会把你这个问题修复了

  • 频道订阅功能界面预览

    image

    频道按照日期/标签批量下载界面预览

    image

    telegram下载并发界面预览

    image

    自定义路径规则界面预览

    image

    文件级并发下载数界面预览

    image

  • 大佬啊 xhj003

  • 这个真需要,感谢大佬

  • 看不懂,但是觉得牛

  • 你的意思是说,我在tg看到的剧情演绎片可以保存到我的服务器上了?

  • 是个好东西

  • 看起来不错

  • 支持一下

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72267位seeker

🎉欢迎新用户🎉