TG2Cloud:Telegram 文件自动转存到网盘,支持 CloudDrive2 与 OpenList

TG2Cloud:Telegram 文件自动转存到网盘,支持 CloudDrive2 与 OpenList
落魄君子TG2Cloud 可以把你提交给私人 Telegram Bot 的文件,自动排队并写入自己挂载的云存储。Windows 部署器负责安装和管理,VPS 负责执行任务,CloudDrive2 或 OpenList 负责连接网盘。
本文从首次部署讲到日常使用和维护,重点说明每一步应该填写什么、何时才算成功,以及哪些操作会影响现有数据。
项目仓库 · 部署器下载 · v1.1.1 发布说明 · 新手使用说明
本文于 2026 年 10 月 1 日根据 TG2Cloud v1.1.1 标签文档和源码整理。受管部署的 HTTPS 流程与旧版有明显区别,不要直接照搬 v1.0.2 的 SSH 隧道按钮教程。后续界面与默认值以对应版本为准;文中的速度计算是估算,不是实测成绩。
项目来源与致谢: TG2Cloud 基于 whyhhh20/TG115 二次开发,沿用 MIT 许可证并保留原作者版权信息。感谢原作者与相关开源组件的贡献者。它是对原项目的持续完善,不是从零开发的替代叙述;来源与许可见仓库说明和许可证。
一、TG2Cloud 能做什么?
传统的保存方式通常是先把 Telegram 文件下载到手机或电脑,再上传到网盘,最后清理临时文件。TG2Cloud 把选择文件之后的重复步骤交给自己的 VPS:
1 | 本人在 Telegram 中选择文件 |
它适合个人资料归档与备份,但需要先明确以下边界:
- 不是频道采集器。 当前只受理配置用户与 Bot 的一对一私聊,不自动监听频道、不批量抓取频道历史;群组或频道消息不会创建任务。
- 不是网盘秒转接口。 文件仍经过传输链路,需要 VPS 带宽、流量与可用资源。
- 不只限于 115。 115 是主要测试与文档示例之一,实际可用目标由你在 CloudDrive2 或 OpenList 中挂载的存储决定,不能据此推断所有网盘均已验证。
- 不承诺内容哈希一致。 Bot 主要通过 WebDAV 远端大小检查确认接收,不接入上游网盘官方完成接口。
- 流式不等于零磁盘。 它减少 Bot 的完整下载副本,网关缓存、容器、日志等仍占空间。
项目的使用方式是“手动选择、自动处理”:选择和内容授权由你负责,排队、传输、状态记录与收尾由服务处理。工作原理与重要边界
二、选择 CloudDrive2 版还是 OpenList 版?
两版共用 Bot 任务核心和 PySide6 部署界面,使用不同的存储网关、部署入口和运行资源。选择自己已经使用或更熟悉的一版即可,不必同时安装。
| 项目 | CloudDrive2 Edition | OpenList Edition |
|---|---|---|
| Windows 部署器 | TG2Cloud-CloudDrive2-Deployer.exe |
TG2Cloud-OpenList-Deployer.exe |
| 默认安装目录 | /opt/tg2cloud-clouddrive2 |
/opt/tg2cloud-openlist |
| 网关容器 | tg2cloud-clouddrive2 |
tg2cloud-openlist |
| Bot 容器 | tg2cloud-clouddrive2-bot |
tg2cloud-openlist-bot |
| 同机 WebDAV 地址 | http://tg2cloud-clouddrive2:19798/dav |
http://tg2cloud-openlist:5244/dav/ |
| VPS 后端监听 | 127.0.0.1:19798 |
127.0.0.1:5244 |
| 日常管理入口 | 当前 Edition 的独立 HTTPS 域名 | 当前 Edition 的独立 HTTPS 域名 |
| FUSE | 受管网关需要 /dev/fuse |
不需要 FUSE |
| 文件收尾方式 | 临时上传、改名、正式文件复验 | 预留最终名称、直接写入、大小复验 |
同机 WebDAV 地址中的主机名属于 Docker 网络,供 Bot 容器使用,不是给 Windows 浏览器访问的地址。后端端口也不应公开到互联网。
两版可共存,但要使用不同的管理域名,并避免同时长期使用同一个 Bot Token。CloudDrive2/OpenList 能挂载某个存储,也不自动代表该存储具备可靠的写入、检查和清理能力,仍需做真实验收。产品配置源码、双版本说明
TG2Cloud 按 MIT 许可证开源;VPS、网盘容量、CloudDrive2 功能与会员权益是另外的使用条件,不能把“项目开源”理解为整套链路免费。第三方组件说明
老用户需要注意的版本变化
| 版本 | 与本文操作相关的变化 |
|---|---|
v1.0.2 |
OpenList 改为直接写入最终文件名,不依赖 WebDAV MOVE |
v1.0.4 |
Bot 首页调整为任务、实时速度与三个快捷按钮;VPS 资源单独展示 |
v1.1.0 |
受管部署必须完成 HTTPS 管理入口配置,SSH 隧道不再作为日常工作台按钮 |
v1.1.1 |
加强共享 HTTPS 事务保护、OpenList 同名文件检查和只读健康探测的 401/429 冷却 |
这些变化并不意味着每一版都重新验证了所有 Telegram、网盘与文件规模的组合。v1.1.1 发布说明明确区分了本轮 HTTPS 检查与沿用的转存验收基线。版本记录、本次验证范围
三、部署之前需要准备什么?
1. VPS 与本地电脑
| 项目 | 基础参考 | 注意事项 |
|---|---|---|
| VPS | 2 核 CPU、4GB 内存、50GB SSD | 批量使用可参考 4 核、8GB、80~100GB,最终按实时检测设置 |
| 系统 | Ubuntu 22.04/24.04、Debian 12 的 64 位版本 | 项目列出的基础环境,支持 x86_64、ARM64 |
| 权限 | root 或可用 sudo | 非 root 用户按需准备 sudo 密码 |
| 网络 | 可连接 Telegram、镜像仓库与目标云存储 | 关注真实线路与套餐流量,不只看标称带宽 |
| 本地电脑 | Windows 10/11 64 位 | 运行部署器,不负责持续传输文件 |
| FUSE | CloudDrive2 受管部署需要 /dev/fuse |
购买或安装前确认服务商是否提供 |
安装脚本的基础硬检查约为 1.8GB 内存、安装文件系统至少 8GB 可用空间,但这只是初步门槛,不代表达到它就适合所有任务。部署器还会检查安装盘、Docker 数据盘、已有下载、备份占用、inode 和最终填写的预算。
50GB 是推荐容量,不是保证全部用于临时文件;系统、Docker、日志与网关缓存也会占用空间。部署准备、资源说明
2. VPS 登录信息
准备服务器 IP 或域名、SSH 端口、用户名,以及密码或 SSH 私钥。使用带口令的私钥时,还需准备私钥口令。
首次连接必须核对服务器主机密钥指纹。能够输入正确密码,不等于可以跳过服务器身份确认。
3. Telegram 四项参数
| 参数 | 获取方式与用途 |
|---|---|
| Bot Token | 向官方 @BotFather 发送 /newbot,按提示创建机器人 |
| API ID | 登录 my.telegram.org,进入 API development tools 申请 |
| API Hash | 与 API ID 一同获取 |
| 本人 Telegram 数字 ID | 限制允许使用 Bot 的用户,不是 @用户名、Bot ID 或聊天名称 |
Token、API ID、API Hash 和用户数字 ID 的用途不同,不能互相替代。不要把真实参数放在教程示例、公开截图或 Issue 中。申请步骤见 Telegram Bot 官方教程和 Telegram 应用创建说明。
4. 网关与目标存储
准备能够在所选网关中正常挂载的存储账号、足够的目标空间,以及计划为 TG2Cloud 创建的专用 WebDAV 用户。
两类凭据应分开处理:
1 | 网盘账号、扫码、Cookie、Token 或 OAuth 授权 |
部署器不要求你向维护者提供网盘登录密码、Cookie、OAuth Token、Telegram 私人账号密码或验证码。不要把 CloudDrive2 会员密码填成 WebDAV 密码。填写信息清单
5. 管理域名与端口
同机受管部署需要可用的管理域名。 使用两版时,每个 Edition 准备不同的域名,例如:
1 | CloudDrive2:https://cloud.example.com |
将实际域名的全部 A/AAAA 记录直接指向 VPS;没有可用 IPv6 时,不要留着指向其他机器的 AAAA 记录。首次签发证书时,Cloudflare 使用“仅 DNS”,不需要向部署器提供 Cloudflare API Token。
自行在服务商安全组和防火墙开放 TCP 80/443。若现有 Nginx、Caddy、Apache、Traefik 或其他服务占用了这些端口,部署器会停止,不会自动修改或关闭它们。HTTPS 配置说明
取消受管 CloudDrive2、使用已有外部 WebDAV 的模式,不强制配置本地网关的 HTTPS 入口;但必须填写 Bot 容器实际能够访问的目的地址。不能把这个例外套用到同机受管部署。部署后端源码
四、本地任务预算应该怎么设置?
两版源码默认:
1 | 本地任务预算:20GB |
这是表单默认值,不是对每台 VPS 的通用建议。连接成功后,点击“检测 VPS 并推荐”,再主动应用合适的方案:
| 操作 | 实际影响 |
|---|---|
| 检测 VPS 并推荐 | 只读探测资源并给出建议,不自动改表单 |
| 应用均衡值 | 为普通落盘与失败保留文件留出更多空间 |
| 应用流式优先值 | 减少完整落盘额度,更适合小硬盘 VPS |
例如约 2 核、1.9GB 内存、33GB 可用空间的实例,检测可能推荐流式优先 8GB/8GB。此时应采用自己的检测结果,不要因为教程写着默认 20GB/8GB 就强行改回去。
还要区分:
- 本地任务预算约束 Bot 为任务保存的本地文件。
- 磁盘保留线保护真实文件系统的安全空间。
- 网关缓存、镜像、备份和日志不会因为调小任务预算自动清空。
- 单文件超过本地预算会自动采用流式模式;仅因多个任务累积额度不足而排队,不等于所有任务都会自动转流式。
- 更改安装目录或 CloudDrive2 管理方式后,应重新检测。
部署器不会自动分区、格式化、扩容、挂载磁盘或迁移 Docker 数据目录。不要通过把安全线调到接近零来绕过资源检查。存储建议与流式边界
五、Windows 图形化部署完整流程
下面按首次受管安装整理。CloudDrive2 与 OpenList 的共同顺序是:
1 | 下载校验 → 测试 SSH → 填写 Telegram 与 WebDAV |
第一步:下载对应 Edition,并校验
从 GitHub Releases 下载所需 EXE 和 同一版本的 SHA256SUMS.txt。
在 Windows PowerShell 中按所下载版本执行:
1 | # CloudDrive2 Edition |
将输出与清单中对应文件的校验值比较,不要使用其他版本或自己以前构建的校验值。
v1.1.1 的 EXE 未提供商业代码签名,SmartScreen 可能提示“未知发布者”。确认来源与完整性,不要为运行程序关闭 Defender、Windows Security 或跳过安全检查。下载与发布说明
第二步:测试 SSH,核对服务器身份
填写 VPS 地址、端口、用户名与登录方式;非 root 且没有免密 sudo 时补充 sudo 密码,然后点击“测试 SSH”。
首次连接将弹出的主机密钥指纹与服务商控制台核对。连接成功后查看资源探测结果;连接失败先处理身份、网络或认证问题,不要连续点击部署。
第三步:填写 Telegram 与 WebDAV 参数
填写 Bot Token、API ID、API Hash 和本人数字 ID。
CloudDrive2 版预先确定专用 WebDAV 用户名与密码,稍后在网关后台创建同样的用户;同机受管安装保持默认 Docker 内网地址。
OpenList 版按照“配置 WebDAV”页记录本次生成的用户信息。部署器不会在关闭后自动保存表单密码,请存入自己的密码管理工具,尤其是首次管理员密码与随机 WebDAV 密码。
第四步:应用存储建议
确认安装目录、是否管理 CloudDrive2 容器、本地任务预算、磁盘保留线与时区。
点击“检测 VPS 并推荐”,主动应用均衡或流式优先建议。正式写入前还会复检,任一关键文件系统不安全时都会停止。
第五步:部署基础环境
点击“一键部署基础环境”,等待依赖下载、镜像构建与服务健康检查。
期间不要重复点击部署、网络修复或 WebDAV 验收。安装耗时受线路和 VPS 性能影响,不把文档中的参考时间理解成保证。
基础容器健康后,部署器会自动打开“HTTPS 管理入口”对话框;此时处于 “待配置 HTTPS”,还不能把它当作完整部署成功。
第六步:配置 HTTPS 管理入口
填写当前 Edition 的纯域名,例如 cloud.example.com,不带 https://、端口、路径或通配符。
先“检测环境”,再“配置 HTTPS”。可填写 Let’s Encrypt 联系邮箱;省略邮箱意味着无法接收到期提醒,不意味着不需要续期。
等待 DNS、端口、证书、Nginx 配置、HTTPS、HTTP 跳转、公开 WebDAV 阻断与后端回环监听检查通过。受管部署只有完成这些检查,主界面才显示“部署完成”。
第七步:登录网关并设置存储
通过“打开 CloudDrive2 域名”或“打开 OpenList 域名”进入管理页,按下一节完成网盘授权、目录和专用用户配置。
HTTPS 管理入口只代理管理界面,不能填到 Bot 的 WebDAV 地址中。公网 /dav 和 /dav/ 返回 403 是预期行为。
第八步:验收后再发送文件
执行“WebDAV 验收”,等待:
1 | TG2CLOUD_DESTINATION=OK |
通过后,向自己的 Bot 私聊发送一个小文件,再到网盘官方客户端检查位置、大小与可打开性。HTTPS 正常、容器 healthy、WebDAV 验收通过和真实文件成功,是不同层次的结果,不要混为一谈。首次部署流程、HTTPS 说明
六、两种网关分别怎样配置?
方案 A:CloudDrive2 Edition
同机受管部署的 Bot WebDAV 地址保持:
1 | http://tg2cloud-clouddrive2:19798/dav |
HTTPS 通过后,在自己的 CloudDrive2 管理页依次完成:
- 登录 CloudDrive2。
- 添加并授权自己的目标存储。
- 确认能够浏览目标目录。
- 开启 WebDAV。
- 创建与部署器配置一致的 TG2Cloud 专用 WebDAV 用户。
- 关闭只读,确认具备读取、写入、改名和删除能力。
目标路径只配置一次。以下以 115 的示例挂载名称说明:
| WebDAV 用户根目录 | 部署器中的相对子目录 | 最终文件位置 |
|---|---|---|
/115open/Telegram |
留空 | /115open/Telegram/文件名 |
/ 或更上层目录 |
115open/Telegram |
/115open/Telegram/文件名 |
115open 是示例,不是所有网盘都必须使用的名称。不要在用户根目录和相对子目录里重复填写同一段路径。
取消“在 VPS 上安装并管理 CloudDrive2 容器”后,代表使用外部 CloudDrive2;需要改成从 Bot 容器可达的真实 WebDAV 地址及现有凭据。容器里的 127.0.0.1 指向容器自身,不能随意拿宿主机回环地址替代。CloudDrive2 配置说明
方案 B:OpenList Edition
同机网关的内网地址为:
1 | http://tg2cloud-openlist:5244/dav/ |
HTTPS 通过后,在自己的 OpenList 中完成:
- 全新安装使用本次生成的首次管理员密码;已有实例使用原管理员凭据。
- 添加并授权目标存储,例如
115 Open。Cookie、Token 与 OAuth 信息只在自己的 OpenList 后台处理。 - 按“配置 WebDAV”页创建专用普通用户,使用完全相同的用户名和密码。
- 设置该用户的基本路径,授予目录列表、读取、创建/写入及删除能力。
- 回部署器执行真实 WebDAV 验收。
新装建议用户名为 tg2cloud,WebDAV 密码由部署器在本地生成,默认 28 位;只有明确点击“重新生成”才会改变当前会话值。首次管理员密码与 WebDAV 密码是两项不同配置。
首次管理员密码只在全新 OpenList 数据目录初始化时生效。重新部署不会自动重置已有实例;看到新生成的表单密码,不代表原管理员密码已经更换。
目标子目录默认留空,即写入专用用户的 WebDAV 根目录。需要时填写 Telegram 或 Media/Telegram 等相对路径,避免与用户基本路径重复。
从 v1.0.2 起,OpenList 版采用预留最终文件名后直接写入,不依赖 WebDAV MOVE 完成改名;不要照搬 CloudDrive2 的临时文件收尾步骤。
已有实例默认保留 VPS 当前完整 .env。明确选择覆盖表单时,还可选择“仍保留 VPS 当前 WebDAV 与管理员配置”,让原凭据在 VPS 内合并。如果确实要更换 WebDAV 凭据,就不能同时要求继续保留旧值,还必须在 OpenList 中同步修改。OpenList 配置与凭据说明、产品配置源码
七、HTTPS 与 WebDAV 验收分别证明什么?
HTTPS 自检与外部访问
部署器的 HTTPS 请求自检从 VPS 回环地址访问 Nginx,并使用真实域名校验证书,避免 NAT 回环限制产生误报。
本机自检通过,不等于公网 443 已经可达。 配置完成后,应从 Windows 浏览器或其他外部网络确认:
- HTTPS 管理页能够正常访问,证书无警告。
- HTTP 能跳转到相应 HTTPS 地址。
- 公网
/dav与/dav/返回 403。 - VPS 公网 IP 加 19798/5244 端口不能直接访问管理后台。
本机正常而外部失败时,先检查 DNS、安全组、防火墙与 Cloudflare 设置,不要通过公开后端端口或跳过证书校验来“修复”。HTTPS 自检与公网验收
WebDAV 真实写入验收
GUI 验收从 Bot 容器内使用当前运行配置,执行以下操作:
1 | 生成 256 字节随机测试文件 |
这是会写入和删除测试文件的操作,不是只读诊断。认证成功或能够列目录,都不能替代完整验收;写入成功但清理失败,也不算全部通过。
OpenList 界面会按 Bot、网关服务、认证、目录、写入、大小、最终落盘和清理逐项显示结果。失败后的未执行步骤不应被理解成通过,排错时先看第一处失败阶段。验收说明、验收源码
真实 Telegram 文件
WebDAV 通过之后,再依次安排适合自己环境的测试:
- 一个 5~20MB 小文件,先确认完整链路。
- 一个常用大小的普通落盘文件。
- 一个手动切换或超过预算的流式文件。
- Bot 重启后的任务恢复。
- 一个可删除测试任务的取消与远端清理。
这里是给使用者的验收建议,不是本文的实测记录。v1.1.1 的发布说明也明确:本轮未重新完成所有 OpenList Bot/WebDAV、401/429 恢复、长期续期和备份恢复的真实环境验收,不应把 HTTPS 检查扩大为所有业务已重测。版本验证范围
八、日常转存与 Bot 命令
向自己的 Bot 私聊发送 /start 或 /help,然后提交有权保存的文件。Bot 返回任务编号后,使用 /queue、/task 编号 和 /status 观察处理。
命令速查
下表中的 123 是示例,应替换为真实任务编号。
| 命令 | 用途与边界 |
|---|---|
/start、/help |
打开首页或帮助 |
/status、/performance |
查看运行状态、实时速度与任务统计 |
/queue、/queue 2 |
查看最近任务,每页 5 项 |
/task 123 |
查看单个任务详情与失败原因 |
/watch 123 |
每 5 秒编辑同一条进度消息;重启后需重新订阅 |
/pause、/resume |
持久暂停或恢复新任务调度,不中断活动传输 |
/retry 123 |
重试一个失败任务 |
/retry all |
一次重新排队最多 100 个可重试任务 |
/stream 123 |
将排队或下载失败任务切为流式模式 |
/doctor |
只读诊断,不创建远端测试文件 |
/orphans |
只读巡检疑似遗留的 .uploading-* 临时文件 |
/orphans clean |
获取一次性确认码,按提示显式清理 |
/cancel 123 |
清理并复查本任务远端路径后,再清理本地副本 |
输入框左侧的原生命令菜单注册 7 项常用命令:/status、/queue、/pause、/resume、/doctor、/orphans、/help。菜单注册失败时仍可手动发送文字命令。Bot 命令说明
取消和临时文件清理属于删除操作。 /cancel 不只是隐藏列表记录;它可能删除任务对应的临时与正式远端文件。只有确认远端清理完成,才继续删除本地副本并标记取消;失败时保留数据。/orphans clean 需要按 Bot 返回的有效确认码操作,不应当作只读查询。命令源码
首页和 VPS 资源页
/start、/status 与 /performance 打开同一个紧凑首页:
⏳:排队数量。⬇️:活动下载数量。⬆️:活动上传数量。❌:失败数量。
四项即使为零也显示,历史完成数量不放在首页。下方三个快捷按钮分别是 📋 任务列表、🖥 VPS 资源、🔄 原地刷新;CPU、内存、可用磁盘和本地额度放在资源页,不与 Bot 任务数量混在一起。
刷新编辑当前消息,不会不断发送新状态消息。流式速度同时出现在下载和上传方向,VPS 网络采样则是另一个指标,不能把三个数字相加当作端到端速度。状态与首页说明
“Bot 完成”怎么理解?
| 阶段 | 说明 |
|---|---|
| 排队 | 已持久保存,等待调度、资源与目的端条件 |
| 下载中 | 普通模式正在下载到 VPS |
| 流式传输中 | Telegram 数据进入 rclone/WebDAV 管道 |
| 上传中 | 普通模式将完整本地文件写入网关 |
| 清理中 | 远端检查通过,正在完成本地收尾 |
| Bot 完成 | Bot 负责的传输、大小复验和收尾完成 |
| 失败 | 按任务详情定位;普通模式可能保留完整本地文件 |
“Bot 完成”不等于网盘官方端已经确认最终保存,也不等于内容哈希一致。 CloudDrive2/OpenList 可能还有自身缓存或后续处理,Bot 没有查询所有上游网盘的官方完成接口。
当前不需要逐个执行人工确认命令。首次使用、更换存储或保存重要文件时,仍应通过网盘官方客户端检查大小与可打开性,需要更高完整性保证时自行比较文件哈希。完成边界、安全政策
九、转存速度怎么样?2GB 文件要多久?
至少区分三个阶段:
1 | Telegram → VPS |
VPS 标称“千兆带宽”不能保证每个阶段都达到相同速度。WebDAV 接收很快,也不代表上游网盘已经完成写入。
单阶段估算
假设文件为 2GB,按十进制约 2000MB 计算,持续有效速率固定,不考虑排队、检查和重试:
1 | 单阶段耗时 ≈ 文件大小 ÷ 有效速度 |
| 持续有效速度 | 2000MB 的单阶段估算耗时 |
|---|---|
| 1MB/s | 约 33 分 20 秒 |
| 2MB/s | 约 16 分 40 秒 |
| 5MB/s | 约 6 分 40 秒 |
| 10MB/s | 约 3 分 20 秒 |
这不是 TG2Cloud 的实测速度,也不是端到端承诺。MB/s 是每秒兆字节,不要与服务商标注的 Mbps 混淆;2GiB 也不等于这里按十进制计算的 2GB。
普通模式下,若 Telegram 下载为 5MB/s、随后写入 WebDAV 为 2MB/s,两个串行阶段约需:
1 | 2000 ÷ 5 + 2000 ÷ 2 = 1400 秒 |
实际还可能有排队、复验、重试和网关向上游云存储同步的时间。流式模式可以让部分阶段重叠,理想流水线仍受最慢环节约束,不能消除线路与网盘限速。
更有价值的记录方法
使用同一个测试文件,记录提交、开始下载、Bot 完成,以及网盘官方客户端可以打开的时间,结合 /status 的下载、上传与 VPS 网络指标观察瓶颈。
同时查看 VPS 套餐流量规则:服务商可能只计出站,也可能计算双向流量。上传文件经过服务器,不能因为没有下载到本地电脑就认为 VPS 不消耗流量。状态语义、部署准备
十、VPS 日常维护与程序升级
以下命令在 通过 SSH 登录后的 Linux VPS 执行,不是在 Windows 博客项目目录中执行。自定义安装位置时替换为实际路径。
运行状态与日志
1 | # CloudDrive2 Edition:查看状态 |
OpenList 使用自己的管理脚本:
1 | sudo /opt/tg2cloud-openlist/manage.sh status |
脚本日志有脱敏处理,分享前仍需人工检查文件名、地址及个人信息。容器 healthy 只表示基础运行与心跳正常,不能替代 WebDAV 写入验收。
重启、重建与升级不是一回事
| 操作 | CloudDrive2 | OpenList |
|---|---|---|
restart |
重启 Bot | 重启网关和 Bot |
restart-bot |
当前脚本不提供此独立命令 | 只重启 Bot |
restart-openlist |
不适用 | 只重启 OpenList |
update |
使用已安装 payload 重建 Bot | 拉取 Compose 固定的网关镜像并重建 Bot |
| 新版部署器重新部署 | 安装所下载版本的 TG2Cloud 代码 | 安装所下载版本的 TG2Cloud 代码 |
manage.sh update 不会从 GitHub 下载最新 TG2Cloud 源码;只下载新版 EXE 也不会自动更新 VPS 上的 Bot。 OpenList 的 update 拉取的是当前 Compose 固定的镜像,不是自动追随任意最新版本。CloudDrive2 管理脚本、OpenList 管理脚本
推荐升级顺序:
- 阅读新版本发布说明,处理队列与失败保留文件,安排维护窗口。
- 保存必要的私有备份,确认 Edition 和安装目录。
- 下载并校验新版部署器。
- 默认保留 VPS 当前
.env,重新执行“一键部署基础环境”。 - 检查 HTTPS 管理入口、服务健康和实际配置。
- 执行 WebDAV 验收,再用真实小文件检查链路。
- 稳定之后才评估旧回退点的清理。
重新部署识别到完整 TG2Cloud 安装时,默认保留配置、SQLite、rclone.conf 与持久数据;只有明确勾选“使用本页配置覆盖 VPS 当前 .env”,才会应用当前表单。更换目的账号或路径之前,应先处理已有任务,避免将旧任务发送到新目的端。升级说明
单独应用配置
将准备好的完整新配置保存在安装目录之外、仅自己可访问的绝对路径,再使用:
1 | sudo /opt/tg2cloud-clouddrive2/manage.sh apply-config /absolute/new-config.env |
/absolute/new-config.env 是示例路径,需要替换,系统不会自带这个文件。OpenList 换成对应 Edition 的脚本路径。
apply-config 会备份旧配置、预检、重建 Bot 并检查实际环境;失败时按脚本机制尝试恢复。单纯 restart 不会把 Windows 表单中的新密码应用到 VPS,也不能替代配置更新。
当前只有有限的内部失败回退,没有正式自动 Restore 或 Uninstall,不要因此省略独立备份。升级与配置边界
十一、备份包含哪些内容?
两版备份范围不同
| 项目 | CloudDrive2 内部升级备份 | OpenList 手动安全备份 |
|---|---|---|
程序与配置,含 .env、rclone.conf |
包含 | 包含 |
| TG2Cloud SQLite 一致性快照 | 可用时创建 | 可用时创建 |
| 网关状态 | 不含 CloudDrive2 状态目录 | 包含已初始化 OpenList 状态,排除临时文件与日志 |
| Bot 下载文件、日志 | 不包含 | 不包含 |
| 云端实际文件 | 不包含 | 不包含 |
| 共享 HTTPS 代理 | 不包含 | 不包含 |
CloudDrive2 当前没有手动“创建安全备份”的 UI,不要为它套用 OpenList 的 backup 命令。
OpenList 的日常管理区提供安全备份;脚本命令为:
1 | sudo /opt/tg2cloud-openlist/manage.sh backup |
该操作涉及短暂停止 Bot 与 OpenList以保护网关状态的一致性,结束后重新启动并检查健康。应安排维护窗口,不要在大量任务传输期间随意点击。备份说明
默认备份目录与历史保留
1 | /opt/tg2cloud-clouddrive2-backups |
只读盘点:
1 | sudo /opt/tg2cloud-clouddrive2/manage.sh backups |
部署会统计备份占用,超过 5GB 时提示,不会在升级中自动清空旧回退点。
下面是删除命令,不是查询命令;确认恢复点可用、Edition 正确,并完成升级后的真实文件检查后,才考虑执行:
1 | # 每类保留最新 5 份符合规则的备份,删除更旧的记录 |
脚本只处理本 Edition 备份目录中特定命名的普通文件,不清理旧 TG115 备份。不要扩大为手动删除整个 /opt。
HTTPS 代理必须独立备份
两版现有备份均不包含:
1 | /opt/tg2cloud-proxy |
至少独立保护以下内容:
state/domains.json:两个 Edition 的域名与后端映射。docker-compose.yml、nginx/nginx.conf、nginx/conf.d/:代理与续期配置。- 完整
certbot/letsencrypt/:证书、私钥、账户与续期状态,包括live/、archive/、renewal/。
live/ 中可能是符号链接,不能只复制链接而遗漏目标。备份前安排维护窗口,避免两个部署器同时修改代理,并暂停 Certbot 续期;结束后恢复续期并检查状态。代理备份本身不要求停止 Bot,但同时备份 Edition 数据时应遵守该数据的一致性要求。
目录、备份文件应限制访问权限,并私密保存;证书私钥与服务凭据不能上传公共仓库或 Issue。当前没有一键代理恢复,恢复应先在隔离环境检查归档、权限与映射,再验证 Nginx、本机 HTTPS、外部访问和续期,不能直接覆盖生产 /opt。代理独立备份与恢复边界
可读取的备份不等于已验证的恢复方案。 升级回退点、网关状态、失败保留文件和云端文件是不同数据,需要按自己的恢复目标分别保护。
十二、常见问题与排错顺序
Q:没有 Telegram Premium 能用吗?
部署准备项没有将 Premium 列为前提,不能把没有会员直接理解为不能部署。但文件能否发送、转发与读取,仍受 Telegram 规则、内容权限和实际账号条件影响。项目不承诺解除文件大小限制、复制限制或获得固定速度。
Q:没有域名还能按旧教程部署吗?
当前同机受管 CloudDrive2/OpenList 流程必须完成 HTTPS,不能把 v1.0.2 的 SSH 隧道按钮步骤当作 v1.1.1 的日常入口。底层固定端口隧道只保留兼容和故障恢复能力。
使用已有外部 WebDAV 的 CloudDrive2 模式是另一种部署分支,不要求配置本地管理容器 HTTPS,但需要真实可达的外部目的端,不能仅靠取消勾选来省略必需的存储服务。HTTPS 适用边界、部署后端源码
Q:本地电脑必须一直开着吗?
任务运行在 VPS,正常情况下不依赖 Windows 部署器持续开启。关闭电脑不会因此停止服务端传输;VPS、Bot、网关与网络仍需正常运行。
Q:一直排队,是不是卡住了?
先看 /status、/task 编号 与 /doctor,依次确认:
- 是否曾执行
/pause;暂停状态跨重启保留,需要时使用/resume。 - 本地额度、真实磁盘安全线与资源是否充足。
- 网关是否在线,存储挂载是否有效。
- 当前 WebDAV 凭据、目录和写入权限是否正确。
- 是否遇到目的端限流。
不要直接重装或盲目提高并发。读取状态使用只读诊断,需要写入检查时再执行 WebDAV 验收。
Q:普通任务失败后能否继续传?
持久队列恢复的是任务管理状态,不保证所有协议与故障都支持字节级断点续传。普通上传失败可能保留已经下载的完整本地文件;流式任务没有完整副本,中断后通常需要从头读取并重传。
先看 /task 编号 的失败原因,修复后再重试。/stream 适用于排队或下载失败任务,不是任意状态都能强制切换。
Q:401 Unauthorized 怎么处理?
优先核对 Bot 当前运行配置与专用 WebDAV 用户是否一致。已有安装默认保留 VPS .env,Windows 表单改了但没有应用,原凭据仍可能生效;仅重启不能完成配置更新。
明确应用配置后再做 check 和 verify。网络修复不能代替密码、用户或权限修正。
Q:429 Too Many Requests 要等多久?
这是限流信号,先暂停高频验收与批量重试,按服务端提示等待,不要通过反复改密码、创建用户或增加并发加压。
v1.1.1 的 OpenList 只读健康探测新增保护:
- 401 认证失败冷却 5 分钟。
- 429 从 60 秒逐步退避,连续限流最多延长至 15 分钟。
- 状态按钮刷新不会绕过冷却,成功探测短时间复用。
- 显式 WebDAV 写入验收不使用这套缓存。
这些是客户端保护间隔,不是服务端保证的解封时间,也不代表 CloudDrive2 采用相同策略。只下载新 EXE 不会让旧 VPS payload 自动获得修复,仍需明确升级。401/429 说明、v1.1.1 发布说明
Q:HTTPS 检查通过,浏览器却打不开?
本机自检和公网连通是两回事。检查全部 A/AAAA、安全组、防火墙、80/443 归属与 Cloudflare 模式。
填入的是纯域名,不能是 URL、IP 或通配符。后台端口仍保持回环监听,不要改成 0.0.0.0,也不要使用跳过 TLS 校验的访问方式。
Q:管理域名的 /dav 返回 403,是否异常?
这是预期阻断策略。公网入口只开放管理界面,Bot 使用 Docker 内网 WebDAV;不要把管理域名写入传输配置,也不要删除阻断规则来让验收通过。
Q:HTTPS 与证书以后怎样维护?
共享目录为 /opt/tg2cloud-proxy,容器为 tg2cloud-proxy-nginx 和 tg2cloud-proxy-certbot。Certbot 每 12 小时尝试续期,Nginx 每 6 小时安全重载证书;仍应检查续期状态与证书有效期,自动任务不是永不失效的保证。
更新一个 Edition 的域名应通过部署器配置并完成检查。移除一个域名只影响对应路由;移除最后一个后共享代理停止,证书文件默认保留。被移除的 Edition 会恢复“待配置 HTTPS”,这不是卸载 Bot。
v1.1.1 的共享事务锁用于保护配置和移除操作,遇到竞争提示应等待,不要手动删除锁文件。HTTPS 运维说明
Q:lookup tg2cloud-clouddrive2 或容器网络异常?
先核对 Bot 与受管网关是否在线并位于正确 Docker 网络。只有此类网络问题且符合部署器提示时,才使用“修复 CloudDrive2 网络”。
该操作不能修复 401、429、只读用户、云盘容量不足或 HTTPS 证书错误。检测到未知端口占用时,脚本会拒绝自动修改。
Q:能够列目录,却上传、改名或删除失败?
列表权限不等于写权限。CloudDrive2 需要读写、改名、删除;OpenList 当前至少需要列表、读取、写入、删除,不依赖 MOVE 收尾。
同时检查底层网盘配额、挂载授权、驱动限制和目标路径。尤其不要忽略验收末尾的删除失败,更不能递归删除整片目录来“清理现场”。WebDAV 排错
Q:密码正确,却提示 SSH 主机密钥变化?
重装系统或更换实例后,服务器主机密钥可能变化。应先通过服务商控制台核对当前 IP、服务器身份及旧/新指纹,确认变化合理后,再选择“更新并重新连接”。
当前主机记录位于 %APPDATA%\TG2Cloud-Deployer\known_hosts;不要清空整个记录文件来绕过校验,也不要接受原因不明的新密钥。
Q:磁盘看着足够,为什么部署器拒绝?
安装目录与 Docker 数据目录可能位于不同文件系统;总硬盘容量也不等于当前可用空间。检查安装盘、Docker 盘、下载、备份、保留线与 inode。
CloudDrive2 受管部署还需 /dev/fuse。无 FUSE 时先联系服务商确认,不要仅靠提高容器权限绕过条件。部署与排错说明
十三、旧 TG115 用户怎样迁移?
v1.1.1 不提供旧 TG115 的自动原地迁移,也没有声明旧队列和状态已完成真实环境迁移验收。
| Edition | 旧默认目录 | 新默认目录 |
|---|---|---|
| CloudDrive2 | /opt/tg115 |
/opt/tg2cloud-clouddrive2 |
| OpenList | /opt/tg115-openlist |
/opt/tg2cloud-openlist |
新部署使用独立目录、容器和网络,不自动接管、移动、覆盖、停止或删除旧资源。发现旧目录、已停容器或旧网络可能只提示;占用固定 19798/5244 端口、或目标新资源归属不明时会停止。
迁移前:
- 处理旧队列,记录需要保留的失败任务和下载文件。
- 使用旧项目的备份流程,私密保存配置、SQLite、网关状态与必要下载。
- 记录 WebDAV 根目录、相对子目录和实际权限。
- 不让新旧实例长期共用一个 Bot Token。
- 新环境通过 WebDAV 和真实文件验收前,保留旧环境与独立备份。
优先使用独立 VPS 部署新实例。必须复用同机时,在维护窗口人工处理旧端口占用;不要仅改名目录、直接复制数据库或混用旧 .env 来绕过检测。
内部保留的 tg115.db 文件名、部分 TG115_* 环境别名及兼容标记,不表示部署器会自动导入旧数据。确实需要延续队列时,应制定单独的迁移与回退方案,不把全新安装流程当作状态迁移。从 TG115 迁移
十四、安全与使用范围
自托管让你控制部署位置和配置,但不自动消除账号、数据与第三方组件风险。
- 仅处理自己有权保存、备份和使用的内容,遵守平台规则与适用要求。
- 不公开 SSH 私钥、VPS 密码、Bot Token、API Hash、WebDAV 密码、网盘 Cookie、OAuth Token 或 Telegram Session。
- 日志、数据库、截图与备份都可能含个人数据,分享前人工脱敏。
- 部署器不自动保存表单密码;
rclone obscure是混淆,不是加密,VPS root 仍可读取服务配置。 - 受管 CloudDrive2 使用 FUSE,Compose 中启用了
privileged和宿主 PID 命名空间,不能把 Bot 容器的非 root 限制等同于整个网关低权限。 - CloudDrive2 是第三方专有组件,其内部上传逻辑不在 TG2Cloud 源码审查范围内。建议与钱包、数据库等重要业务隔离。
- 管理域名公开的是登录界面,应使用强密码并保持组件更新;HTTPS 不代替后台鉴权。
- 19798/5244 只保持回环监听,不直接公开到互联网;Bot WebDAV 留在内网。
- 备份可能包含服务凭据与证书私钥,使用受限权限、安全传输并按需加密。
Bot 容器使用 UID/GID 10001、只读根文件系统、no-new-privileges 并移除 capabilities。这是降低风险的措施,不是对第三方网关或云存储的完整安全保证。安全政策、第三方组件说明、Compose 配置
附:需要自行构建部署器时
普通用户优先使用正式 Release。希望查看源码或自行构建时,可在有 Git 与所需构建环境的 Windows PowerShell 中使用固定标签:
1 | git clone --branch v1.1.1 --depth 1 https://github.com/LuoPoJunZi/TG2Cloud.git |
产物位于:
1 | dist/TG2Cloud-CloudDrive2-Deployer.exe |
自行构建的 EXE 与 Release 不必具有相同 SHA-256,不能拿官方校验值判断自己的构建。两版是独立入口,不在同一个 EXE 内切换后端;旧 Tkinter Classic 与 CMD 启动器已经不属于当前交付流程。构建依赖与运行时处理以标签中的 build.ps1、requirements-build.txt 为准。源码构建说明
写在最后
TG2Cloud 的价值,是把选好文件之后的排队、下载、上传、检查与收尾整理成一套可观察、可重试的流程,而不是承诺无限速、零成本或所有网盘都能秒传。
初次使用先让 HTTPS、WebDAV 和一个真实小文件走通,再逐步增加文件规模与并发。重要文件保留独立备份,分清 Bot 完成、网关接收和云端最终状态,才能更稳妥地使用这套工具。
项目与下载入口:LuoPoJunZi/TG2Cloud。再次感谢 whyhhh20/TG115 原作者及相关开源组件贡献者。
参考资料
功能与操作主要依据 v1.1.1 项目说明、发布说明、新手文档及对应标签源码;HTTPS、升级、备份、任务状态与迁移分别链接到具体章节来源。Telegram 凭据申请参考官方文档,速度计算为本文在明确假设下的算术估算。
资料整理日期:2026 年 10 月 1 日。本文不替代使用者的实际环境验收,也不把仓库记录的验证范围扩大成所有云存储、文件大小和恢复场景均已通过。




