TG Vault v2.4.0
TG Vault v2.4.0
Important
严重安全优化:强烈建议所有用户尽快升级并使用 v2.4.0。
本版本重点收紧 Telegram Bot 凭证与账号运行时的生命周期边界,避免保存、迁移或更换 Bot 凭证时意外触发 Telegram 用户账号、订阅扫描、任务恢复或主动消息等自动化行为。
重要行为变化:这不是“零影响”升级。 为消除隐式自动化带来的安全风险,升级后 Telegram 订阅扫描、任务恢复和定期清理不再随 Bot 启动而自动运行;依赖这些自动化的用户会看到相关任务停止。请优先完成安全升级,并留意后续采用明确应用级编排的版本。
严重安全优化
- 严格隔离 Telegram Bot 与用户账号运行时:保存、迁移、停用或删除 Bot 配置时,不再初始化、刷新或扫描 Telegram 用户账号。
- Bot Token 更换不再复用旧会话:每次启动均从空 Bot Session 完成身份认证,避免旧 Session 与新 Token 混用。
- 启动完整性校验:Bot 只有在认证、身份读取、命令菜单注册和事件处理器安装全部成功后才进入
ready状态。 - 失败即清理:Bot 启动失败会立即断开并销毁失败客户端,清除运行时引用,防止半初始化实例残留。
- 失效凭证识别更准确:
ACCESS_TOKEN_EXPIRED、ACCESS_TOKEN_INVALID等错误会明确归类为凭证失效,并提示在网页端更换 Token。 - 用户账号改为显式激活:仅在“登录完成”或用户明确点击“启用”时连接对应账号;停用账号会立即关闭其运行时客户端。
- 登录凭据作用域收紧:二维码/手机号登录流程携带本次显式凭据,只激活刚完成登录的账号,不再刷新整个账号池。
- 杜绝隐式后台自动化:Bot 凭证绑定过程不再自动启动订阅扫描、任务恢复或定期清理任务。
- 不再持久化 Bot Session:Bot 每次使用当前 Token 从空 Session 认证,不再将额外的 Bot Session 凭据写入磁盘。
- 启动副作用延后提交:通知器和摘要定时器仅在 Bot 完整进入
ready后安装;任何启动失败都会撤销相关运行时副作用。 - 旧版手机号登录同样定向激活:旧版登录流程保存并传递本次 Telegram API 凭据,只连接刚刚完成登录的账号。
稳定性改进
- Telegram Bot 连接与重连策略改为有界重试,关键启动步骤增加超时保护,降低网络异常时长期阻塞的风险。
- 可选 Bot 启动失败时继续以 degraded 状态提供 Web 服务,同时保留可操作的错误原因;必需模式仍会阻止就绪。
- 多账号适配器在应用启动时以无账号连接副作用的方式安装,账号连接只由明确操作触发。
升级方法
使用官方安装脚本部署
cd /opt/tg-vault
sudo bash deploy/install.sh使用 Git / Docker Compose 手动部署
cd /path/to/tg-vault
git fetch --tags origin
git checkout main
git pull --ff-only origin main
git checkout v2.4.0
version="v$(node -p "require('./backend/package.json').version")"
revision="$(git rev-parse HEAD)"
IMAGE_VERSION="$version" SOURCE_REVISION="$revision" SOURCE_VERSION="$version" docker compose build backend frontend
IMAGE_VERSION="$version" SOURCE_REVISION="$revision" SOURCE_VERSION="$version" docker compose up -d --no-build --no-deps backend frontend- 升级前建议备份 PostgreSQL 数据库和
.env。 - 升级后请进入 Web 设置检查 Telegram Bot 状态;若提示 Token 失效,请更换 Bot Token。
验证
- Backend:470/470 项测试通过,TypeScript 类型检查通过,生产构建通过。
- Frontend:203/203 项测试通过,ESLint 通过,生产构建通过。
- 数据库 schema 一致性检查:通过。
- 安装脚本测试:通过。
- 新增安全回归覆盖:Bot/用户账号生命周期隔离、旧 Session 不复用、失败客户端清理、显式账号激活、失效 Token 分类。