Difference between revisions of "Off-site Backup with Backupninja"

From Run Your Own
Jump to: navigation, search
(Edit/Change the local filesystem path to include/exclude)
Line 6: Line 6:
 
* A <code>lurk</code> user created on the off-site backup that will be used specifically by the backup scripts
 
* A <code>lurk</code> user created on the off-site backup that will be used specifically by the backup scripts
 
* Debian based servers (not sure Backupninja will run otherwise without some slight modifications)
 
* Debian based servers (not sure Backupninja will run otherwise without some slight modifications)
* All the machines (servers and the backup machine) on a working Tinc VPN
+
* All the machines (servers and the backup machine) on a working [[VPN_with_Tinc | Tinc VPN]]
 
* Enough space on the off-site backup machine :)
 
* Enough space on the off-site backup machine :)
  
 
== On the Off-site machine ==
 
== On the Off-site machine ==
 
* As <code>lurk</code> create directories for each server
 
* As <code>lurk</code> create directories for each server
  mkdir /media/lurk_backup/douglas /media/lurk_backup/agnesbaxter
+
  mkdir /data/lurk/douglas /data/lurk/agnesbaxter
  
 
== On each server ==
 
== On each server ==
 
=== Installation ===
 
=== Installation ===
* As <code>root</code>
+
 
apt install backupninja
+
Clone Backupninja from https://0xacab.org/riseuplabs/backupninja
 +
 
 +
cd /usr/src/ && git clone https://0xacab.org/riseuplabs/backupninja
 +
cd /usr/src/backupninja
 +
 
 +
./autogen.sh
 +
./configure
 +
make
 +
make install
 +
 
 +
note that by running the above all configurations will be in <code>/usr/local/etc/</code>
  
 
=== Configuration ===
 
=== Configuration ===
Line 50: Line 60:
 
* leave ninjahelper
 
* leave ninjahelper
  
==== Rdiff backup ====
+
==== Borg Backup ====
 
This is the action that will not only allow you to select which part of your local filesystem to remotely send and rotate to the off-site backup machine, but it will also make sure the local backups above are sent as well!
 
This is the action that will not only allow you to select which part of your local filesystem to remotely send and rotate to the off-site backup machine, but it will also make sure the local backups above are sent as well!
  
* As <code>root</code> run the command:
+
* make sure you have <code>borgbackup</code> installed:
 +
apt install borgbackup
 +
 
 +
* As <code>root</code> run:
 
  ninjahelper
 
  ninjahelper
* create a new backup action
+
* create a new backup action, choose borg
* rdiff-backup
 
 
* choose file to include & exclude, add paths, wildcard accepted
 
* choose file to include & exclude, add paths, wildcard accepted
 
* configure backup destination:
 
* configure backup destination:
** keep <code>120D</code> (you can adjust if you will run out of space! Keep in mind this is incremental though, so don't panic)
+
** dest_directory <code>/data/lurk/name-of-server-to-backup</code>
** dest_directory <code>/media/lurk_backup/name-of-server-to-backup</code>
 
 
** dest_host <code>10.0.1.2</code> Adjust to the Tinc IP of the off-site backup machine.
 
** dest_host <code>10.0.1.2</code> Adjust to the Tinc IP of the off-site backup machine.
 
** dest_user <code>lurk</code>
 
** dest_user <code>lurk</code>
 
** dest_type <code>remote</code>
 
** dest_type <code>remote</code>
 
* set up ssh keys and test remote connection
 
* set up ssh keys and test remote connection
 +
* enable encryption, choose a nice long passphrase
 +
* enable pruning, keep <code>120D</code> (you can adjust if you will run out of space! Keep in mind this is incremental though, so don't panic)
 
* '''select the action and test/run/review the config'''
 
* '''select the action and test/run/review the config'''
 
* check that everything is showing up nicely on the backup server in the destination directory!
 
* check that everything is showing up nicely on the backup server in the destination directory!
Line 70: Line 83:
 
== Fine tuning ==
 
== Fine tuning ==
 
=== Edit/Change the local filesystem path to include/exclude ===
 
=== Edit/Change the local filesystem path to include/exclude ===
By default Babckupninja will backup some folder and exclude some others. This can be changed during the initial configuration of the rdiff action but can also be done later.
+
By default Babckupninja will backup some folder and exclude some others. This can be changed during the initial configuration of the borg action but can also be done later.
  
* As root, edit <code>/etc/backup.d/90.rdiff</code>
+
* As root, edit <code>/etc/backup.d/90.borg</code>
 
* Make changes in the section <code># files to include in the backup</code>
 
* Make changes in the section <code># files to include in the backup</code>
* '''Optional:''' run <code>ninjahelper</code>, select the <code>90.rdiff</code> action and <code>run</code> it to make sure it's being sent to the off-site machine. If you're sure of your changes, you can also wait the next backup to happen to see if it worked.
+
* '''Optional:''' run <code>ninjahelper</code>, select the <code>90.borg</code> action and <code>run</code> it to make sure it's being sent to the off-site machine. If you're sure of your changes, you can also wait the next backup to happen to see if it worked.
  
 
[[Category:System]]
 
[[Category:System]]

Revision as of 09:26, 25 July 2019

Goal: Setup a remote machine that will be used for incremental backup of critical parts of the LURK servers.

Requirements

This document assumes you already have:

  • A configure Linux/BSD machine to work as off-site backup
  • A lurk user created on the off-site backup that will be used specifically by the backup scripts
  • Debian based servers (not sure Backupninja will run otherwise without some slight modifications)
  • All the machines (servers and the backup machine) on a working Tinc VPN
  • Enough space on the off-site backup machine :)

On the Off-site machine

  • As lurk create directories for each server
mkdir /data/lurk/douglas /data/lurk/agnesbaxter

On each server

Installation

Clone Backupninja from https://0xacab.org/riseuplabs/backupninja

cd /usr/src/ && git clone https://0xacab.org/riseuplabs/backupninja
cd /usr/src/backupninja
./autogen.sh
./configure
make
make install

note that by running the above all configurations will be in /usr/local/etc/

Configuration

/etc/backupninja.conf

Some changes:

reportemail = some@where.nice
when = everyday at 05:55

MySQL local backups

  • As root run the command:
ninjahelper
  • create a new backup action
  • mysql database backup
  • path:
/var/backups/mysql # adjust if this location does not have much free space
  • all the databases to backup.
  • select the debian maintenance user for access
  • compress the sql output file
  • select the action and test/run/review the config
  • leave ninjahelper

PostgreSQL local backups

  • As root run the command:
ninjahelper
  • create a new backup action
  • postgresql database backup
  • path:
/var/backups/postgres # adjust if this location does not have much free space
  • backup the whole cluster
  • compress the backups
  • custom
  • select the action and test/run/review the config
  • leave ninjahelper

Borg Backup

This is the action that will not only allow you to select which part of your local filesystem to remotely send and rotate to the off-site backup machine, but it will also make sure the local backups above are sent as well!

  • make sure you have borgbackup installed:
apt install borgbackup
  • As root run:
ninjahelper
  • create a new backup action, choose borg
  • choose file to include & exclude, add paths, wildcard accepted
  • configure backup destination:
    • dest_directory /data/lurk/name-of-server-to-backup
    • dest_host 10.0.1.2 Adjust to the Tinc IP of the off-site backup machine.
    • dest_user lurk
    • dest_type remote
  • set up ssh keys and test remote connection
  • enable encryption, choose a nice long passphrase
  • enable pruning, keep 120D (you can adjust if you will run out of space! Keep in mind this is incremental though, so don't panic)
  • select the action and test/run/review the config
  • check that everything is showing up nicely on the backup server in the destination directory!

Fine tuning

Edit/Change the local filesystem path to include/exclude

By default Babckupninja will backup some folder and exclude some others. This can be changed during the initial configuration of the borg action but can also be done later.

  • As root, edit /etc/backup.d/90.borg
  • Make changes in the section # files to include in the backup
  • Optional: run ninjahelper, select the 90.borg action and run it to make sure it's being sent to the off-site machine. If you're sure of your changes, you can also wait the next backup to happen to see if it worked.