Telegram Drive
Telegram Drive 是一个强大的工具,可以帮助您组织 Telegram 文件并实现更多功能。
点击图标加入 Discord 服务器
功能特点
- 用户界面: 基于 Material You 设计,创造美观的 UI 主题。
- 安全性: 使用强大的加密技术保护您的数据。
- 灵活部署: 可使用 Docker Compose 或无需 Docker 部署。
相比其他解决方案的优势
-
卓越速度: Teldrive 采用 Go 语言实现,以其效率著称,性能超越用 Python 和其他语言编写的替代方案,仅次于 Rust。
-
增强的管理能力: Teldrive 不仅速度出色,还提供直观的用户界面,实现高效的文件交互,这是其他工具所缺乏的。与 Rclone 的兼容性进一步增强了文件管理功能。
[!重要] Teldrive 作为 Telegram 账户的封装工具,简化了文件访问。但用户必须遵守 Telegram API 的限制。Teldrive 不对违反这些 API 限制所造成的任何后果负责。如果滥用 Telegram API,您将立即被封禁。
更多图片
一键安装器
Linux
curl -sSL https://instl.vercel.app/divyam234/teldrive/linux | bash
Windows
iwr https://instl.vercel.app/divyam234/teldrive/windows | iex
macOS
curl -sSL https://instl.vercel.app/divyam234/teldrive/macos | bash
使用 docker-compose 部署
#docker-compose.yml
services:
teldrive:
image: ghcr.io/divyam234/teldrive
restart: always
container_name: teldrive
volumes:
- ./session.db:/session.db:rw
- ./config.toml:/config.toml
ports:
- 8080:8080
想要在 teldrive 中使用本地 Postgres 实例的用户。
为 postgres 和 teldrive 创建单独的服务,并将其添加到 docker-compose 文件中。需要单独的服务,这样 postgres 就不依赖于 teldrive,可以与其他服务一起使用。
docker network create postgres
#docker-compose.yml
services:
postgres_db:
image: ghcr.io/divyam234/postgres
container_name: postgres_db
restart: always
networks:
- postgres
environment:
- POSTGRES_USER=teldrive
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=postgres
volumes:
- ./postgres_data:/var/lib/postgresql/data
networks:
postgres:
external: true
#docker-compose.yml
services:
teldrive:
image: ghcr.io/divyam234/teldrive
restart: always
container_name: teldrive
command: ["--db-data-source=postgres://teldrive:secret@postgres_db/postgres"]
networks:
- postgres
volumes:
- ./session.db:/session.db:rw
- ./config.toml:/config.toml
ports:
- 8080:8080
networks:
postgres:
external: true
这两个服务必须在单独的文件夹中创建。
按以下步骤操作
- 创建
config.toml
文件并填入您的值,然后启动容器。请参阅下面如何填写文件。
[db]
data-source = "postgres://<数据库用户名>:<数据库密码>@<数据库主机>/<数据库名>"
[jwt]
secret = "abcd"
[tg]
app-id =
app-hash = "fwfwfwf"
只有这些值是必需的,但您可以更改或调整配置,详见下面的高级配置。
touch session.db
# 对 teldrive 和 postgres 都运行以下命令
docker compose up -d
[!警告] 如果使用 docker compose,请确保运行
touch session.db
创建空的会话文件,否则应用将无法运行。
不使用 docker
按以下步骤操作
- 运行一键安装器。
- 添加与上面相同的配置文件。
- 现在直接运行 Teldrive 可执行二进制文件。
- 您也可以不使用配置文件进行设置。
teldrive run --tg-app-id="" --tg-app-hash="" --jwt-secret="" --db-data-source=""
生成 JWT
$ openssl rand -hex 32
您可以从这里生成密钥。
重要提示
- 可以通过 UI 选择默认频道。请确保在首次登录时从账户设置中设置它。
- 推荐使用多机器人模式,以避免洪水错误并实现最大下载速度,特别是当您使用 IDM 和 aria2c 等多连接下载器时。
- 要启用多机器人,从 BotFather 生成新的机器人令牌,并在首次登录时通过 UI 添加它们。
- 由于浏览器的限制,从 UI 上传会较慢。请使用修改后的 Rclone 版本用于 teldrive。
- Teldrive 支持即时调整图片缩略图大小。要启用此功能,您需要从这里部署一个单独的图片调整大小服务。
- 部署此服务后,在 Teldrive UI 设置中的 Resize Host 字段中添加其 URL。
- 从 teldrive 删除文件后,每小时通过定时任务从 tg 频道定期删除文件,这样做是为了让用户在不小心删除文件时可以恢复文件。
高级配置
命令行选项
teldrive run --help
标志名称 | 描述 | 是否必需 | 默认值 |
---|---|---|---|
--jwt-secret | JWT 密钥 | 是 | "" |
--db-data-source | 数据库连接字符串 | 是 | "" |
--tg-app-id | 你的 Telegram 账号的 API ID,可从 my.telegram.org 获取 | 是 | 0 |
--tg-app-hash | 你的 Telegram 账号的 API HASH,可从 my.telegram.org 获取 | 是 | "" |
--jwt-allowed-users | 允许访问应用的特定 Telegram 用户名,包括你自己的 | 否 | "" |
--tg-uploads-encryption-key | 加密文件的加密密钥 | 否 | "" |
--config, -c | 配置文件 | 否 | $HOME/.teldrive/config.toml |
--server-port, -p | 服务器端口 | 否 | 8080 |
--log-level | 日志级别 DebugLevel = -1 InfoLevel = 0 WarnLevel = 1 ErrorLevel = 2 | 否 | -1 |
--tg-rate-limit | 启用速率限制 | 否 | true |
--tg-rate-burst | 限制突发 | 否 | 5 |
--tg-rate | 限制速率 | 否 | 100 |
--tg-session-file | 机器人会话文件 | 否 | $HOME/.teldrive/session.db |
--tg-bg-bots-limit | 在后台最多启动此数量的机器人,以防止每次请求时重新创建连接。如果你同时流式传输或下载大量文件,请增加此数值。 | 否 | 5 |
--tg-uploads-threads | 上传文件的并发上传线程数 | 否 | 8 |
--tg-uploads-retention | 上传保留期。保留数据库中失败上传块的时间,用于恢复上传。 | 否 | 7d |
--tg-proxy | Telegram 客户端的 Socks5 或 HTTP 代理 | 否 | "" |
--tg-pool-size | 上传连接池大小。更大的池大小会导致更多的内存和 CPU 使用,将其设为 0 会显著降低上传速度,或者减少 rclone 中的并发上传和传输数量。 | 否 | 8 |
你也可以通过环境变量设置配置值。
-
例如,
tg-session-file
将变成TELDRIVE_TG_SESSION_FILE
,其他所有可能的标志也是如此。 -
如果你想通过 toml 文件设置高级配置,请查看仓库中的
config.sample.toml
。
[!警告] 请保管好你生成的密码。一旦生成,teldrive 内部使用与 rclone 相同的加密方式,因此你无需在 rclone 中启用加密。Teldrive 为每个文件部分生成随机盐值并保存在数据库中,因此比 rclone 的加密更安全,而 rclone 对所有文件使用相同的盐值,容易被破解。在 rclone 中启用加密会使 UI 失效,因此在 teldrive 内部加密文件是更好的加密方式,比 rclone 更安全。要加密文件,请查看更多关于 teldrive rclone 配置的信息。
使用多个机器人
[!警告] 如果你从 UI 设置机器人,它们将自动被添加为频道管理员。如果添加失败,请手动添加。对于新登录的会话,你需要等待 20-30 分钟才能将机器人添加到 Telegram 频道。如果在此时间范围内尝试添加机器人,将抛出 FRESH_CHANGE_ADMINS_FORBIDDEN 错误。
Rclone 配置示例
[teldrive]
type = teldrive
api_host = http://localhost:8080 # 默认主机
access_token = #从 cookies 获取的会话令牌
chunk_size = 500M
upload_concurrency = 4
encrypt_files = false # 启用此选项以加密文件,确保 teldrive 实例中的 ENCRYPTION_KEY 环境变量不为空。
random_chunk_name= true # 上传文件到频道时使用随机块名称,而不是原始文件名。
在 rclone 配置命令中查看所有选项
认可
使用 Teldrive 的最佳实践
应做:
- 遵守限制: 遵守 Telegram 服务器施加的限制,以避免账号被禁和频道被自动删除。如果你试图滥用服务,你的文件将被从 Telegram 服务器上删除,尽管大多数人毫无头脑仍会这么做,祝你好运。
- 负责任地存储: 注意你在 Telegram 上存储的内容。高效利用存储空间,只保留有用的数据。
不应做:
- 数据囤积: 避免过度囤积数据,这不仅违反了 Telegram 的条款。
通过遵循这些指南,你可以为 Telegram 的负责任和有效使用做出贡献,为所有用户维护一个公平和公正的环境。
贡献
如果你有任何进一步的想法,欢迎为这个项目做出贡献。
捐赠
如果你喜欢这个项目,小额捐赠将不胜感激 Paypal。