Telegram Drive
Find a file
2024-03-22 12:16:12 +05:30
.github refactor: remove dev workflow 2024-03-19 23:10:32 +05:30
.vscode docs: Update launch.json configuration 2024-02-13 15:39:55 +05:30
api feat: add viper and cobra support 2024-02-12 21:32:55 +05:30
cmd feat: add custom duration parser 2024-02-19 21:32:25 +05:30
internal fix: encrypted reader 2024-03-22 12:16:12 +05:30
pkg refactor: error handling 2024-03-19 22:33:28 +05:30
public chnaged package name 2023-08-16 03:23:02 +05:30
ui feat: Add gzip compression for static assets and add embed pdf.js in binary 2024-02-16 22:14:38 +05:30
.gitignore sync UI and Makefile Changes 2024-02-08 21:46:34 +05:30
.gitmodules added embedded ui and migrations 2023-09-08 16:08:20 +05:30
.goreleaser.yml ci: Update main.go path in .goreleaser.yml 2024-02-13 01:42:16 +05:30
config.sample.toml feat: add custom duration parser 2024-02-19 21:32:25 +05:30
docker-compose.postgres.yml feat: change name and location of bot session file 2024-02-13 15:25:13 +05:30
docker-compose.yml feat: change name and location of bot session file 2024-02-13 15:25:13 +05:30
go.mod chore(deps): bump gorm.io/gorm from 1.25.7 to 1.25.8 2024-03-19 22:33:00 +05:30
go.sum chore(deps): bump gorm.io/gorm from 1.25.7 to 1.25.8 2024-03-19 22:33:00 +05:30
goreleaser.dockerfile feat: change name and location of bot session file 2024-02-13 15:25:13 +05:30
LICENSE docs: Update LICENSE 2024-02-13 16:13:39 +05:30
main.go chore: Update dependencies and configuration files 2024-02-12 23:52:52 +05:30
Makefile fix: encrypted reader 2024-03-22 12:16:12 +05:30
README.md docs: Update README.md 2024-02-28 16:01:41 +05:30

Telegram Drive

Telegram Drive is a powerful utility that enables you to organise your telegram files and much more.

Discord

Click on icon to join Discord Server

Features

  • UI: Based on Material You to create nice looking UI themes.
  • Secure: Your data is secured using robust encryption.
  • Flexible Deployment: Use Docker Compose or deploy without Docker.

Advantages Over Alternative Solutions

  • Exceptional Speed: Teldrive stands out among similar tools, thanks to its implementation in Go, a language known for its efficiency. Its performance surpasses alternatives written in Python and other languages, with the exception of Rust.

  • Enhanced Management Capabilities: Teldrive not only excels in speed but also offers an intuitive user interface for efficient file interaction which other tool lacks. Its compatibility with Rclone further enhances file management.

Important

Teldrive functions as a wrapper over your Telegram account, simplifying file access. However, users must adhere to the limitations imposed by the Telegram API. Teldrive is not responsible for any consequences arising from non-compliance with these API limits.You will be banned instantly if you misuse telegram API.

demo

UI Repo

Deploy using docker-compose

version: "3.8"

services:
  server:
    image: ghcr.io/divyam234/teldrive
    restart: always
    container_name: teldrive
    volumes:
      - ./session.db:/session.db:rw
      - ./config.toml:/config.toml
    ports:
      - 8080:8080

People Who want to use local Postgres instance

version: "3.8"

services:
  server:
    image: ghcr.io/divyam234/teldrive
    restart: always
    container_name: teldrive
    volumes:
      - ./session.db:/session.db:rw
      - ./config.toml:/config.toml
    ports:
      - 8080:8080
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:15
    container_name: teldrive_db
    restart: always
    environment:
      - POSTGRES_USER=teldrive
      - POSTGRES_PASSWORD=secret
    volumes:
      - ./postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "teldrive"]
      interval: 10s
      start_period: 30s

Follow Below Steps

  • Create the config.toml file with your values and start your container. See how to fill file below.
[db]
data-source = "postgres://<db username>:<db password>@<db host>/<db name>"

[jwt]
secret = "abcd"

[tg]
app-id = 
app-hash = "fwfwfwf"

Only these values are mandatory however you can change or tweak your config see more in advanced configurations below.

touch session.db
docker compose up -d

Use without docker

Follow Below Steps

  • Download the release binary of Teldrive from the releases section.

  • Add same config file as above.

  • Now, run the Teldrive executable binary directly.

  • You can also set up without config file.

One line installer for linux

curl -s https://sh-install.vercel.app/divyam234/teldrive | bash # install in current directory

curl -s https://sh-install.vercel.app/divyam234/teldrive! | bash # install in /usr/local/bin
teldrive run --tg-app-id="" --tg-app-hash="" --jwt-secret="" --db-data-source=""

Generate JWT

$ openssl rand -hex 32

You can generate secret from here.

Important

  • You can set up a local Postgres instance, but it's not recommended due to backup and data transfer hassles. The recommended approach is to use a free cloud-based Postgres DB like Neon DB.
  • Default Channel can be selected through UI. Make sure to set it from account settings on first login.
  • Multi Bots Mode is recommended to avoid flood errors and enable maximum download speed, especially if you are using downloaders like IDM and aria2c, which use multiple connections for downloads.
  • To enable multi bots, generate new bot tokens from BotFather and add them through UI on first login.
  • Uploads from UI will be slower due to limitations of the browser. Use modified Rclone version for teldrive.
  • Teldrive supports image thumbnail resizing on the fly. To enable this, you have to deploy a separate image resize service from here.
  • After deploying this service, add its URL in Teldrive UI settings in the Resize Host field.
  • Files are deleted at regular interval of one hour through cron job from tg channel after its deleted from teldrive this is done so that person can recover files if he/she accidently deletes them.

Advanced Configuration

cli options

teldrive run --help
Flag Name Description Required Default Value
--jwt-secret JWT secret key Yes ""
--db-data-source Database connection string Yes ""
--tg-app-id API ID for your Telegram account, which can be obtained from my.telegram.org. Yes 0
--tg-app-hash API HASH for your Telegram account, which can be obtained from my.telegram.org. Yes ""
--jwt-allowed-users Allow certain Telegram usernames, including yours, to access the app. No ""
--tg-uploads-encryption-key Encryption key for encrypting files. No ""
--config, -c Config file. No $HOME/.teldrive/config.toml
--server-port, -p Server port No 8080
--log-level Logging level

DebugLevel = -1
InfoLevel = 0
WarnLevel = 1
ErrorLevel = 2
No -1
--tg-rate-limit Enable rate limiting No true
--tg-rate-burst Limiting burst No 5
--tg-rate Limiting rate No 100
--tg-session-file Bot session file. No $HOME/.teldrive/session.db
--tg-bg-bots-limit Start at most this no of bots in the background to prevent connection recreation on every request.Increase this if you are streaming or downloading large no of files simultaneously. No 5
--tg-uploads-threads Concurrent Uploads threads for uploading file No 16
--tg-uploads-retention Uploads retention duration.Duration to keep failed uploaded chunks in db for resuming uploads. No 7d

You Can also set config values through env varibles.

  • For example tg-session-file will become TELDRIVE_TG_SESSION_FILE same for all possible flags.

  • See config.sample.toml in repo if you want to setup advanced configurations through toml file.

Warning

Keep your Password safe once generated teldrive uses same encryption as of rclone internally so you don't need to enable crypt in rclone.Teldrive generates random salt for each file part and saves in database so its more secure than rclone crypt whereas in rclone same salt value is used for all files which can be compromised easily. Enabling crypt in rclone makes UI redundant so encrypting files in teldrive internally is better way to encrypt files and more secure encryption than rclone.To encrypt files see more about teldrive rclone config.

For making use of Multi Bots

Warning

Bots will be auto added as admin in channel if you set them from UI if it fails somehow add it manually.For newly logged session you have to wait 20-30 min to add bots to telegram channel.FRESH_CHANGE_ADMINS_FORBIDDEN error will be thrown if you try to add bots before that time frame.

Rclone Config Example

[teldrive]
type = teldrive
api_host = http://localhost:8080 # default host
access_token = #session token obtained from cookies
chunk_size = 500M
upload_concurrency = 4
encrypt_files = false # Enable this to encrypt files make sure ENCRYPTION_KEY env variable is not empty in teldrive instance.

See all options in rclone config command

Read Wiki for FAQ.

Best Practices for Using Teldrive

Dos:

  • Follow Limits: Adhere to the limits imposed by Telegram servers to avoid account bans and automatic deletion of your channel.

Don'ts:

  • Data Hoarding: Avoid excessive data hoarding, as it not only violates Telegram's terms but also leads to unnecessary wastage of storage space.

Additional Recommendations:

  • Responsible Storage: Be mindful of the content you store on Telegram. Utilize storage efficiently and only keep data that serves a purpose.

  • Respect Terms of Service: Familiarize yourself with and adhere to the terms of service provided by Telegram to ensure a positive and sustainable usage experience.

By following these guidelines, you contribute to the responsible and effective use of Telegram, maintaining a fair and equitable environment for all users.

Contributing

Feel free to contribute to this project if you have any further ideas.

Donate

If you like this project small contribution would be appreciated Paypal.