Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

一款基于telegram bot的文件上传、分享、图床、网盘系统

License

Notifications You must be signed in to change notification settings

SkyDependence/tgDrive

Repository files navigation

tgDrive - 无限容量和速度的网盘

GitHub release (latest by date) GitHub Workflow Status Docker Pulls Docker Image Size GitHub stars GitHub forks GitHub issues GitHub license tg-qun Ask DeepWiki

tgDrive 是一款使用 Java 开发的基于 Telegram Bot 的网盘应用,支持不限容量和速度的文件存储。通过多线程技术和优化的传输策略,为用户提供高效、可靠的云存储解决方案。

目录

功能特点

核心功能

  • 🚀 突破限制:完全突破 Telegram Bot API 的 20MB 文件大小限制
  • 📈 多线程传输:采用多线程上传下载技术,最大化利用带宽资源
  • 🔗 外链支持:支持图片外链功能,可直接在浏览器中访问和预览
  • 🖼️ 图床集成:完美支持 PicGo 图床工具,提供便捷的图片托管服务
  • 🎯 GIF 优化:解决 Telegram 自动将 GIF 转换为 MP4 的问题
  • 🌐 WebDAV 支持:提供 WebDAV 接口,支持第三方客户端(如 WinSCP、AList)进行文件管理和操作

用户功能

  • 文件上传:支持拖拽上传、多文件上传、粘贴上传(Ctrl+V)
  • 文件管理:文件列表展示、文件预览、文件下载
  • 用户账户:用户注册、登录、密码修改
  • 进度跟踪:实时显示上传进度,支持 WebSocket 进度推送
  • 主题切换:支持亮色/暗色/跟随系统主题模式

管理员功能

  • 配置管理:Bot Token 配置、系统设置管理
  • 用户管理:用户列表查看、用户权限管理
  • 文件管理:所有文件统一管理、文件删除
  • 数据备份:数据库备份功能
  • 机器人保活:Telegram Bot 保活配置
  • WebDAV 配置:WebDAV 服务开关和权限配置
  • 系统监控:实时查看系统状态和运行情况

技术特性

  • 高性能:基于 Java 17+ 开发,确保稳定性和性能
  • 🐳 容器化:提供 Docker 支持,简化部署和维护流程
  • 💾 数据持久化:使用 SQLite 数据库,支持数据持久化存储
  • 🔄 API 支持:提供完整的 RESTful API 接口
  • 🔒 安全认证:基于 Sa-Token 的用户认证和权限管理
  • 📱 响应式设计:支持桌面端和移动端访问
  • 🌐 WebDAV 协议:完整的 WebDAV 协议实现,支持文件操作

快速开始

在线体验

相关资源

部署方式

Docker Compose 部署

Tip

📌 注意:如果服务器内存较小(RAM ≤ 512MB),建议使用 nanyangzesi/tgdrive:server-latest 镜像

  1. 创建 docker-compose.yml 文件:

    services:
    tgdrive:
     image: nanyangzesi/tgdrive:latest
     container_name: tgdrive
     ports:
     - "8085:8085"
     volumes:
     - ./db:/app/db
     restart: always
  2. 启动服务:

docker-compose up -d

更新镜像

使用数据卷挂载后,每次更新镜像时,只需拉取镜像并重新启动容器即可,数据库数据不会丢失:

docker compose pull
docker compose up -d

Docker 部署

基础部署命令:

docker pull nanyangzesi/tgdrive:latest
docker run -d -p 8085:8085 --name tgdrive --restart always nanyangzesi/tgdrive:latest

迁移之前的数据

如果您已经运行过项目,并在容器内生成了数据库文件,可以将这些数据手动迁移到主机的持久化目录中:

  1. 找到旧容器的 ID 或名称:

    docker ps -a
  2. 复制容器内的数据库文件到主机:

    docker cp <容器名或ID>:/app/db ./db
    • <容器名或ID> 替换为实际的容器标识。
    • 将容器内的 /app/db 文件夹内容复制到主机的当前目录下的 db 文件夹。
  3. 重新启动项目:

    使用更新后的 docker-compose.yml,重新启动项目:

    docker compose up -d
  4. 验证数据:

    启动后,项目应能够读取到主机 ./db 文件夹中的数据。

自部署

前置要求:

  • Java 17 或更高版本

部署步骤:

  1. 前往 release 页面 下载最新的二进制包。

  2. 进入下载的二进制包所在目录。

  3. 运行以下命令:

    java -jar [最新的二进制包名]

    例如:

    java -jar tgDrive-0.0.2-SNAPSHOT.jar
  4. 运行成功后,在浏览器中访问 localhost:8085 开始使用。

Render 部署

Tip

Render 免费部署需要银行卡认证。

步骤

  1. 创建一个 Web Service。

    创建 Web Service

  2. 选择 Docker 镜像,填入 nanyangzesi/tgdrive:latest

    镜像填写

  3. 选择免费实例。

    选择免费实例

  4. 滑动至页面底部,点击 Deploy Web Service 完成部署。

使用说明

访问你部署项目的网址后,会出现如下页面:

主页

点击管理界面,填写bot token:

image

bot token和chatID不知道如何获取?看这篇文章

填完后点击提交配置,下拉,选择你刚刚填写的配置文件加载,就能进行上传了:

image

进阶配置

WebDAV 配置

Tip

从 v0.0.8 开始支持WebDAV

AList 为例

  1. 点击首页的管理:

07d536381c29ac316f077743eab9c6ff

  1. 存储,添加:

309722142e517cb0398d2c7a44976317

  1. 驱动选择WebDAV:

a94e203172604e571bd069f27fa15b9b

  1. 配置填写:

e7d28472622282b771914ecb5094386c

地址填写:https://your.server.com/webdav

Tip

若tgdrvie和AList都运行在本地的docker容器里,地址填写http://host.docker.internal:8085/webdav/

用户名和密码:就是tgdrive的管理员账号和密码,默认为:admin 123456,你可以在tgdrive的管理页面更改密码(推荐)

填写完成后点击添加,回到主页,进入你刚刚填写的挂载的文件夹,开始使用吧!

PicGo 配置

Tip

从 v0.0.4 开始支持 PicGo。

本项目支持结合 PicGo 快速上传图片。

使用前准备

确保已安装 PicGo 插件 web-uploader

PicGo 配置页面

参数说明

  • API 地址:本地默认 http://localhost:8085/api/upload。服务器部署请修改为 http://<服务器地址>:8085/api/upload
  • POST 参数名:默认为 file
  • JSON 路径:默认为 data.downloadLink

PicGo 配置完成示例

反向代理

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 ; # 可以设置为你需要上传的文件的最大的大小
 }
}

支持与反馈

如果您觉得本项目对您有帮助,欢迎:

  • ⭐ 给项目点个 Star
  • 🔄 分享给更多的朋友
  • 🐛 提交 Issue 或 Pull Request

您的支持是项目持续发展的动力!

Star 趋势

Star History Chart

AltStyle によって変換されたページ (->オリジナル) /