Skip to content

fphammerle/docker-borgbackup-client

Repository files navigation

BorgBackup Client Container Image 💾 🐳

Alpine-based image providing BorgBackup, OpenSSH client, and SSHFS

# 1. retrieve and authorize ssh client's public key
$ sudo docker run --name borgbackup_client --rm \
    -v borgbackup_client_home:/home/borg:rw \
    --read-only --security-opt=no-new-privileges --cap-drop=ALL \
    fphammerle/borgbackup-client \
    cat /home/borg/.ssh/id_ed25519.pub

# 2. add ssh server's host key to client's known_hosts file
$ sudo vim "$(sudo docker volume inspect --format '{{.Mountpoint}}' borgbackup_client_home)/.ssh/known_hosts"

# 3. set password for borg repository
$ tr -dc '1-9a-zA-Z' < /dev/random | head -c 64 \
    | sudo tee "$(sudo docker volume inspect --format '{{.Mountpoint}}' borgbackup_client_home)/borg-passphrase"

# 4. initialize borg repository
$ sudo docker run --name borgbackup_client --rm \
    -v borgbackup_client_home:/home/borg:rw \
    --read-only --security-opt=no-new-privileges --cap-drop=ALL \
    --tmpfs /tmp:size=4M \
    -e BORG_PASSCOMMAND="cat /home/borg/borg-passphrase" \
    fphammerle/borgbackup-client \
    borg init --encryption=repokey ssh://username@host//repository

# 5. create snapshot / backup
$ sudo docker run --name borgbackup_client --rm \
    -v borgbackup_client_home:/home/borg:rw \
    -v ~/documents:/data/documents \
    -v ~/photos:/data/photos \
    -v … \
    --tmpfs /tmp:size=4M \
    -e BORG_PASSCOMMAND="cat /home/borg/borg-passphrase" \
    fphammerle/borgbackup-client \
    borg create --stats --list "ssh://username@host//repository::$(hostname)-{utcnow}" /data

sudo docker may be replaced with podman.

Pre-built docker images are available at https://hub.docker.com/r/fphammerle/borgbackup-client/tags (mirror: https://quay.io/repository/fphammerle/borgbackup-client?tab=tags)

Annotation of signed git tags docker/* contains docker image digests: https://github.com/fphammerle/docker-borgbackup-client/tags

Detached signatures of images are available at https://github.com/fphammerle/container-image-sigstore.