55 lines
2.0 KiB
Markdown
55 lines
2.0 KiB
Markdown
|
# Burgerbackup
|
||
|
|
||
|
## 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.
|