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

TG2Cloud:Telegram 文件自动转存到网盘,支持 CloudDrive2 与 OpenList
落魄君子TG2Cloud 可以把你提交给私人 Telegram Bot 的文件,自动排队并写入自己挂载的云存储。Windows 部署器负责安装和管理,VPS 负责执行任务,CloudDrive2 或 OpenList 负责连接网盘。
本文从首次部署讲到日常使用、升级、备份和卸载,重点说明每一步应该填写什么、何时才算成功,以及哪些操作会影响现有数据。原有的任务命令、速度估算、失败恢复和 TG115 迁移说明均保留。
项目仓库 · v1.2.0 下载与发布说明 · 新手使用说明 · Linux 安装 · 内网安装 · 卸载说明
本文于 2026 年 10 月 12 日对照 TG2Cloud v1.2.0 正式标签文档和源码更新;该正式版发布于 10 月 11 日。Windows EXE、VPS Bot、独立脚本是不同的更新对象,下载新 EXE 不会自动升级 VPS。
卸载前必须核对脚本来源: v1.2.0 标签版默认保留数据;截至本文更新时,主分支在线卸载入口已经追加默认完整清理,可能包含本地实例数据和可识别备份。本文安装与卸载命令固定到 v1.2.0 入口,不把移动的
main当作同一行为。正式发布说明、主分支卸载变更公网受管部署仍需 HTTPS;新增内网 HTTP 是独立入口,不是给公网服务跳过 HTTPS 的开关。文中的速度计算是估算,不是实测成绩。
项目来源与致谢: TG2Cloud 基于 whyhhh20/TG115 二次开发,沿用 MIT 许可证并保留原作者版权信息。感谢原作者与相关开源组件的贡献者。它是对原项目的持续完善,不是从零开发的替代叙述;来源与许可见仓库说明和许可证。
先按使用环境选择阅读路线:
| 你的环境 | 使用入口 | 管理方式与限制 |
|---|---|---|
| 有 Windows 电脑,部署到公网 VPS | 对应 Edition 的 EXE | 按第五节完成 HTTPS、WebDAV 与真实文件验收 |
| 没有 Windows 电脑,使用公网 Linux VPS | install.sh |
仍需管理域名与 HTTPS,不是免域名安装 |
| 可信局域网中的 Linux 主机或符合条件的 NAS 虚拟机 | install-lan.sh |
使用本机私有 IPv4 与 HTTP;禁止公网端口转发 |
| 已经在运行,只想更新或排错 | 现有部署器与 manage.sh |
先看实际运行版本和诊断,不要先卸载重装 |
两个 Windows EXE 仍是主力产品,新增脚本不是第三个 EXE,也不会把已有 HTTPS 实例自动改成内网 HTTP。版本说明
一、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 冷却 |
v1.1.2 |
区分部署器与 Bot 实际版本,新增共享代理备份、核验、隔离演练与续期诊断 |
v1.1.3 |
新增 Linux VPS 安装/保留配置升级入口 |
v1.1.4 |
修复终端交互与候选镜像权限,新镜像统一内部程序与日志名称 |
v1.1.5 |
完善 HTTPS 取消回退、Python 3.10 维护兼容和续做凭据展示 |
v1.2.0 |
新增独立内网安装与独立卸载向导;公网 HTTPS 和传输核心保持原有规则 |
这些变化并不意味着每一版都重新验证了全部 Telegram、网盘、NAS 和恢复场景。v1.2.0 记录了 CloudDrive2 内网 Debian 首次部署与 WebDAV 验收日志,但没有据此确认 OpenList 内网、其他 NAS、跨版本回退或真实卸载全部通过。版本记录、本次验证范围
主分支还可能独立更新脚本或修复业务代码,而不立即新建 Release。本文将这类变更单独标注,不把“产品版本仍为 v1.2.0”理解为所有在线脚本与标签内容都相同。
三、部署之前需要准备什么?
1. VPS 与本地电脑
| 项目 | 基础参考 | 注意事项 |
|---|---|---|
| VPS | 2 核 CPU、4GB 内存、50GB SSD | 批量使用可参考 4 核、8GB、80~100GB,最终按实时检测设置 |
| 系统 | Ubuntu 22.04/24.04、Debian 12 的 64 位版本 | 原部署环境列出 x86_64、ARM64;独立 Linux 向导目前只面向 Debian/Ubuntu x86_64 |
| 权限 | 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 容器实际能够访问的目的地址。不能把这个例外套用到公网同机受管部署。部署后端源码
v1.2.0 的可信内网安装使用独立 install-lan.sh,无需域名,但需要运行脚本的 Linux 主机拥有有效私有 IPv4。它不是 Windows 部署器中的“关闭 HTTPS”选项,也不用于接管已有公网实例。内网安装边界
四、本地任务预算应该怎么设置?
两版源码默认:
1 | 本地任务预算:20GB |
这是表单默认值,不是对每台 VPS 的通用建议。连接成功后,点击“检测 VPS 并推荐”,再主动应用合适的方案:
| 操作 | 实际影响 |
|---|---|
| 检测 VPS 并推荐 | 只读探测资源并给出建议,不自动改表单 |
| 应用均衡值 | 为普通落盘与失败保留文件留出更多空间 |
| 应用流式优先值 | 减少完整落盘额度,更适合小硬盘 VPS |
例如约 2 核、1.9GB 内存、33GB 可用空间的实例,检测可能推荐流式优先 8GB/8GB。此时应采用自己的检测结果,不要因为教程写着默认 20GB/8GB 就强行改回去。
还要区分:
- 本地任务预算约束 Bot 为任务保存的本地文件。
- 磁盘保留线保护真实文件系统的安全空间。
- 网关缓存、镜像、备份和日志不会因为调小任务预算自动清空。
- 单文件超过本地预算会自动采用流式模式;仅因多个任务累积额度不足而排队,不等于所有任务都会自动转流式。
- 更改安装目录或 CloudDrive2 管理方式后,应重新检测。
部署器不会自动分区、格式化、扩容、挂载磁盘或迁移 Docker 数据目录。不要通过把安全线调到接近零来绕过资源检查。存储建议与流式边界
五、Windows 图形化部署完整流程
下面按 Windows 部署器首次公网受管安装整理。CloudDrive2 与 OpenList 的共同顺序是:
1 | 下载校验 → 测试 SSH → 填写 Telegram 与 WebDAV |
第一步:下载对应 Edition,并校验
从 GitHub Releases 下载所需 EXE 和 同一版本的 SHA256SUMS.txt。
在 Windows PowerShell 中按所下载版本执行:
1 | # CloudDrive2 Edition |
将输出与清单中对应文件的校验值比较,不要使用其他版本或自己以前构建的校验值。
v1.2.0 的 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 已于 2025 年 6 月 4 日停止该服务。续期仍需监测,具体看部署器的证书有效期、续期记录与告警。官方公告
等待 DNS、端口、证书、Nginx 配置、HTTPS、HTTP 跳转、公开 WebDAV 阻断与后端回环监听检查通过。受管部署只有完成这些检查,主界面才显示“部署完成”。
第七步:登录网关并设置存储
通过“打开 CloudDrive2 域名”或“打开 OpenList 域名”进入管理页,按下一节完成网盘授权、目录和专用用户配置。
HTTPS 管理入口只代理管理界面,不能填到 Bot 的 WebDAV 地址中。公网 /dav 和 /dav/ 返回 403 是预期行为。
第八步:验收后再发送文件
执行“WebDAV 验收”,等待:
1 | TG2CLOUD_DESTINATION=OK |
通过后,向自己的 Bot 私聊发送一个小文件,再到网盘官方客户端检查位置、大小与可打开性。HTTPS 正常、容器 healthy、WebDAV 验收通过和真实文件成功,是不同层次的结果,不要混为一谈。首次部署流程、HTTPS 说明
补充:Linux 命令行与内网部署
以下命令在目标 Linux 主机的交互式 Bash 终端运行,不是在 Windows 博客目录里执行。独立脚本目前面向 Debian/Ubuntu x86_64、root、Python 3.10+;还需可用的 curl、CA 证书和网络。CloudDrive2 的 FUSE、磁盘与权限要求仍然存在。
脚本会执行远程代码,使用前应核对仓库与来源;不愿直接执行时,先下载到未占用的文件名,查看内容后再运行。不要使用 curl | bash,也不要将密码、Token 或 API Hash 写入命令参数。
本文统一使用 v1.2.0 的固定入口。固定入口不等于永久锁定 Bot 版本:安装向导仍读取执行时的最新正式稳定 Release,需核对它展示的目标版本、变更计划和确认提示。脚本版本边界
公网 VPS:仍然需要域名和 HTTPS
先选择一个 Edition,只读预检,再决定是否安装/升级;不要把下面两版都执行一遍。
1 | # CloudDrive2:先预检,不安装或升级 |
OpenList 使用对应入口:
1 | bash <(curl -fsSL https://raw.githubusercontent.com/LuoPoJunZi/TG2Cloud/v1.2.0/install.sh) --edition openlist --check |
首次安装会收集域名、Telegram、WebDAV 和预算信息;完整已有实例则核对官方源码、Compose 身份、运行版本及持久化挂载,生成保留配置的升级计划。未知残留、旧 TG115、手改代码或网关镜像变化时可能停止,不提供强制接管。
--check 不修改运行实例,但仍会联网读取 Release、下载到临时目录。它不等于安装成功,更不等于 WebDAV 或真实 Telegram 转存通过。脚本确认默认取消,只有你明确同意计划后才执行。公网脚本完整说明
可信内网:使用独立入口,不是关闭公网 HTTPS
内网入口适合符合条件的 Linux 主机或 NAS 内的 Debian/Ubuntu 虚拟机,不承诺原生适配 DSM、QTS、Unraid、OpenWrt、ARM NAS 或 Docker Desktop。已有 Docker 需满足 rootful Docker Engine 28+、Compose v2,不自动升级旧引擎或重启其他 NAS 容器。
使用运行脚本的 Linux 主机自己的 IPv4。支持 10.x.x.x、172.16.x.x—172.31.x.x 和 192.168.x.x,不能填宿主 NAS 或其他电脑的地址来代替虚拟机地址。
下面的 192.168.26.5 只是示例,必须替换:
1 | # CloudDrive2 内网只读预检 |
OpenList 将两条命令中的 clouddrive2 换成 openlist。后续升级复用已保存的地址,不用 --lan-ip 隐式迁移 IP;建议预先设置 DHCP 地址保留或静态 IP。
| Edition | 内网管理页示例 | 后端保持 | 独立入口容器 |
|---|---|---|---|
| CloudDrive2 | http://192.168.26.5:19798 |
127.0.0.1:19798 |
tg2cloud-lan-cd2 |
| OpenList | http://192.168.26.5:5244 |
127.0.0.1:5244 |
tg2cloud-lan-openlist |
独立 Nginx 只监听指定私有 IPv4,不占用 80/443,也不将原网关后端改成 0.0.0.0。管理入口依然阻断 /dav,Bot 的 Docker 内网 WebDAV 地址不变。
HTTP 不加密,只适合可信内网。 不做公网端口转发、不启用 UPnP 暴露入口、不挂到公网反代;内网部署仍需访问 GitHub、镜像仓库、Telegram 与目标云存储,不是离线安装。也不能用这个脚本把现有 HTTPS 实例转换成 HTTP。内网支持范围与限制
内网入口通过之后,还要做两次验收
向导通过基础与入口检查后,会再次显示完整管理地址。先从另一台内网电脑打开管理页,挂载云存储并创建对应的 WebDAV 用户,完成后再同意写入验收。
1 | TG2CLOUD_LAN_BASE=OK |
这些标记只说明本机基础服务、入口与阻断检查通过。还需单独验证另一台电脑可访问、WebDAV 可写入并清理、真实 Telegram 文件可转存,不能将 HTTPS=NOT_APPLICABLE 当作公网 HTTPS 检查通过。
暂时没有配置好网关时,验收选择 N;之后可单独执行,不需要重新安装:
1 | bash <(curl -fsSL https://raw.githubusercontent.com/LuoPoJunZi/TG2Cloud/v1.2.0/install-lan.sh) --edition clouddrive2 --verify |
OpenList 换成 --edition openlist。写入验收仍要求确认,会创建并删除随机测试文件。随后再发送一个真实小文件,在网盘官方客户端核对。内网验收步骤
内网模式记录位于 /opt/tg2cloud-lan/<edition>/,不包含在原 payload 备份中;需要独立保护。不要让 EXE、公网向导、内网向导或另一个终端同时操作同一实例。
六、两种网关分别怎样配置?
方案 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.2.0 发布说明列出了本轮新增脚本与隔离 CI 检查的范围,并保留真实环境待验收项。CloudDrive2 内网日志不代表 OpenList、其他 NAS、Telegram 转存、真实卸载和恢复流程均已重测。版本验证范围
八、日常转存与 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 博客项目目录中执行。自定义安装位置时替换为实际路径。
先对照本机部署器与 VPS Bot 的版本
点击部署器的“查看运行状态”,分别核对 部署器版本与正在运行的 VPS Bot 版本。未安装、Bot 已停止、旧版本无法报告或探测失败时,应按提示处理,不能拿本机 EXE 的版本代替服务器版本。
v1.1.2 起,部署/HTTPS 日志会显示实际执行阶段;失败时先看第一处有效错误及对应阶段,不凭进度条猜测 DNS、证书或密码问题。版本较旧时按保留配置升级,不通过卸载重装来完成更新。运行维护说明
运行状态与日志
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;v1.2.0 已提供独立卸载脚本,二者不能混为一谈。升级不需要先卸载,任何升级或删除操作前都应准备独立备份。升级与配置边界、独立卸载说明
十一、备份包含哪些内容?
两版备份范围不同
| 项目 | CloudDrive2 内部升级备份 | OpenList 手动安全备份 |
|---|---|---|
程序与配置,含 .env、rclone.conf |
包含 | 包含 |
| TG2Cloud SQLite 一致性快照 | 可用时创建 | 可用时创建 |
| 网关状态 | 不含 CloudDrive2 状态目录 | 包含已初始化 OpenList 状态;临时目录与日志的排除效果需核对归档和实际版本 |
| Bot 下载文件、日志 | 不包含 | 不包含 |
| 云端实际文件 | 不包含 | 不包含 |
| 共享 HTTPS 代理 | 不包含 | 不包含 |
发布版本与主分支要分开看: 2026 年 10 月 12 日的主分支提交修复了 OpenList 的镜像回退引用、SQLite 快照验证/替换、升级时网关状态的一致性,以及归档临时目录和日志的排除规则。这些修改尚未形成新正式 Release,不能视为 v1.2.0 EXE 或标签 payload 已包含。修复提交
OpenList 升级前,应另行保护数据库、网关状态和所需下载文件,核对备份内容并评估恢复方案。不要把“归档能够打开”或有限回退提示直接当作生产恢复已验证,也不要单独拼接主分支脚本到旧安装来绕过版本校验。
CloudDrive2 当前没有手动创建 Edition 业务安全备份的 UI,不要为它套用 OpenList 的 backup 命令。共享 HTTPS 代理备份是另一项维护功能,两版都可使用。
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 代理必须独立备份
两版 Edition 业务备份均不包含:
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。代理独立备份与恢复边界
可读取的备份不等于已验证的恢复方案。 升级回退点、网关状态、失败保留文件和云端文件是不同数据,需要按自己的恢复目标分别保护。
共享代理维护工具已经可用
v1.1.2 起,可在“HTTPS 管理入口”对话框底部进入“维护工具”。它操作整个共享代理,并不只包含当前 Edition:
| 工具 | 用途与边界 |
|---|---|
| 备份共享代理 | 保存两个 Edition 的域名映射、Nginx/Compose 配置及完整证书状态,不停止 Bot |
| 核验最近或历史备份 | 检查归档 SHA-256、文件清单与内部校验,不等于服务恢复成功 |
| 隔离恢复演练 | 解包到私密测试目录并清理,不覆盖生产配置、不启动服务 |
| 续期演练(dry-run) | 测试当前域名的 ACME 续期,不替换正式证书;仍可能产生测试账户与日志 |
| 管理历史代理备份 | 先预览拟删清单,再二次确认;至少保留一份,清单变化需重新预览 |
工具将备份及校验文件保存在 VPS 的 /opt/tg2cloud-proxy-backups/,目录权限 700、文件权限 600。它不会自动把备份下载到本地,也不会自动删除历史备份,仍需自行安排离机私密保存和空间管理。
续期演练、备份、历史清理不能当作全都只读的操作。遇到 SSH 中断或清理未确认时,应重新连接核对;不要反复启动操作。经工具成功隔离解包也只代表内容可读,当前仍无一键覆盖生产代理的 Restore。代理维护工具
若是独立内网部署,还要另行备份 /opt/tg2cloud-lan/<edition>/;代理 HTTPS 备份并不替代该内网模式记录。
十二、常见问题与排错顺序
Q:没有 Telegram Premium 能用吗?
部署准备项没有将 Premium 列为前提,不能把没有会员直接理解为不能部署。但文件能否发送、转发与读取,仍受 Telegram 规则、内容权限和实际账号条件影响。项目不承诺解除文件大小限制、复制限制或获得固定速度。
Q:没有域名还能按旧教程部署吗?
公网同机受管 CloudDrive2/OpenList 流程仍必须完成 HTTPS,不能把 v1.0.2 的 SSH 隧道按钮步骤当作 v1.2.0 的日常入口。底层固定端口隧道只保留兼容和故障恢复能力。
可信局域网可使用独立 install-lan.sh,无需域名,但它要求符合条件的 Linux 主机、私有 IPv4 和未被公网转发的 HTTP 入口,不自动转换已有 HTTPS 实例。内网安装说明
使用已有外部 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 采用相同策略。v1.1.2 起,OpenList /doctor 会显示实际探测时间、冷却状态及下次允许探测的剩余时间;消息刷新时间不等于重新探测时间。只下载新 EXE 不会让旧 VPS payload 自动获得修复,仍需明确升级。401/429 说明、运行诊断
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 小时安全重载证书;检查成功不等于已签发新证书。
部署器将续期检查、成功记录、证书实际变化和预计下次检查时间分开显示,时间统一为 UTC。证书剩余不足 22 天会提醒;最近自动续期失败,或已有记录超过 26 小时未更新时,会显示“HTTPS 可用,续期待检查”。即时 HTTPS 仍健康时管理入口可以保持可用,但并不表示续期故障已解决。旧实例没有记录显示“尚无记录”,不能直接当作续期失败。
使用维护工具的 dry-run 检查续期能力,并持续观察真实记录。单次演练通过不是长期自动续期验收;填写邮箱也不会恢复已停止的 Let’s Encrypt 到期邮件。续期运维说明、官方公告
更新一个 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.2.0 仍不提供旧 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 保持回环监听,不直接公开到互联网;独立内网入口只绑定核对后的私有 IP,HTTP 不加密,禁止公网端口转发。Bot WebDAV 始终使用容器可达的内部地址。
- 备份可能包含服务凭据与证书私钥,使用受限权限、安全传输并按需加密。
Bot 容器使用 UID/GID 10001、只读根文件系统、no-new-privileges 并移除 capabilities。这是降低风险的措施,不是对第三方网关或云存储的完整安全保证。安全政策、第三方组件说明、Compose 配置
十五、卸载前先预检,分清“停服务”和“删数据”
只想升级版本或排错,不要先卸载。 先处理活动传输,并把必要备份保存到计划清理的目录之外;卸载不会把已安装 APT 软件包、Docker 缓存、系统日志或 DNS 设置自动还原成安装前状态。
先确认你运行的是哪个入口
| 来源 | 不带清理参数时的行为 | 保留数据的方式 |
|---|---|---|
| 本文固定的 v1.2.0 标签版 | 移除所选受管运行资源和入口,默认保留实例数据、证书及历史备份 | 使用默认模式,不加 --purge-data |
| 截至 2026-10-12 的主分支增强版/在线入口 | 默认完整清理,可包含实例数据、证书与可识别的历史备份 | 必须明确使用 --keep-data |
主分支新增的 --purge-all、--keep-data 与标签版不是同一套默认行为。不能只看 EXE 上显示的 v1.2.0,就推断从 main 下载的卸载脚本仍会保留数据。 下面命令固定标签入口;如改用主分支,先重新阅读其计划、清理模式和确认口令。v1.2.0 卸载说明、主分支增强版说明
v1.2.0:先只读预检,再决定是否移除运行资源
在目标 Linux 的交互式 Bash 终端中,以 root 运行:
1 | # 只读预检两套标准实例,不执行卸载 |
预检完成并不等于卸载成功。核对展示的容器、网络、路由、数据保留范围,再选择实际要卸载的一版:
1 | # 只移除 CloudDrive2 Edition;固定标签版默认保留业务数据 |
OpenList 换成 --edition openlist;确实要同时移除两套才使用 --edition all。操作默认取消,确认前不会执行计划。
卸载所选 Edition 会处理其 Bot、网关、项目网络以及 HTTPS 路由或 LAN 入口。另一 Edition 的路由保留;没有剩余 HTTPS 路由时才处理受管共享代理。不会卸载系统 Docker/Nginx、清理其他容器、旧 TG115、云端文件或全局镜像缓存。
删除本地实例数据是另一个选择
标签版默认保留的数据包括 .env、Session、SQLite、下载、日志及网关授权状态。下面不是普通卸载,更不是备份恢复命令:只有确认这些数据不再需要、独立备份可用后,才考虑 --purge-data。
1 | # 标签版:仅预览同时删除本地实例数据的范围 |
单 Edition 的口令对应 DELETE clouddrive2 或 DELETE openlist。标签版 --purge-data 仍保留历史备份;主分支默认完整清理/--purge-all 则可能删除可识别备份,且使用 DELETE ALL … 口令。三者不能混为一谈。
发现未知归属、外部目录引用、链接、网络被其他容器使用或 CloudDrive2 FUSE 挂载时,脚本可能拒绝删除;不要通过手动递归删除 /opt 或全局 Docker prune 绕过保护。清理范围与保护条件
失败或中断后,先重新核对状态
| 标记 | 能说明什么 |
|---|---|
TG2CLOUD_UNINSTALL_CHECK=OK |
预检通过,尚未卸载 |
TG2CLOUD_UNINSTALL_RESULT=OK |
所选运行资源与入口的卸载后检查通过,数据去留仍以计划为准 |
CANCELLED |
本次确认取消,不执行计划 |
FAILED、INTERRUPTED |
可能已部分执行,需要重新预检和核对,不能假定全部恢复 |
标签发布说明未将真实 VPS/NAS 卸载列为已完成验收。主分支记载的原保留数据卸载用户反馈,也不等于新增完整清理、另一 Edition 或所有 NAS 场景已经通过。不要把重要生产数据作为第一次删除测试。验证范围、增强版验证边界
manage.sh 没有 uninstall 子命令,install.sh 也没有 --uninstall。单纯 Compose 停止/移除容器不处理全部共享代理与 LAN 入口,不能当作完整卸载。独立脚本与运行维护边界
附:需要自行构建部署器时
普通用户优先使用正式 Release。希望查看源码或自行构建时,可在有 Git 与所需构建环境的 Windows PowerShell 中使用固定标签:
1 | git clone --branch v1.2.0 --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 或可信内网 HTTP)、WebDAV 和一个真实小文件走通,再逐步增加文件规模与并发。重要文件保留独立备份,分清 Bot 完成、网关接收和云端最终状态,才能更稳妥地使用这套工具。
项目与下载入口:LuoPoJunZi/TG2Cloud。再次感谢 whyhhh20/TG115 原作者及相关开源组件贡献者。
参考资料
功能与操作主要依据 v1.2.0 项目说明、发布说明、新手文档及对应标签源码;Linux、内网、卸载和维护能力另对照各自专项文档。主分支卸载增强和 OpenList 备份修复使用独立的固定提交链接,明确区别于已发布标签。Telegram 凭据申请与证书提醒参考官方文档,速度计算仍为本文在明确假设下的算术估算。
资料整理日期:2026 年 10 月 12 日。本文不替代使用者的实际环境验收,也不把仓库记录的验证范围扩大成所有云存储、文件大小和恢复场景均已通过。




