tgDrive 是一款使用 Java 开发的基于 Telegram Bot 的网盘应用,支持不限容量和速度的文件存储。通过多线程技术和优化的传输策略,为用户提供高效、可靠的云存储解决方案。 目录
功能特点
核心优势
- 🚀 突破限制:完全突破 Telegram Bot API 的 20MB 文件大小限制
- 📈 多线程传输:采用多线程上传下载技术,最大化利用带宽资源
- 🔗 外链支持:支持图片外链功能,可直接在浏览器中访问和预览
- 🖼️ 图床集成:完美支持 PicGo 图床工具,提供便捷的图片托管服务
- 🎯 GIF 优化:解决 Telegram 自动将 GIF 转换为 MP4 的问题
- 🌐 WebDAV 支持:提供 WebDAV 接口,允许第三方程序进行文件管理和操作,增强文件交互的灵活性
技术特性
- ⚡ 高性能:基于 Java 17+ 开发,确保稳定性和性能
- 🐳 容器化:提供 Docker 支持,简化部署和维护流程
- 💾 数据持久化:支持数据持久化存储,确保数据安全
- 🔄 API 支持:提供完整的 RESTful API 接口
- 🌐 WebDAV 支持:提供基本的 WebDAV 接口
快速开始
在线体验
相关资源
部署方式
Docker Compose 部署
Tip 📌 注意:如果服务器内存较小(RAM ≤ 512MB),建议使用 nanyangzesi/tgdrive:server-latest 镜像
docker-compose up -d
更新镜像
使用数据卷挂载后,每次更新镜像时,只需拉取镜像并重新启动容器即可,数据库数据不会丢失: docker compose pulldocker compose up -d
Docker 部署
基础部署命令: docker pull nanyangzesi/tgdrive:latestdocker run -d -p 8085:8085 --name tgdrive --restart always nanyangzesi/tgdrive:latest
迁移之前的数据
Tip 0.0.9版本开始,您可以直接在管理界面进行下载数据库和恢复数据库中的文件数据
如果您已经运行过项目,并在容器内生成了数据库文件,可以将这些数据手动迁移到主机的持久化目录中: 找到旧容器的 ID 或名称: docker ps -a
复制容器内的数据库文件到主机: docker cp <容器名或ID>:/app/db ./db
自部署
前置要求: 部署步骤: 进入下载的二进制包所在目录。 运行以下命令: java -jar [最新的二进制包名]
例如: java -jar tgDrive-0.0.2-SNAPSHOT.jar
Render 部署
Tip Render 免费部署需要银行卡认证。
步骤
使用说明
访问你部署项目的网址后,会出现如下页面:
Tip 0.0.9版本开始,所有页面都需要登入,不同的是,分为管理员账号和游客账号,游客只能进入上传页面,游客账号visitor,密码111111
点击管理界面,填写bot token: bot token和chatID不知道如何获取?看 这篇文章填完后点击提交配置,下拉,选择你刚刚填写的配置文件加载,就能进行上传了: 进阶配置
WebDAV 配置
Tip 从 v0.0.8 开始支持WebDAV
以 AList 为例
Tip
用户名和密码:就是tgdrive的管理员账号和密码,默认为:admin 123456,你可以在tgdrive的管理页面更改密码(推荐) 填写完成后点击添加,回到主页,进入你刚刚填写的挂载的文件夹,开始使用吧! PicGo 配置
Tip 从 v0.0.4 开始支持 PicGo。
使用前准备
确保已安装 PicGo 插件 web-uploader。 参数说明
- API 地址:本地默认 http://localhost:8085/api/upload。服务器部署请修改为 http://<服务器地址>:8085/api/upload。
- POST 参数名:默认为 file。
- JSON 路径:默认为 data.downloadLink。
反向代理
Caddy 配置
example.com { # 启用 HTTPS(Caddy 会自动获取并管理 SSL 证书) reverse_proxy / http://localhost:8085 { # 设置代理头 header_up Host {host} # 保持客户端原始请求的 Host header_up X-Real-IP {remote} # 客户端的真实 IP header_up X-Forwarded-For {remote} # X-Forwarded-For 请求头,标识客户端 IP header_up X-Forwarded-Proto {scheme} # 客户端的协议(http 或 https) header_up X-Forwarded-Port {port} # 客户端的端口号 }}
NGINX 配置
server { listen 443 ssl; server_name example.com; location / { proxy_pass http://localhost:8085; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; client_max_body_size 100M ; # 可以设置为你需要上传的文件的最大的大小 }}
|