Go to file
2021-12-27 21:54:34 -08:00
.github Added: Dependabot.yml 2021-12-20 20:26:27 +01:00
hooks Update mutli-arch builds on docker hub 2020-02-10 19:10:52 -08:00
scripts Fix location of scripts in cron 2021-06-15 14:50:03 -07:00
tests Add tests 2021-06-15 12:30:02 -07:00
.dockerignore Clean test scripts 2018-05-13 10:31:31 -07:00
.gitignore Complete sample docker-compose.yaml 2019-02-01 17:03:34 -08:00
.pre-commit-config.yaml Add pre-commit and lint 2021-06-14 15:57:51 -07:00
.travis.yml Update travis 2018-08-12 16:56:28 -07:00
docker-compose.yaml Complete sample docker-compose.yaml 2019-02-01 17:03:34 -08:00
Dockerfile Make config dir a volume to presist restic configs 2021-06-15 13:21:09 -07:00
LICENSE Initial commit 2017-03-18 17:00:44 -07:00
Makefile Add tests 2021-06-15 12:30:02 -07:00
Readme.md Update readme to show proper location of restore script 2021-06-17 13:28:03 -07:00

Restic Backup

Build Status


Mount any directories you'd like to back up as a volume and run

Env Variables

Variable Default Description
AWS_ACCESS_KEY_ID Required for writing to S3 or Minio
AWS_SECRET_ACCESS_KEY Required for writing to S3 or Minio
B2_ACCOUNT_ID Required for writing to B2
B2_ACCOUNT_KEY Required for writing to B2
BACKUP_DEST /backups Destination to store backups (See restic documenation)
CLEANUP_COMMAND Optional restic arguments for forget to execute after backups to clean older ones out (eg. "--prune --keep-last 2"). See forget
CRON_SCHEDULE If you want to periodic incremental backups on a schedule, provide it here. By default we just backup once and exit
OPT_ARGUMENTS Any additional arguments to provide to the restic command
RESTIC_PASSWORD Passphrase to use for encryption
PATH_TO_BACKUP /data The path to the directory you wish to backup
RESTORE_ON_EMPTY_START Set this to "true" and if the $PATH_TO_BACKUP is empty, it will restore the latest backup. This can be used for auto recovery from lost data
SKIP_ON_START Skips backup on start if set to "true"
VERIFY_CRON_SCHEDULE If you want to verify your backups on a schedule, provide it here



Hostname is used for identifying what you are backing up. You may want to specify this on your container.

Backing up from another container

Mount all volumes from your existing container with --volumes-from and then back up by providing the paths to those volumes. If there are more than one volumes, you'll want to use the above tip for mulitple backup sources

Restoring a backup

On your running container, execute /scripts/restore.sh. That should be that! Eg. docker exec my_backup_container /scripts/restore.sh

Backup to any rclone destination

This image also contains rclone. This allows you to target any destination supported by rclone. Check out the official documentation to see how to configure this.

Rather than having to use an exec shell inside the container, I recommend configuring via the backup destination. For example: rclone::ftp,env_auth:/test-restic and then passing all config values via the environment.

Pre/post backup/restore scripts

Before and after any backup or restore, scripts located in /scripts/{backup,restore}/{before,after}/ will be executed. This can be used to do things like snapshotting a database before backing it up and restoring the contents.