{ git-like backup, self-hosted }
Commit offline anywhere, push when you're home. Content-addressed & deduplicated — identical files stored once, on a server that is yours.
{ Why bakup® }
Snapshots are recorded locally, exactly like git. No connection needed until you push.
Content-addressed by sha256 — the same file across ten repos costs one copy on the server.
A single Docker service on any machine you own. Unlimited clients, unlimited repos, one token.
git-style stat cache plus server negotiation — only content the server lacks ever crosses the wire.
{ Install the client }
Linux
Grab the package from releases — apt resolves the dependencies (python3, python3-requests) for you.
$ curl -LO https://github.com/RamizMohammad/backup-release/releases/latest/download/bakup_0.1.0_all.deb $ sudo apt install ./bakup_0.1.0_all.deb $ bakup --version
Windows
The terminal route installs Python via winget if it's missing and puts bakup on your PATH. Prefer clicking? The setup wizard ships a standalone exe — no Python required.
PS> irm https://github.com/RamizMohammad/backup-release/releases/latest/download/install.ps1 | iex
1. Download bakup-setup-0.1.0.exe from the button below 2. Run it — Next → accept the license → keep "Add bakup to PATH" ticked 3. Tick "Connect to my backup server" and paste your server address + token — the installer runs bakup config for you 4. Finish — open any terminal and type bakup # fully configured
Any OS
macOS, other Linux distros, BSD — anywhere Python 3.9+ runs.
$ pipx install https://github.com/RamizMohammad/backup-release/releases/latest/download/bakup-0.1.0-py3-none-any.whl # or plain pip: $ pip install https://github.com/RamizMohammad/backup-release/releases/latest/download/bakup-0.1.0-py3-none-any.whl
{ then, once per machine }
$ bakup config --server http://YOUR-SERVER-IP:8000 --token YOUR-TOKEN
{ Interactive setup guide }
Pick your side — a client OS, or the Docker box that stores everything — and step through a perfect setup with the warnings, do's and don'ts most people learn the hard way.
{ step 1 }
{ Run your own server }
An old PC, a NAS, a Raspberry Pi, a $5 VPS — one server handles unlimited clients, and dedup is shared across all of them.
$ mkdir bakup-server && cd bakup-server $ curl -LO https://github.com/RamizMohammad/backup-release/releases/latest/download/docker-compose.yml $ docker compose up -d # pulls the image from Docker Hub
On first run the server generates its own secret token, saves it in the data volume, and prints it in the logs. Backups land in ./data — point the volume at a big disk if you like (/mnt/hdd/bakup:/data).
$ docker compose logs bakup-server # shows the token — save it $ docker exec bakup-server cat /data/.bakup_token # or anytime later $ curl http://localhost:8000/health # {"ok":true}
Every machine that runs bakup config with your server address and token can now push repos from any folder.
{ Daily use }
$ bakup init # like git init — once per folder $ bakup status # what changed? server connected? $ bakup commit -m "wip" # snapshot locally — works offline $ bakup push # upload to your server when reachable $ bakup log # history: ✓ pushed / ○ local $ bakup restore 20260706-031503 ./restored
Offline? commit still works — it saves locally and says
"no server connected — push when you're home." push refuses safely and changes nothing.
Automate it: bakup commit -m auto && bakup push in cron or Task Scheduler.
{ Requirements }
python3-requests for you. Other distros: use pip.kobraop9517/backup on Docker Hub.