From ca24f7dae70c36ffb82adddde4f95faa7f74e840 Mon Sep 17 00:00:00 2001 From: Nick Stokoe Date: Wed, 28 May 2025 11:34:34 +0100 Subject: [PATCH] templates/docker-compose/ - update Borgmatics image It's necessary to update to the `latest` image because the `latest-msmtp` image is now unmaintained and doesn't support postgres 17. However, this means we need to adjust things (the backup script and the environment variable config) because we need to use the latest notification mechanism, `apprise` instead of msmtp. Tested, seems to be working. --- templates/docker-compose/borgmatic.env.j2 | 1 + templates/docker-compose/borgmatic/Dockerfile | 2 +- templates/docker-compose/borgmatic/backup.sh | 12 ++++-------- templates/docker-compose/docker-compose.yml | 16 +++++++--------- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/templates/docker-compose/borgmatic.env.j2 b/templates/docker-compose/borgmatic.env.j2 index 198b5e9..237470a 100644 --- a/templates/docker-compose/borgmatic.env.j2 +++ b/templates/docker-compose/borgmatic.env.j2 @@ -1,2 +1,3 @@ POSTGRES_PASSWORD={{ nextcloud_db_password }} BORG_PASSPHRASE={{ borg_passphrase }} +SMTP_PASSWORD={{ smtp_password }} diff --git a/templates/docker-compose/borgmatic/Dockerfile b/templates/docker-compose/borgmatic/Dockerfile index b39d1c5..d725c78 100644 --- a/templates/docker-compose/borgmatic/Dockerfile +++ b/templates/docker-compose/borgmatic/Dockerfile @@ -1,4 +1,4 @@ -FROM b3vis/borgmatic:latest-msmtp +FROM b3vis/borgmatic:latest # Install stdbuf, used by backup.sh RUN \ diff --git a/templates/docker-compose/borgmatic/backup.sh b/templates/docker-compose/borgmatic/backup.sh index 06a426d..9bb49fa 100755 --- a/templates/docker-compose/borgmatic/backup.sh +++ b/templates/docker-compose/borgmatic/backup.sh @@ -1,7 +1,7 @@ #!/bin/sh # Run the backup and mail the logs: # Depending on parameter 1: -# - test-smtp: just send a test email to $MAIL_TO +# - test-smtp: just send a test email using $APPRISE_URI # - run: create the backup, no checks # - check: prune, compact and check the backup # Anything else is an error. @@ -9,8 +9,6 @@ set -o pipefail # Set up environment -/bin/sh /scripts/msmtprc.sh -/bin/sh /scripts/env.sh RUN_COMMAND="borgmatic --stats -v 2 create" CHECK_COMMAND="borgmatic --stats -v 1 prune compact check" LOGFILE="/tmp/backup_run_$(date +%s).log" @@ -43,14 +41,12 @@ report() { log echo "FAILED: $RESULT" PREFIX="$FAILED_PREFIX" fi - printf "Subject: %s: '%s'\n\n%s\n" "$PREFIX" "$PARAM" "$(cat $LOGFILE)" | - sendmail -t "$MAIL_TO" + apprise -vv -t "$PREFIX: '$PARAM'" -b "$(cat $LOGFILE)" "$APPRISE_URI&pass=$SMTP_PASSWORD" log echo "Report sent." } testmail() { - echo -e "Subject: TESTING!\n\ntest mail, please ignore\n" | - sendmail -t "$MAIL_TO" + apprise -vv -t "TESTING!" -b "test mail, please ignore." "$APPRISE_URI&pass=$SMTP_PASSWORD" } failed() { @@ -72,7 +68,7 @@ trap cleanup EXIT case "$PARAM" in test-smtp) - echo "Testing mail to $MAIL_TO" + echo "Testing mail to via Apprise ($APPRISE_URI)" testmail echo "Done." ;; diff --git a/templates/docker-compose/docker-compose.yml b/templates/docker-compose/docker-compose.yml index e69321c..6291f2c 100644 --- a/templates/docker-compose/docker-compose.yml +++ b/templates/docker-compose/docker-compose.yml @@ -260,20 +260,18 @@ services: - ./volumes/borg-ssh-config:/root/.ssh/ # ssh keys; sshd writes knownhosts etc here environment: + # Work around the use of a fancy init system s6: + # https://github.com/borgmatic-collective/docker-borgmatic/issues/320#issuecomment-2089003361 + S6_KEEP_ENV: 1 + POSTGRES_USER: nextcloud POSTGRES_DB: nextcloud POSTGRES_HOST: postgres BORG_ARCHIVE: nick BORG_ARCHIVE_LABEL: snackpot - MAIL_RELAY_HOST: mail.noodlefactory.co.uk - MAIL_PORT: 25 - MAIL_AUTH_METHOD: login - MAIL_STARTTLS: 'on' - MAIL_USER: nc.noodlefactory.co.uk - MAIL_FROM: borgmatic@snackpot.noodlefactory.co.uk - MAIL_TO: nick@noodlefactory.co.uk - MAIL_SUBJECT: Borgmatic Backup - # MAIL_PASSWORD is set via volumes/borgmatic-config/msmtp.env, created via ansible + APPRISE_URI: "mailtos://mail.noodlefactory.co.uk:25?user=nc.noodlefactory.co.uk&from=borgmatic@snackpot.noodlefactory.co.uk&to=nick@noodlefactory.co.uk" + # SMTP_PASSWORD is set via borgmatic.env, created via ansible, + # and appended to APPRISE_URL by borgmatic/backup.sh script # Test SMTP auth on the server https://doc.dovecot.org/admin_manual/debugging/debugging_authentication/ env_file: - ./borgmatic.env