burgerbackup/README.md

57 lines
2.3 KiB
Markdown

# burgerbackup
[![wakatime](https://wakatime.com/badge/user/754e87c4-b184-4291-9f4e-0392f3c2126c/project/f9a958bf-00cf-4d69-a0fe-f640913f47d6.svg)](https://wakatime.com/badge/user/754e87c4-b184-4291-9f4e-0392f3c2126c/project/f9a958bf-00cf-4d69-a0fe-f640913f47d6)
## 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.