This repository has been archived on 2021-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
backup-bot/README.md

87 lines
2.0 KiB
Markdown

# backup-bot
[![Build Status](https://drone.autonomic.zone/api/badges/coop-cloud/backup-bot/status.svg)](https://drone.autonomic.zone/autonomic-cooperative/backup-bot)
A robot who does backups in the swarm.
## Publishing
If you push a commit to master, the [Drone config](./.drone.yml) will publish to [Docker Hub](https://hub.docker.com/r/decentral1se/backup-bot).
## Usage
`docker stack deploy -c compose.yml -c compose.backup.yml mycoolapp`
### compose.backup.yml
```yaml
backupbot:
image: "decentral1se/backup-bot:latest"
networks:
- backend
volumes:
- "wordpress_content:/var/www/html/wp-content/"
secrets:
- source: backup_bot_ssh_key
mode: 0400
- backup_bot_password
- db_password
configs:
- source: borgmatic_config_yml
target: /etc/borgmatic/config.yaml
environment:
- BORGBASE_REPO="foo@bar.repo.borgbase.com:repo"
- DB_HOST=mariadb
- DB_TABLE=wordpress
- DB_USER=wordpress
deploy:
mode: replicated
replicas: 0
labels:
- "swarm.cronjob.enable=true"
- "swarm.cronjob.schedule=0 2 * * *" # At 02:00
restart_policy:
condition: none
```
### borgmatic.yml
```yaml
location:
source_directories:
- /var/www/html/wp-content
repositories:
- { { env "BORGBASE_REPO" } }
storage:
compression: auto,zstd
encryption_passphrase: { { secret "backup_bot_password" } }
archive_name_format: "{hostname}-{now}"
ssh_command: "ssh -o 'StrictHostKeyChecking no' -i /run/secrets/backup_bot_ssh_key"
retention:
keep_daily: 3
keep_weekly: 4
keep_monthly: 12
keep_yearly: 2
prefix: "{hostname}-"
consistency:
checks:
- disabled
check_last: 3
prefix: "{hostname}-"
hooks:
before_backup:
- echo "`date` - Starting backup"
after_backup:
- echo "`date` - Finished backup"
mysql_databases:
- name: { { env "DB_TABLE" } }
hostname: { { env "DB_HOST" } }
port: 3306
username: { { env "DB_USER" } }
password: { { secret "db_password" } }
```