diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-12-24 16:50:43 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-12-24 16:50:43 +0100 |
commit | 114f3b7b70680b40b7b96e373ee2b366c0c3ce4e (patch) | |
tree | 1666a2f6e0b60e3db0aa015f6bcdb1e7c523e6ba /README.md | |
parent | d0d65182287b68216f2a8ea50157dfa73186ec1c (diff) |
initial thoughts on architecture
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 47 |
1 files changed, 39 insertions, 8 deletions
@@ -1,10 +1,41 @@ -# hbak -Simple distributed backup utility for btrfs. +hbak +==== -# Dependencies +Distributed backup utility for btrfs. -* btrfs-progs -* gpg -* netcat -* pv -* socat +This project aims to automate decentralised and end-to-end encrypted +backups of all of my machines and to provide a simple command-line interface +for administration and recovery. + +Architecture +============ + +This program is designed primarily for use in an internal home network. +There will be support for both push and pull models in order to enable usage +across unidirectional firewalls, making it possible to use this tool +on multiple VLANs or even the public internet. + +All backups will be encrypted before leaving the host they originated from. +The nodes will also transmit encrypted metadata to handle multi-host setups, +timestamps and storage locations. + +Nodes will mutually authenticate using pre-shared secrets. + +The backups themselves will be btrfs snapshots with some being fully exported +and others being incremental with respect to the latest full backup at the time +of their creation. + +The `/etc/fstab` file should be handled in some way, though the final solution +doesn't exist yet. It could be updated automatically or manually using a +command-line flag or subcommand, or be left to the user with a warning message. + +Components +---------- + +There are two main components: + +* hbak: The main snapshotter handling encryption and file distribution. +* hbakd: A background process responsible for handling push and pull requests. + +Both programs require root privileges. Automation is handled externally +by tools like cron or anacron. |