Use BackupPc on Synology NAS with Docker

I always searched a backup solution who will fit my needs and I finally discovered BackupPc. One of my client was using it with another provider and asked me to host their data. And then..

What’s BackupPc?

It’s a backup solution for servers/desktops with no “agent”. This mean you only need to install the BackupPc server at one place and it doesn’t require any other installation on your server (execpt copying a ssh public key).

Why BackupPc?

Backup is the nerve of the war, and I already used plenty solutions of backup, and I never was completly happy with the solution I found. BackupPc supports full/incremental backup, backup rotation, pre/post script run, a web interface to display backups, etc… I used Active Server Backup from Synology, and other solutions, but they aren’t full as BackupPc is doing.

Why on a Synology NAS

This was more a requirement for myself, because I want to have the backup “at home”, or “at the office”. The only issue with that you will need a strong internet connection, who is (from my point of view) not a problem anymore now. As my NAS is running in RAID-5, data “protection” is enabled, and data are at home. You can install this on a dedicated server, or anything else, this lecture will works for all UNIX server :)

Requirements

What you will need is a NAS compatible with Docker, you can find the list here: https://www.synology.com/en-global/dsm/packages/Docker
If you don’t own one of the models listed, you won’t be able to go further. You will need rsync installed on your host.

On of my recommendation is to have at least a 4-Bay and like 100mb/s of connection, this is not mandatory, but it’s better :)

If you meet this requirement, you can just go on your Synology NAS and install Docker.

You will need to create 3 folders named data, etc and home. Create wherever you want, it doesn’t matter.

Installation

First step of the install, you will need to “download” a docker image of BackupPC on your NAS. Personally, I’m using the “adferrand/backuppc” image.

Download BackupPC Image

If you are runing an Unix server with Docker installed, you can read this guide: https://hub.docker.com/r/adferrand/backuppc/

Once the image is pulled, do just on “image” and hit the “Launch” button. Name is as you want and check the “Execute container using high privilege”. (I had issue when I was running it without high privilege, don’t ask me why).

Now you need to go on the “Advanced Settings” to configure Volumes and the Port mapping. Please do the following configuration:

home : /home/backuppc
etc : /etc/backuppc
data : /data/backuppc
Volumes configuration

For the Port settings, I recommend to set a “local port” instead of the auto one, it will be simplier to run.

Port mapping configuration

Once the configuration is done, just click on OK and Next. You will have a resume of your config and the hit Apply.

Once the container is running, you will have to do at least one last thing, set permissions to the “password” file. You can go on the “File station”, navigate to your BackupPC folder and then check the properties of the “etc” folder.

You will need to change the Owner to 1000 (you will need to be admin to run this). And on the permission tab, check that “everyone” can read the folders.

Once it’s done, just go your <NAS_IP>:8080 (or the port you choose) and you can now configure BackupPC. (Default login are backuppc/password).

Quick BackupPC configuration

Once you are on the interface, hit “Edit hosts” and add your server in it. You will need to copy the public key on your UNIX server. You will find it on the “home” folder of BackupPC that you created and mapped earlier. (Just add it to your ~/.ssh/authorized_keys file).

The last thing you will need to do, is to go on the XFer tab and select “rsync” instead of “smb”. Once it’s done, navigate to your host, run backup, configure it and do what you want! :)

Here is my current setup to backup only 2 folders

I won’t go further on BackupPC configuration for now, but it’s a good entry point. I will update it in the future for the advanced configuration, but I guess you can find on your own the documentation.