57 lines
2.3 KiB
Markdown
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. |