Sign inSign up

hensur/docker-restic

By hensur

•Updated about 6 years ago

docker image to create restic backups

Image
0

1.3K

hensur/docker-restic repository overview

⁠docker-restic

Docker Pulls Docker layers Github Stars Github Stars Github Forks

Restic is a fantastic backup tool. To wrap this in a usefull and flexible docker container there is this repo.

Includes:


⁠Usage

⁠Get latest image

You can run restic command very like this:

docker pull jsmitsnl/docker-restic:latest
docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" jsmitsnl/docker-restic \
                -v /:/data
                restic snapshots
⁠Create a docker-compose.yml

Adapt this file with your FQDN. Install docker-compose⁠ in the version 1.6 or higher.

restart: always ensures that the restic server container is automatically restarted by Docker in cases like a Docker service or host restart or container exit.

version: '2'

services:
  restic:
    restart: always
    image: jsmitsnl/docker-restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"

⁠Examples

Listed in these examples are also the defaults

to change the backup times:

For example you want to run the backup every day at 03:15.

version: '2'

services:
  restic:
    restart: always
    image: jsmitsnl/docker-restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - CRON_BACKUP_EXPRESSION="15   3  *   *   *"
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"

to change the clean times and periods:

For example you want to run the backup every day at 00:00

version: '2'

services:
  restic:
    restart: always
    image: jsmitsnl/docker-restic:latest
    hostname: backup
    domainname: domain.com
    container_name: restic
    volumes:
      - /:/data
    environment:
      - CRON_CLEANUP_EXPRESSION="0   0  *   *   *"
      - RESTIC_CLEANUP_KEEP_WEEKLY=5
      - RESTIC_CLEANUP_KEEP_MONTHLY=12
      - RESTIC_CLEANUP_KEEP_YEARLY=75
      - RESTIC_CLEANUP_OPTIONS="--prune"
      - RESTIC_BACKUP_OPTIONS="--exclude=/data/dir/*"
      - RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo"
      - AWS_ACCESS_KEY_ID="keyid"
      - AWS_SECRET_ACCESS_KEY="topsecret"
      - RESTIC_PASSWORD="some_good_hash"
⁠Start the container
docker-compose up -d restic

You're done!


⁠Commands to start with

A full explanation of the commands and options you can refer to the manual⁠ of restic⁠

⁠Initialize the repository
docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" jsmitsnl/docker-restic \
                -v /:/data
                restic init
⁠List the snapshots
docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" jsmitsnl/docker-restic \
                -v /:/data
                restic snapshots
⁠Restore a snapshot
docker run --rm -e RESTIC_REPOSITORY="s3:https://s3.amazonaws.com/some-repo" \
                -e AWS_ACCESS_KEY_ID="keyid" \
                -e AWS_SECRET_ACCESS_KEY="topsecret" \
                -e RESTIC_PASSWORD="some_good_hash" jsmitsnl/docker-restic \
                -v /:/data
                restic restore _id_ --target /data/restore_location
⁠Start a backup now when the container is running with the name restic
docker exec restic supervisorctl start restic_backup
⁠Run any command in the container
docker exec -ti restic _command_

⁠Environment variables

⁠RESTIC_BACKUP_OPTIONS
  • "" => None set by default
⁠RESTIC_CLEANUP_KEEP_DAILY
  • 7 => to keep 7 daily backups
⁠RESTIC_CLEANUP_KEEP_WEEKLY
  • 5 => to keep 5 daily backups
⁠RESTIC_CLEANUP_KEEP_MONTHLY
  • 12 => to keep 12 daily backups
⁠RESTIC_CLEANUP_KEEP_YEARLY
  • 75 => to keep 75 daily backups
⁠RESTIC_CLEANUP_OPTIONS
  • "--prune" => Clean the repository of old backups
⁠CRON_BACKUP_EXPRESSION
  • *"15 3 * * " => Fire at 03:15 every day
⁠CRON_CLEANUP_EXPRESSION
  • *"15 0 0 * " => Fire at 00:15 on the first day of every month

Tag summary

Content type

Image

Digest

Size

186.5 MB

Last updated

about 6 years ago

docker pull hensur/docker-restic