bioneos / alcove

Our Unix backup system redesigned with Node.js
ISC License
0 stars 6 forks source link
backup rsync unix

logo

Alcove Backup System

Yes... we now have a name!

The Bio::Neos backup system has a long history, starting as a BASH script written by @rossj when he was a high school intern for us, then later converted to a Ruby script, with an addition of Sinatra for a basic monitoring web interface, then an initial porting to NodeJS by @malyon. After the port of the Ruby version, more or less directly, we needed to do a big reorganization to adjust to Node / JS norms. Although I am sure we still have a long way to go with this, the basic functionality in this updated version is mostly in place.

Now we have decided to put this in a more public location before finishing the work on it, enter: GitHub. If you would like to contribute, comment, or just review the system -- go ahead and browse around. We welcome any and all helpful commentary.

Requirements

Required version of Node.js: 10.x

Older versions might work as well, but recent development has been using this version of Node exclusively.

Usage

The system will not start without a system config and at least one machine config.

System Config

Look at the example in <project_root>/etc/alcove/alcove.ini.example. Your config only needs to contain the required options that don't have defaults (data_dir, notifications.email_to & notifications.email_from)

Machine Config

Look at the example in <project_root>/etc/alcove/machines/machine.ini.example. Your config only needs to have the required options. (name, ip, and schedule)

Connections

The system using rsync over an SSH connection, and works best if you do not have to worry about permission issues. For this reason, the system should be authorized to connect to the remote machine using the root user with an strong SSH Key Pair. By default, the connection will use the identity of the user that runs the system (~/.ssh/id_rsa), but we suggest generating a new identity just for this system, and to enable automated operation you cannot set a passphrase with this key.

$ ssh-keygen -f <project_root>/etc/backup/id_rsa

Within your config specify this identity with the option rsync.identity by setting it equal to the location of the private key id_rsa with the public key accessible at the same level.

Be sure to set the appropriate username and permissions if the key is generated by a user different than the one that will be used to execute this system.