A simple docker container for running Backuppc at the latest version (3.3.1).
Backuppc is an unattended backup solution for individuals who need to manage multiple machine
backups for the 2 "F" (Friends and Family), and for organizations that do not want to spend
large amounts of money and a lot of effort on backup management tasks.
I've leveraged a couple of exiting container projects (see attributions below).
If you have a current installation of backuppc with custom of configuration and backed up data you would want to be able to migrate to the docker deployment of the backuppc without an interruption of your backup schedule. I build this container with specifically this in mind. The Migration section below will address the migration of the existing backuppc installation to run in this container.
- This container installs BackupPC from Ubuntu Xenial sources.
- On startup it checks if the provided volumes for data and configuration are
empty and if yes, move the default configuration from packaging into it
- On startup it checks if the provided volumes for data and configuration are
- Several configuration values like the expected container time zone
have been placed into the overrides.sh look at the Customization section below - Support for sending status mail using msmtp
- the image ip address of eth0 will be used for host line in the msmtprc
if a different behavior is desired replace the value for the LOCAL_ADDR in
the overrides.sh
- the image ip address of eth0 will be used for host line in the msmtprc
- No authentication
- SSH host key checking disabled
- If the data volume is empty, a new SSH key pair gets generated at startup
- The time zone is set to Americas/New_York
- the msmtp host is set to the eth0 ip address
- the mail domain name is set to 'default.com'
- the backuppc user password is set to 'password'
/var/lib/backuppc
: Persistent data for backuppc, including ssh key/etc/backuppc
: Configuration for backuppc
80
: Web interface for BackupPC
- change backuppc htaccess password in the overrides.sh
the line readsexport BACKUPPC_PASSWORD=password
replace thepassword
with an actual password you want to use - change local time zone (if needed) in the overrides.sh
the line readsexport LOCAL_ZONE=America/New_York
- Please modify the default domain in the overrides.sh file
replace the default.com with a real domain name
the line readsexport DOMAIN_NAME=default.com
- Use either the
make
ordocker
instructions below
Note: build at least once using one of the options below ...
You can override the default name of the container, $containername
(backuppc) prior to launching the container
for example: containername=BOB; make run
-
execute
make
- this will list the available targets and variables that can be overwritten
-
execute
make kill
- this will stop a running container
-
execute
make start
- this will start a stopped container
-
execute
make clean
- this will call
kill
and clean up the default folders- WARNING: do not run this (or any targets that will trigger this) if you
overwrote the
tmp_configpath
and/ortmp_datapath
with folders that point to the 'real' configuration and/or data folders.
- WARNING: do not run this (or any targets that will trigger this) if you
overwrote the
- this will call
-
execute
make build
- this will call
clean
and (re)build the container
(with default, initially empty, backup and config folders)
- this will call
-
execute
make run
- this will call
build
andlaunch
targets
(Not safe for 'real'tmp_configpath
and/ortmp_datapath
)
- this will call
-
execute
make launch
- This will run a container (without rebuilding it)
The purpose of this is when you want to rebuild a container that's pointing to 'real' folders .
(this safe for 'real' locations fortmp_configpath
and/ortmp_datapath
)
Runmake build
pointing to the defaulttmp_configpath
andtmp_datapath
, then overriding thetmp_configpath
and/ortmp_datapath
runmake launch
.
This will recreate the container but will not wipe out your 'real' directories.
- This will run a container (without rebuilding it)
-
execute
make preserve
- this make a backup of the default config folders as
backuppc-$containername.<date time>.tar.gz
archive under your id- WARNING: expects that
make run
was executed and not followed with aclean
orbuild
,kill
is OK, it does not delete the default folders
I would NOT recommend doing this with a multi-terabyte 'real' data folder ...
- WARNING: expects that
- this make a backup of the default config folders as
-
execute
make enter
- this will call
start
, thenlogs
then open a bash shell in the running container
- this will call
-
execute
make logs
- this will show the logs of the running container
(expects at leastmake run
,make launch
ormake start
as a prerequisite)
- this will show the logs of the running container
set some variables, for example
DATA=<BackupPC data folder>
CONF=<BackupPC configuration folder>
PORT=<the local port, ex 8080>
CNAME=<container name>
DOCKERHUB_USER=<your docker hub id>
then run the commands as follows
sudo docker build -t $DOCKERHUB_USER/backuppc:latest .
sudo docker run -d -v $DATA:/var/lib/backuppc:z \
-v $CONF:/etc/backuppc:z -p $PORT:80 \
--name $CNAME $DOCKERHUB_USER/backuppc:latest
Migration is fairly straight forward.
- build and launch the image as described above.
- use the
make preserve
target above to backup the default installation folders
This task will save the default config and the default data folders to the home folder of the user in a tar.gz format
ex:backuppc-backuppctest.20160410-113538.tar.gz
this backup was done for the default container name on April 10th 2016 - Shutdown backuppc and make a backup of your configuration and data folders
(I know it's a pain, since you will need a literal ton of space for the data portion, however if anything goes sideways like it tends to do. you'll be happy you did) - un-tar (using tar -xvf
name
) and compare your/etc/backuppc
and your/var/lib/backuppc
folders with the defaults. You will need to adjust your config to leverage this installation elements like.ssh
and.msmtprc
in the data folder. - stop and start this container pointing to your newly merged configuration and data folders instead
of the default temp ones (see instructions for the Using
docker
above
This project was created in early 2016 and at this time to get the latest version would require either, building from source or leveraging ubuntu:xenial I've built this project from source before and would prefer leveraging exiting distribution so I've pointed the build to ubuntu:xenial instead of "ubuntu:latest, to be fair if xenial (16.04) will turn out to be not as stable as I would like, I may change my mind again and just build from source. I hope that since xenial will be the next LTS release I will be vindicated in my decision. I will modify the base image for this container once the xenial is switched to latest.
Nick Rapoport
Copyright© 2016 Nick Rapoport -- All rights reserved (free for duplication under the AGPLv3)
AGPLv3
2016-03-28