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