burgerbackup/README.md

2.3 KiB

burgerbackup

wakatime

What is this?

It's a simple backup program that sends files to a server. It does this periodically and is designed to have one daemon attached to each file you want to back up.

No, you can't back up a directory. You have to back up each file individually. This is so I don't have to implement tarballs.

It uses AES-256 GCM encryption with a ARGON2ID key derivation function. The key is derived from a password you specify in the config file.

That's practically the most secure encryption you get without breaking some sort of NSA law. It may already be breaking some sort of NSA law. I don't know. I'm not a lawyer.

How does it work?

  1. You run the server on a machine you want to store your backups on.
  2. You run the client on a machine you want to back up files from.
  3. The client sends the server an authentication request, and a password hashed with a salt in SCRYPT.
  4. The client AES encrypts the file and sends it to the server in the same request
  5. The server verifies the hash with its own password, then decrypts the file it and stores it.
  6. The client repeats from step 3 after a specified interval.

Installing

First, have Go installed. Latest version. What are we? Debian?

Run as root

CDIR=$PWD
cd /tmp
git clone https://concord.hectabit.org/hectabit/burgerbackup.git
cd burgerbackup
make install
cd $CDIR
CDIR=

This also puts your environment back to where it was before you started. How nice of me.

Compiling

Root not required. Just run

git clone https://concord.hectabit.org/hectabit/burgerbackup.git
cd burgerbackup
make

The binaries will be located in /dist/bin/

Configuring

Config file

The default config file is located at /etc/burgerbackup/(client/server).ini. You can specify a different config file as a command line argument to either program.

A default config file is provided in (REPO ROOT)/bin/(client/server)/config.ini.example. You can copy this file and modify it to your needs.

Modifying the config is not optional, unless you want some idiot to send random files to your server.