|
||
---|---|---|
.dockerignore | ||
.drone.yml | ||
.gitignore | ||
backup.sh | ||
docker-compose.yml | ||
Dockerfile | ||
entrypoint.sh | ||
interactive.sh | ||
README.md | ||
restore.sh | ||
setup.sh |
Use restic together with rclone for a poor mans backup solution.
Configuration
Environment variables:
RCLONE_REMOTE
remote for rclone e.g. gdrive:/backup
RCLONE_CONFIG
file path for the rclone config file e.g. /config/rclone.conf
RESTIC_PASSWORD
or RESTIC_PASSWORD_FILE
password for the repo
RCLONE_CONFIG_FILE
content of the rclone config.
For the database:
MYSQL_DUMP_DB
all databases comma sperated: db1,db2
MYSQL_HOST
MYSQL_USERNAME
MYSQL_PASSWORD
or MYSQL_PASSWORD_FILE
POSTGRES_DUMP_DB
all databases comma sperated: db1,db2
POSTGRES_HOST
POSTGRES_USERNAME
POSTGRES_PASSWORD
or POSTGRES_PASSWORD_FILE
Use the /app/init.sh
script to init a new remote.
Directorys
/config
Contains the rclone config.
/backup
Contains the mounted volumes as read only
/restore
Contains volumes to restore
Usage
Here is an example of the script i use to backup my volumes:
#!/usr/bin/env sh
set -e
# get all volumes with the "backup.enable" lable on it
BACKUP_VOL=$(docker volume ls --filter "label=backup.enable" --format '-v {{ .Name }}:/backup/{{ .Name }}:ro ')
docker run \
--rm \
-e "RCLONE_REMOTE=gdrive:/backup" \
-e "RCLONE_CONFIG=/config/rclone.conf" \
-e "ENC_PASSWORD=MyPassword" \
-e "MYSQL_USERNAME=root" \
-e "MYSQL_PASSWORD=dbPassword" \
-e "MYSQL_DUMP_DB=db1,db2" \
-e "MYSQL_HOST=databaseHost" \
--network "dbNet" \
-v "/var/docker/backup:/config" \
$BACKUP_VOL \
djeeberjr/backup \
backup