Changelog
Every released version, newest first, taken from the tagged releases.
0.0.2
0.0.2 on GitHubAndroid downloads actually land somewhere you can reach
Downloading a file on Android did nothing useful. The bytes arrived, but they were written into the app's own private storage, where no file manager, gallery or other app can open them. There was no way to get at the file afterwards, so "downloaded" meant nothing.
Downloads now go to the phone's Downloads/Local Drive folder, and the transfer row tells you that instead of an internal path. Files are visible in any file manager, can be shared to other apps, and survive uninstalling Local Drive.
Fixes #2.
Notes:
- A file downloaded with 0.0.1 was never reachable and still is not. Download it again on 0.0.2 and it will land properly.
- Downloading the same file twice does not overwrite. The second copy gets a number beside it, the way a browser does it.
- Files kept with "Make available offline" are unchanged. Those live inside the app on purpose, so that removing them removes the app's copy and not your file.
- On Android 9 and older this asks for storage permission the first time. Android 10 and newer need no permission at all. Declining only costs you the Downloads folder, the download itself still works.
Security
- golang.org/x/crypto raised to 0.55.0 for CVE-2026-56854. The flaw is in the SSH package, which the server never imports, so no install was exposed. Raised anyway.
- The Docker image now applies Alpine's package updates at build time. Without that it shipped whatever OpenSSL the base image snapshot happened to freeze, which left CVE-2026-14456 in the image after Alpine had already published the fix. Self hosters on Docker should pull the new image.
Build
CI stopped finishing in August. Nothing in the repository had changed: the Flutter toolchain was installed from the stable channel with no version, 3.47 shipped, and the code generation step stopped terminating. Because no job had a timeout, each run sat at GitHub's six hour ceiling instead of failing.
Flutter is now pinned the same way Go and Node already were, and every job has a time limit. No effect on the software, only on whether a broken build says so.
0.0.1
0.0.1 on GitHubLocal Drive is a private alternative to Google Drive that runs on a computer you own. Your files stay on your machine. There is no account to make with anyone, no subscription, and no company in the middle.
This is the first release. It works, and it is also version 0.0.1, so keep a backup of anything you care about rather than trusting this as the only copy of it.
Install
Linux
wget https://github.com/MultiX0/LocalDrive/releases/latest/download/server chmod +x server ./serverWindows, in PowerShell
Invoke-WebRequest https://github.com/MultiX0/LocalDrive/releases/latest/download/server.exe -OutFile server.exe .\server.exeThat is the whole install. One file, no runtime, nothing to configure first. It asks a few questions, generates every secret it needs, and starts. It also offers to put itself on your PATH and to keep running after a reboot, so after the first run you type
localdrivefrom anywhere.On a Raspberry Pi or an ARM server use
server-arm64instead ofserver.Then install an app
The server has no browser interface in this release. Install one of the apps and point it at the address setup printed:
Device Download Android localdrive-client.apkWindows localdrive-client-setup.exe, orlocaldrive-client-windows.zipfor a folder you can carryLinux localdrive-client-linux.tar.gzThe first account to sign up becomes the admin. That is you. After that the server refuses to create another one that way.
Which server file
Running the server on Download Linux, most machines serverLinux on ARM, such as a Raspberry Pi server-arm64Windows server.exeWhat it does
- Files, folders, versions, and a trash that holds things for 30 days
- Share a link with anyone, with an optional password, an optional expiry, and view only or download. Change any of that later without the link changing
- Share with someone on your server directly, with no usernames to type
- A photo and video gallery, grouped by month and ordered by when things were taken rather than when they were uploaded
- Uploads survive a dropped connection and resume from the exact byte they stopped at
- Plug in a USB drive and use it as storage, on Linux
- A new device is held for approval before it gets in, and a correct code from your authenticator lets one straight through, so a lost phone is not a locked account
- Two factor authentication, required on admin accounts and optional on the rest
- English and Arabic, each with its own typeface and full right to left layout
Being an admin means you manage accounts, storage and settings. It does not mean you can read anyone else's files.
HTTPS
Plain HTTP is the default, because no certificate authority issues certificates for an address on a home network.
Set
LD_DOMAINto a domain pointing at the machine and the binary requests a real certificate and renews it on its own, with no proxy and nothing else to install. That needs ports 80 and 443 reachable, since those are the only two Let's Encrypt connects back on.The port keeps answering plain HTTP for the machine's own addresses at the same time, so setting a domain does not cost you the way in from your own network.
Worth knowing before you install
- No browser interface. The server serves the API and the apps. A browser UI exists in the source but is not built or shipped in this release.
- No macOS or iOS builds. Both build from source; neither is published here. The macOS server is two commands:
cd server && go build ./cmd/localdrive. - The Windows installer is not code signed, so Windows will warn about an unknown publisher.
- USB drive management needs Linux. On Windows and macOS, point Local Drive at a folder instead.
- Video thumbnails need
ffmpeg. If it is missing the server downloads one on Linux and Windows, or you can install it yourself and setLOCALDRIVE_FETCH_FFMPEG=false.
Verifying a download
SHA256SUMSlists a hash for every file here.sha256sum -c SHA256SUMSMIT licensed. Documentation is at https://localdrive.iprog.dev/docs and in the repository under
docs/.