Djeeberjr
818e58f179
All checks were successful
continuous-integration/drone/push Build is passing
too lazy to list things
67 lines
1.6 KiB
Markdown
67 lines
1.6 KiB
Markdown
Use [restic](https://restic.net/) 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_CONTENT` 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. Can also be passed as env var.
|
|
`/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:
|
|
|
|
```sh
|
|
#!/usr/bin/env sh
|
|
set -e
|
|
|
|
# get all volumes with the "backup.enable" label 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
|
|
```
|