Bahub API client¶
Bahub is an automation tool for uploading and restoring backups. Works in shell, can work as a docker container in the same network with scheduled automatic backups of other containers, or can work as an UNIX daemon on the server without containerization.

Contents:
Setup¶
Bahub can be running as a separate container attached to docker containers network or manually as a regular process. The recommended way is to use a docker container, which provides a working job scheduling, installed dependencies and preconfigured most of the things.
Using docker container¶
There exists a bahub tag on the docker hub container, wolnosciowiec/file-repository:bahub You can find an example in “examples/client” directory in the repository.
docker-compose.yml
version: "2"
services:
backup:
image: wolnosciowiec/file-repository:bahub
volumes:
- "./cron:/cron:ro"
- "./config.yaml:/bahub.conf.yaml:ro"
- "/var/run/docker.sock:/var/run/docker.sock"
environment:
- BACKUPS_ENCRYPTION_PASSPHRASE=some-very-long-passphrase-good-to-have-there-64-characters-for-example
- BACKUPS_TOKEN=111111-2222-3333-4444-55555555555555
- BACKUPS_REDIS_COLLECTION_ID=12345678-cccc-bbb-aaa-1232313213123
- COMPOSE_PROJECT_NAME=test_client
redis:
image: redis:3-alpine
volumes:
- ./redis:/data
command: "redis-server --appendonly yes"
/cron
# schedule REDIS server backup on every Monday, 02:00 AM
0 2 * * MON bahub backup some_redis_storage
/bahub.conf.yaml (see: Configuration reference)
accesses:
some_server:
url: http://api.some-domain.org
token: "${BACKUPS_TOKEN}"
encryption:
my_aes:
passphrase: "${BACKUPS_ENCRYPTION_PASSPHRASE}"
method: "aes-128-cbc"
backups:
some_redis_storage:
type: docker_volumes
container: "${COMPOSE_PROJECT_NAME}_redis_1"
access: some_server
encryption: my_aes
collection_id: "${BACKUPS_REDIS_COLLECTION_ID}"
paths:
- "/data"
Note: It’s very important to specify the project name in docker-compose with “-p”, so it will have same value as “COMPOSE_PROJECT_NAME”. You may want to add it to .env file and reuse in Makefile and in docker-compose.yml for automation*
Using bare metal¶
Use Python’s PIP to install the package, and run it.
pip install bahub
bahub --help