tgDrive 是一款使用 Java 开发的基于 Telegram Bot 的网盘应用,支持不限容量和速度的文件存储。通过多线程技术和优化的传输策略,为用户提供高效、可靠的云存储解决方案。
- 🚀 突破限制:完全突破 Telegram Bot API 的 20MB 文件大小限制
- 📈 多线程传输:采用多线程上传下载技术,最大化利用带宽资源
- 🔗 外链支持:支持图片外链功能,可直接在浏览器中访问和预览
- 🖼️ 图床集成:完美支持 PicGo 图床工具,提供便捷的图片托管服务
- 🎯 GIF 优化:解决 Telegram 自动将 GIF 转换为 MP4 的问题
- ⚡ 高性能:基于 Java 17+ 开发,确保稳定性和性能
- 🐳 容器化:提供 Docker 支持,简化部署和维护流程
- 💾 数据持久化:支持数据持久化存储,确保数据安全
- 🔄 API 支持:提供完整的 RESTful API 接口
- 前端代码:tgDriveFront
- 最新版本:Releases
Tip
📌 注意:如果服务器内存较小(RAM ≤ 512MB),建议使用 nanyangzesi/tgdrive:server-latest
镜像
-
创建
docker-compose.yml
文件:services: tgdrive: image: nanyangzesi/tgdrive:latest container_name: tgdrive ports: - "8085:8085" volumes: - ./db:/app/db restart: always
-
启动服务:
docker-compose up -d
使用数据卷挂载后,每次更新镜像时,只需拉取镜像并重新启动容器即可,数据库数据不会丢失:
docker compose pull
docker compose up -d
基础部署命令:
docker pull nanyangzesi/tgdrive:latest
docker run -d -p 8085:8085 --name tgdrive --restart always nanyangzesi/tgdrive:latest
如果您已经运行过项目,并在容器内生成了数据库文件,可以将这些数据手动迁移到主机的持久化目录中:
-
找到旧容器的 ID 或名称:
docker ps -a
-
复制容器内的数据库文件到主机:
docker cp <容器名或ID>:/app/db ./db
- 将
<容器名或ID>
替换为实际的容器标识。 - 将容器内的
/app/db
文件夹内容复制到主机的当前目录下的db
文件夹。
- 将
-
重新启动项目:
使用更新后的
docker-compose.yml
,重新启动项目:docker compose up -d
-
验证数据:
启动后,项目应能够读取到主机
./db
文件夹中的数据。
前置要求:
- Java 17 或更高版本
部署步骤:
-
前往 release 页面 下载最新的二进制包。
-
进入下载的二进制包所在目录。
-
运行以下命令:
java -jar [最新的二进制包名]
例如:
java -jar tgDrive-0.0.2-SNAPSHOT.jar
-
运行成功后,在浏览器中访问
localhost:8085
开始使用。
Tip
Render 免费部署需要银行卡认证。
-
创建一个 Web Service。
-
选择 Docker 镜像,填入
nanyangzesi/tgdrive:latest
。 -
选择免费实例。
-
滑动至页面底部,点击 Deploy Web Service 完成部署。
访问你部署项目的网址后,会出现如下页面:
点击管理界面,填写bot token:
bot token和chatID不知道如何获取?看这篇文章
填完后点击提交配置,下拉,选择你刚刚填写的配置文件加载,就能进行上传了:
Tip
从 v0.0.4+ 开始支持 PicGo。
本项目支持结合 PicGo 快速上传图片。
确保已安装 PicGo 插件 web-uploader
。
- API 地址:本地默认
http://localhost:8085/api/upload
。服务器部署请修改为http://<服务器地址>:8085/api/upload
。 - POST 参数名:默认为
file
。 - JSON 路径:默认为
data.downloadLink
。
example.com {
reverse_proxy /api* localhost:8080 {
header_up X-Forwarded-Proto {scheme}
header_up X-Forwarded-Port {server_port}
}
}
{scheme}
:根据实际请求的协议(HTTP 或 HTTPS)填充。{server_port}
:自动获取客户端连接的端口(如 443)。
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;
}
}
如果您觉得本项目对您有帮助,欢迎:
- ⭐ 给项目点个 Star
- 🔄 分享给更多的朋友
- 🐛 提交 Issue 或 Pull Request
您的支持是项目持续发展的动力!