TeleDrive

Mahmud0808Apache-2.0活跃维护

把私有 Telegram 频道变成个人云盘,支持安卓、Windows、Linux 和 macOS,带自动备份、可选端到端加密、内置文件管理器和播放器。

Turn a private Telegram channel into your personal cloud drive. Android, Windows, Linux and macOS, auto backup, optional E2E encryption, built-in file manager and player.

v1.5.0发布于 2026-10-19 13:30 UTC458star +11 / 7 天58fork同步于 2026-11-10 11:59 UTC

怎么上手

从 README 代码块原样提取,可能是其中一种安装方式
git clone https://github.com/Mahmud0808/TeleDrive.git
硬件要求按 README 关键词推断
支持 Apple Silicon
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

最近发版

5 个版本v1.5.0
  1. v1.5.0TeleDrive v1.5.0最新正式版2026-10-19 · 2026-10-19 13:30 UTC

    What's new

    Linux and macOS TeleDrive now runs on Linux and Apple Silicon Macs as well as Windows. Linux gets an AppImage that runs on most distros from 2022 or later, plus a .deb for Ubuntu 24.04 and Debian 13 or newer. Video and audio play inside the app on both, with VLC included. Linux support contributed by @indigo-steam (#53).

    Changes sync between devices live Renames, moves, deletes and folder changes made on one device now show up on your others within seconds, instead of only after a full rebuild (#74).

    Upload whole folders Pick a folder and TeleDrive uploads everything in it, keeping its subfolders as they are (#54).

    Offline files Mark files or folders Available offline to keep a copy on your phone. They get their own section on Home, are skipped by Free up space, and can be downloaded straight from the Gallery and search (#59, #70, #71).

    A better video player

    • Picture-in-picture: video keeps playing in a floating window when you leave the app (#58).
    • Controls: the screen stays awake while playing, you can swipe for volume and brightness, and you can lock the controls (#57).
    • Audio formats: AC3, EAC3 and DTS sound now play on any phone (#44).
    • Streaming: single-part videos stream without downloading first (#47).
    • Decoder fallback: if one video decoder can't handle a file, the next one on your phone is tried (#88).

    Progress in your notifications

    • Transfers: the notification shows which file is uploading or downloading, how many are left and how far along it is.
    • Saving changes: large moves and renames show "Saving changes to Telegram" with a counter, and keep going after you close the app (#80).
    • Battery: Settings → Permissions has a new Unrestricted battery use option, so the system doesn't stop these in the background.

    More languages Brazilian Portuguese, contributed by @iya0 (#42), and Simplified Chinese, contributed by @suiang (#67).

    Improved

    • The Gallery has the same sort menu as Files, and keeps its own sort order (#77)
    • The Gallery has its own grid and column settings, separate from Files (#43)
    • Media can be moved to another folder from the Gallery (#65), and Gallery menus match the ones in Files (#69)
    • Folders can be hidden, archived and added to favorites like files, and favorites can be removed from the selection menu (#68, #69)
    • Search results can be selected and acted on, and opening one scrolls to and highlights the file (#59)
    • Image previews stay sharp when you zoom in (#64)
    • Backups can wait until the phone is charging or on Wi-Fi, when those settings are on (#75)
    • Backups can delete the copy on your phone once it's safely in Telegram (#59)
    • Large videos split into parts now show a thumbnail (#86)
    • Settings → Advanced has a Share log option, so attaching a debug log to a bug report no longer needs a computer
    • The desktop app follows your system's dark mode on Linux
    • Screen readers announce buttons, switches, tabs and headings properly, and the desktop app starts with screen readers on

    Fixed

    • Instant backup could upload the same photo twice when a screenshot was taken (#91)
    • With more than one drive, folders from one drive could appear in another, and deleting them there could remove the files from the first drive. Files, folders and trash now stay within their own drive (#51, #62)
    • Backing up the same folder to two drives skipped the second drive
    • Rebuilding the index could bring back a folder you had moved files out of and deleted (#81)
    • The backup card could show "0 of 27 files" while files were already uploading
    • Rare cases where the same file was uploaded twice at once, or where a rename made during syncing was later undone
    • Pausing and resuming uploads could leave a backup stuck or crash the app (#52)
    • Forwarded photos were treated as documents (#49)
    • Media with # in the file name couldn't be shown (#56)
    • Fast downloa
  2. v1.4.2TeleDrive v1.4.22026-09-19 · 2026-09-19 10:59 UTC
    查看更新说明

    Fixes

    This release fixes the crash reported in #41. Thanks @vitivattXD for the report.

    • Fixed the app closing the moment the Gallery screen was opened on 1.4.1. A dependency update in that release paired two versions of the Material library that disagree about one of the buttons the screen draws, so the screen went looking for something that was no longer there and the app went down with it. The Proxy screen under Settings would have closed the app the same way
    • The crash only affected 1.4.1. If you are on 1.4.0 or earlier you were never exposed to it, and nothing in your drive was at risk either way

    Full changelog: v1.4.1...v1.4.2

    Download: Windows — TeleDrive-1.4.2.msi. Android — take arm64-v8a unless you know you need otherwise. Use universal if unsure.

  3. v1.4.1TeleDrive v1.4.12026-09-19 · 2026-09-19 08:35 UTC
    查看更新说明

    Fixes

    App storage grew with every upload and never shrank. Thanks to @NeoMatrix90 for reporting it.

    • Fixed the app's own storage growing by the full size of every file uploaded through the picker. Files picked from a cloud provider — Google Drive, OneDrive, or anything reached through Downloads and Recents — cannot be uploaded from where they sit, so TeleDrive copies them into its own storage first. That copy was kept after the upload finished instead of dropped, so uploading 500 MB of files meant 500 MB of app data sitting there for good. It is now deleted the moment the upload lands in Telegram
    • Copies left behind by earlier versions are cleared on first launch, so the space comes back on its own. Anyone carrying hundreds of megabytes will see the app's storage fall sharply in Android settings

    Files uploaded from your own device storage were never affected: those upload straight from where they are, and the originals are still only removed when you ask for it in Settings → Storage → Free up space. That figure will now read lower, because it no longer counts copies the app made for itself.

    Under the hood

    • Updated Kotlin, the Android Gradle plugin, Compose, Media3, Room and Coil to current releases

    Full changelog: v1.4.0...v1.4.1

    Download: Windows — TeleDrive-1.4.1.msi. Android — take arm64-v8a unless you know you need otherwise. Use universal if unsure.

  4. v1.4.0TeleDrive v1.4.02026-09-18 · 2026-09-18 13:07 UTC
    查看更新说明

    What's new

    Your language TeleDrive is now translatable, with a language picker in Settings that follows your system by default. Russian is the first translation, covering the whole app including onboarding. Contributed by @Ruslik31 (#14).

    Audio and subtitle tracks you can pick A movie with several audio tracks or subtitle languages now opens a picker instead of a blind "next track" button. Every track is labeled with its language, channel layout and codec — English · 5.1 · EAC3 — subtitles get a real Off entry and a row per language, and the language you choose follows you into the next file. Tracks your device has no decoder for are still listed and marked as unsupported, so a DTS or TrueHD stream reads as a known limitation instead of a silent failure. Android and Windows both (#37).

    APK icons APK files show the app's own icon in previews, thumbnails and the gallery instead of a generic file icon. The icon is uploaded alongside the file, so it appears on your other devices too, and it is encrypted with everything else when encryption is on. Contributed by @jaival-11 (#10, #11).

    In-app folder picker Picking a folder no longer has to hand you to the system picker, with SAF still there as a fallback. Contributed by @Ruslik31 (#23).

    Swipe to switch drives Swipe the avatar on the home screen to cycle through your drives (#21).

    Improved

    • The home backup card was redesigned, with a gradient and progress that animates as the backup runs
    • Refresh now discovers drives added to the account elsewhere and drops ones that no longer exist
    • A video this device has no decoder for now says so, rather than failing with nothing to read. Image formats the app cannot display say the same
    • Imports keep running when you navigate away from the screen you started them on, and report "Preparing files for upload…" while large files are staged
    • The folder list in the picker fades at its edges, so it is clear there is more to scroll

    Fixed

    • Folders created on mobile did not appear on desktop, or the other way around. The desktop app now drains its publish outbox at startup instead of waiting for the next change (#26)
    • Creating a folder could leave an empty duplicate beside it. Synced folders are now created under their manifest id (#29)
    • Files restored from the trash could be pulled straight back into it when a sync landed before the restore was published (#31)
    • An interrupted backup reported its file as already in the drive, so it could never be backed up again without deleting and re-uploading it. Rows with no remote copy are no longer counted as duplicates (#32)
    • Storage channels did not agree between desktop and mobile. Drive discovery is trusted only when it accounts for the drives already known, so a partial scan can no longer prune real ones (#34)
    • A modified file was uploaded again on every pass: the re-upload left the old row pointing at the previous copy. The row is refreshed and the superseded message dropped (#15)
    • Local copy bookkeeping no longer touches a file's modified timestamp, which on its own was enough to make an untouched file look changed
    • Channel photo changes now sync on refresh instead of keeping the picture you first saw (#16)
    • Uploading a file of around 100 MB picked from Google Drive crashed the app. The copy now happens off the main thread (#22)
    • Import copies left behind by an interrupted upload are swept at startup instead of sitting in app storage forever (#24)
    • Signing in by QR code crashed the app, because opening the Telegram link had no handler wired up (#25)
    • Refresh no longer resurrects folders you permanently deleted

    Thanks to @iya0, @AmitPrajapati9401, @Ruslik31, @jaival-11 and @YashasviKaliya for the reports, patches and translation.

    Full changelog: v1.3.1...v1.4.0

    Download: Windows — TeleDrive-1.4.0.msi. Android — take arm64-v8a unle

  5. v1.3.1TeleDrive v1.3.12026-08-30 · 2026-08-30 20:09 UTC
    查看更新说明

    Fixes

    This release fixes the problems reported in #9. Thanks @Ruslik31 for the detailed report and logs.

    • Fixed the backup button showing "Back up %d file" instead of the actual number
    • Fixed a file counted as "not backed up" forever while the backup button said there was nothing to do: files left marked as queued after their upload was lost (for example, deleted mid-staging) are now detected when you press the button, requeued if the file still exists, and cleaned up if nothing is left to upload
    • Fixed slowdowns and freezes on large libraries: the home screen now computes its counters in a single database query instead of six, and stops hammering the database during an active backup. Devices with tens of thousands of files should feel dramatically smoother

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    TeleDrive

    Back up and browse your files using a private Telegram channel as storage.

    Android Windows Linux macOS Kotlin Compose Release Downloads License


    Contents


    About

    TeleDrive stores your files in a private Telegram channel on your own account. There is no TeleDrive server and no account to create with us. The app keeps a local index so browsing and search stay fast and work offline.

    One Compose Multiplatform codebase ships the Android app and the Windows, Linux x86_64 and macOS desktop apps. They share the storage engine, encryption, transfers and the entire UI layer, and all of them browse the same drive.

    Features

    • Automatic backup: photos and chosen folders upload on their own on Android, with schedules, Wi-Fi and charging rules, and exclusion patterns
    • No file size limit: a 20 GB video is one file in the app, whatever Telegram caps a message at
    • Encryption: optional AES-256-GCM for file bodies, names, captions and the folder tree
    • File management: folders, favorites, hidden and archived items, trash and bulk actions
    • Streaming: video and audio play straight from Telegram with seeking, encrypted files included
    • Previews: images, PDFs, text and ZIP contents open inline
    • Multiple drives: separate channels for personal, work or photos on one account
    • Sharing: files arrive from the Android share sheet, and identical bytes are never uploaded twice
    • Transfers: parallel queue with pause and resume that survives reboots
    • Recovery: reinstall, sign in, enter your passphrase, and the whole drive is back
    • Device security: biometric app lock, screenshot blocking and an encrypted local cache

    Screenshots

    Install

    Windows

    Download TeleDrive-<version>.msi from the releases page and run it. It installs per user with no admin prompt, adds Start menu and desktop shortcuts, and uninstalls from Windows Settings. Your session and settings live in %APPDATA%\TeleDrive and survive reinstalls.

    Linux (x86_64)

    Download from the releases page. Everything is included, so there is nothing else to install.

    AppImage (most distros from 2022 or later)

    1. Download TeleDrive-<version>-x86_64.AppImage.
    2. Make it executable: right-click → Properties → Allow executing file as program, or chmod +x TeleDrive-<version>-x86_64.AppImage.
    3. Double-click it.

    .deb (Ubuntu 24.04, Debian 13 or newer)

    sudo apt install ./teledrive_<version>_amd64.deb
    

    Then open TeleDrive from the applications menu.

    macOS (Apple Silicon)

    Download TeleDrive-<version>.dmg from the releases page, open it and drag TeleDrive to Applications. The build is Apple Silicon only, because the Telegram native library TeleDrive uses has no Intel Mac build.

    The app is not signed with an Apple Developer ID, so Gatekeeper blocks it on first launch. Clear the quarantine flag once and it opens normally from then on:

    xattr -dr com.apple.quarantine /Applications/TeleDrive.app
    

    Your session and settings live in ~/Library/Application Support/TeleDrive.

    Media preview works out of the box. Like the Windows build, the app ships its own copy of libVLC, so there is nothing else to install. If it ever fails to load, a VLC in /Applications is used instead, and failing that the app still opens, browses, uploads and downloads, with preview falling back to opening the file in your default application.

    Android

    Grab an APK from the releases page. Builds are split per CPU architecture, so pick the one that matches your device:

    APKUse it when
    TeleDrive-<version>-arm64-v8a-release.apkAlmost every phone from the last several years
    TeleDrive-<version>-armeabi-v7a-release.apkOlder 32-bit devices
    TeleDrive-<version>-x86_64-release.apk64-bit emulators and x86 Chromebooks
    TeleDrive-<version>-x86-release.apk32-bit x86, rare outside older emulators
    TeleDrive-<version>-universal-release.apkYou are unsure, or sideloading somewhere unusual

    The universal one carries every architecture at once, so prefer a specific build unless you need the fallback. Most of that size is TDLib, the official Telegram library the app is built on.

    Requirements

    • Android 8.0 (API 26) or newer, 64-bit Windows 10+, Linux x86_64, or macOS on Apple Silicon
    • A Telegram account
    • Your own Telegram API credentials, free from my.telegram.org under API development tools

    To get credentials: sign in at my.telegram.org, open API development tools, and fill in an app name and short name. Anything sensible works, and the platform and description do not matter. The page then shows an api_id and an api_hash, which is what TeleDrive asks for on first launch.

    You enter the API ID and hash at runtime and they are stored encrypted on device. They are never bundled into the app, written to logs, or sent anywhere except Telegram. Because they are yours rather than shared, your usage is never pooled with anyone else's, and a rate limit on someone else cannot affect you.

    Getting started

    git clone https://github.com/Mahmud0808/TeleDrive.git
    cd TeleDrive
    ./gradlew :android:installDebug  # Android
    ./gradlew :desktop:run           # Windows/Linux desktop
    

    Then in the app:

    1. Enter your API ID and hash.
    2. Sign in, either by phone number and login code, or by choosing Sign in by QR code. If Telegram is installed on the same device, the QR step offers a Confirm in Telegram button instead, so nothing needs scanning.
    3. Choose the folders to back up.
    4. Optionally enable Encrypt uploads and set a recovery passphrase.

    TDLib native libraries come prebuilt on every platform: the tdlibx/td AAR via JitPack on Android and tdlight on desktop (Windows, Linux and Apple Silicon macOS), so no native toolchain is needed. The build picks the native matching the host, so a package never carries an unused set.

    Packaging the desktop app

    jpackage does the packaging, and the Android Studio runtime does not ship it. Point the build at a full JDK with a desktopJavaHome property in your global ~/.gradle/gradle.properties, then:

    ./gradlew :desktop:packageMsi           # Windows installer
    ./gradlew :desktop:packageDebUser       # Linux .deb with system dependencies
    ./gradlew :desktop:packageAppImage      # Linux AppImage for any distro
    ./gradlew :desktop:packageDmg           # macOS disk image
    ./gradlew :desktop:createDistributable  # portable app folder
    

    packageDebUser produces desktop/build/deb/teledrive_<version>_amd64.deb. It embeds a JVM runtime via jlink and declares its Debian dependencies, so end users only need sudo apt install ./teledrive_<version>_amd64.deb. libVLC is not bundled on Linux, it is pulled in as a package dependency instead.

    packageAppImage produces desktop/build/appimage/TeleDrive-<version>-x86_64.AppImage from the same app folder and bundles the libVLC installed on the build machine along with the libraries its plugins need. It runs desktop/packaging/linux/build-appimage.sh, which needs patchelf, desktop-file-utils, the libvlc5, libvlccore9, vlc-plugin-base and vlc-plugin-video-output packages, linuxdeploy and appimagetool. Put the last two on the PATH, or pass -Plinuxdeploy=/path/to/linuxdeploy and -Pappimagetool=/path/to/appimagetool. Build on the oldest distro you want to support, since the bundled libraries set the minimum glibc; release builds use Ubuntu 22.04.

    Bringing existing files in

    Already have files sitting in a channel, a group, or Saved Messages? Forward them into the drive TeleDrive created and they appear in the app after the next sync. Forwarding happens on Telegram's servers, so nothing is downloaded or uploaded again, and files of any size come across in seconds.

    Select the messages in the Telegram app, forward them to your TeleDrive channel, then pull to refresh in TeleDrive.

    What to expect for forwarded files:

    • Only messages sent as documents are picked up. A photo or video sent the normal way was compressed by Telegram into a media message, and those are skipped. Forward the original file version instead.
    • Captions are replaced. TeleDrive stores each file's name, folder and flags in the caption, so the first rename, move or trash overwrites whatever text the message carried.
    • No checksum is recorded, since the file is never read locally. Duplicate detection cannot match forwarded files, so uploading the same file later creates a second copy.
    • Files land at the drive root and stay unencrypted, because they were already stored that way. Move them into folders in the app afterwards.

    Architecture

    Kotlin Multiplatform with Clean Architecture and MVVM. The dependency rule is presentation -> domain <- data, with core shared by both sides. No TDLib type leaves core/telegram. Almost everything lives in common code; each platform contributes only what the other cannot share, like workers, the Keystore, DPAPI or the desktop file-key store, and the app shells.

    shared/               # KMP: storage engine, crypto, sync, transfers
    ├── commonMain/           # core, data, domain
    ├── jvmCommonMain/        # JVM pieces both apps use
    ├── androidMain/          # Keystore, MediaStore, WorkManager glue
    └── desktopMain/          # tdlight client, platform ciphers, desktop schedulers
    ui/                   # KMP: every screen, theme and string resource
    ├── commonMain/           # compose resources
    └── jvmCommonMain/        # the entire presentation layer
    android/              # Android shell: workers, notifications, media3 player
    desktop/              # Windows/Linux shell: window, packaging, streaming bridge
    

    Stack: Kotlin Multiplatform, Coroutines, Compose Multiplatform, Material 3 Expressive, Koin, Room KMP, DataStore, WorkManager, Paging 3, Media3, Coil, TDLib and tdlight.

    Security model

    LayerWhat is protected
    On deviceRoom and TDLib databases sealed with a random, platform-wrapped key (Android Keystore, Windows DPAPI, or a local file key on Linux). Thumbnails and caches AES-GCM encrypted by default.
    In TelegramWith encryption on, the channel holds only sealed bytes, random file names, encrypted captions and an encrypted folder tree.
    Key custodyContent keys are random, wrapped by the platform master key, and never leave the device unwrapped.
    RecoveryThe content key is backed up to your channel, sealed with your passphrase (PBKDF2, 310k iterations). Restoring it on a new device unlocks everything.

    Someone who reads the channel without your key learns only the file count, sizes and timestamps. The passphrase has no reset path, which is the point, so set a hint when you create it and keep the passphrase out of the hint.

    Good to know

    • A file past Telegram's per-file cap is stored as several messages, so opening it in the Telegram app shows the parts rather than the whole file. Only TeleDrive puts it back together.
    • Streaming authenticates the frames it plays, not the whole file. Downloading verifies everything, so use it when integrity matters more than starting fast.
    • Telegram cannot rename a document inside a sent message, so a rename updates the caption manifest, which is what a rebuild reads.
    • TDLib cannot resume a single upload, so pausing one that fits in one message restarts it. A split upload resumes at the last completed part, and downloads always resume.

    Testing

    ./gradlew testDebugUnitTest          # Unit tests covering crypto, key backup,
                                         # query building, backup decisions, naming
    ./gradlew connectedDebugAndroidTest  # Room DAO behaviour on a device
    ./gradlew :desktop:test              # Desktop DI graph and platform seams
    

    Contributing

    Issues and pull requests are welcome. Keep the dependency rule intact, match the surrounding code style, and add tests for changes in the domain or crypto packages of shared/.

    License

    Apache License 2.0.

    TDLib is BSL-1.0. The prebuilt Android wrapper (tdlibx/td) is Apache-2.0.