From d1a4ed0f7918005dc8972a83a919b99616f79112 Mon Sep 17 00:00:00 2001 From: Quentin Dufour Date: Sat, 6 Mar 2021 19:52:13 +0100 Subject: Matrix backup draft --- app/backup/build/backup-matrix/Dockerfile | 22 ++++++++++ app/backup/build/backup-matrix/do_backup.sh | 27 +++++++++++++ app/backup/deploy/backup-manual.hcl | 62 +++++++++++++++++++++++++++++ app/docker-compose.yml | 10 +++++ 4 files changed, 121 insertions(+) create mode 100644 app/backup/build/backup-matrix/Dockerfile create mode 100755 app/backup/build/backup-matrix/do_backup.sh create mode 100644 app/backup/deploy/backup-manual.hcl diff --git a/app/backup/build/backup-matrix/Dockerfile b/app/backup/build/backup-matrix/Dockerfile new file mode 100644 index 0000000..34b6040 --- /dev/null +++ b/app/backup/build/backup-matrix/Dockerfile @@ -0,0 +1,22 @@ +FROM golang:buster as builder + +WORKDIR /root +RUN git clone https://filippo.io/age && cd age/cmd/age && go build -o age . + +FROM amd64/debian:buster + +COPY --from=builder /root/age/cmd/age/age /usr/local/bin/age + +RUN apt-get update && \ + apt-get -qq -y full-upgrade && \ + apt-get install -y rsync wget openssh-client postgresql-client && \ + apt-get clean && \ + rm -f /var/lib/apt/lists/*_* + +RUN mkdir -p /root/.ssh +WORKDIR /root + +COPY do_backup.sh /root/do_backup.sh + +CMD "/root/do_backup.sh" + diff --git a/app/backup/build/backup-matrix/do_backup.sh b/app/backup/build/backup-matrix/do_backup.sh new file mode 100755 index 0000000..d7dd9f2 --- /dev/null +++ b/app/backup/build/backup-matrix/do_backup.sh @@ -0,0 +1,27 @@ +#!/bin/sh + +set -x -e + +cd /root + +chmod 0600 .ssh/id_ed25519 + +cat > .ssh/config < $TARGET_SSH_DIR/matrix/db-$(date --iso-8601=minute).gz.age" + +MATRIX_MEDIA="/mnt/glusterfs/chat/matrix/synapse/media" +echo "export local_content" +tar -vcf - ${MATRIX_MEDIA} | \ + age -r "$(cat /root/.ssh/id_ed25519.pub)" | \ + ssh backuphost "cat > $TARGET_SSH_DIR/matrix/media-$(date --iso-8601=minute).gz.age" diff --git a/app/backup/deploy/backup-manual.hcl b/app/backup/deploy/backup-manual.hcl new file mode 100644 index 0000000..2e6ffef --- /dev/null +++ b/app/backup/deploy/backup-manual.hcl @@ -0,0 +1,62 @@ +job "backup_manual" { + datacenters = ["dc1"] + + type = "batch" + + task "backup-matrix" { + driver = "docker" + + config { + image = "superboum/backup_matrix:1" + volumes = [ + "secrets/id_ed25519:/root/.ssh/id_ed25519", + "secrets/id_ed25519.pub:/root/.ssh/id_ed25519.pub", + "secrets/known_hosts:/root/.ssh/known_hosts" + ] + network_mode = "host" + } + + env { + CONSUL_HTTP_ADDR = "http://consul.service.2.cluster.deuxfleurs.fr:8500" + } + + template { + data = <