Download and run
One binary. Build it yourself in two commands, or take a prebuilt one.
Paste this
$ Invoke-WebRequest https://github.com/MultiX0/LocalDrive/releases/latest/download/server.exe -OutFile server.exe$ .\server.exe # PowerShell. double clicking the file does the same thingAlways the newest release. Setup then offers to put it on your PATH, and after that it is localdrive from any directory. On a Raspberry Pi or an ARM server, use server-arm64 in place of server. On a Mac, build it from source below.
The server is the product. The apps are just windows onto it.
Everything lives in the server: your files, the accounts, the permissions, the versions, the sharing. Every rule is decided there and enforced there, on every request. This is the piece you install, the piece you back up, and the piece that is actually yours.
The phone, desktop and browser apps hold nothing of their own. They ask the server what exists and show it. Uninstall every one of them and you have lost nothing, because none of them were ever where your files were. Point a fresh one at the same address and everything is there again.
So if you only run one thing, run the server. You can reach it from a browser without installing any app at all.
Get the binary
Version 0.0.2.
The server
Start here. One file, nothing to install. This is the piece that holds your files.
Linux
serverx86-64, single file
Linux (ARM)
server-arm64arm64, for a Pi or an ARM VPS
Windows
server.exex86-64, single file
The apps
Optional. Any browser reaches the server without installing anything, so take these only if you want a native app.
Android
localdrive-client.apkinstall directly
Windows
localdrive-client-setup.exeinstaller, recommended
Windows (portable)
localdrive-client-windows.zipunzip and run, no install
Linux
localdrive-client-linux.tar.gzextract and run
Verify what you downloaded against SHA256SUMS.
Or build it yourself
Two commands and about thirty seconds. You need Go 1.25 and nothing else. There is no C compiler in the way, because the SQLite driver is pure Go.
- 1
Get the code
$ git clone https://github.com/MultiX0/LocalDrive.git$ cd LocalDrive\server - 2
Build it
$ go build -o localdrive.exe ./cmd/localdriveThat produces
localdrive.exein the current folder. Move it wherever you like; it has no install directory and no registry keys. - 3
Check it runs
$ .\localdrive.exe version
Start the server
- 1
Run it with no arguments
$ .\server.exe# double clicking the file does the same thingThe downloaded file is called
server.exe. Rename it tolocaldrive.exeif you prefer, or let setup put it on your PATH, and every later command becomes justlocaldrive.With no arguments it runs setup. It asks five questions: where to keep things, whether to use Docker, which port, whether you have a domain, and an admin username and password.
- 2
Let it generate its own secrets
You do not write a config file. It creates every secret on first start, mixing fresh randomness with an identifier unique to this machine, and saves them so a restart reuses the same ones. Anything you set in the environment always wins over what it generated.
- 3
Open it
http://localhost:7443# it also prints a QR code to scan from a phonePlain HTTP, and no certificate warning, because there is no self signed certificate involved. No authority issues certificates for an address on your own network, so the server does not pretend otherwise. Set a domain and it gets a real one automatically. See HTTP and HTTPS.
- 4
Keep it running
$ .\server.exe service# registers it with Task Scheduler and starts it$ .\server.exe status$ .\server.exe logs
The commands
The same binary in every mode. It is identical on Windows and Linux; only the way you invoke it differs.
| Command | Does |
|---|---|
| (none) | Set up and start a server. What you run the first time. |
| init | Write a working configuration without asking anything. |
| install-path | Make localdrive a command you can type anywhere. |
| service | Run in the background and start again after a reboot. |
| serve | Run the server in the foreground, with no Docker. |
| start | Start an already configured server. |
| stop | Stop a running server. |
| restart | Restart a running server. |
| status | Show whether the server is up, and where to reach it. |
| logs | Follow the server log. |
| backup | Write a backup of the database and the library. |
| reset-admin | Reset the admin password on an existing install. |
| update | Check for a newer release and install it. |
| rollback | Go back to the previous version. |
| version | Print the version. |
Every command takes --dir to point at a different install, and reads LOCALDRIVE_HOME for the same purpose. Full detail in the quick start.