From ffd320109bfaf12f2cca0fb8d04f1ef523d7facb Mon Sep 17 00:00:00 2001
From: Marcel Schmidt <10891885+marcelschmidtdev@users.noreply.github.com>
Date: Sun, 13 Oct 2024 17:35:10 +0200
Subject: [PATCH] Improved Borgmatic tutorial: no longer expose credentials and
 passphrase in the config file (#767)

---
 .../borgmatic/third_party-borgmatic.de.md       | 17 +++++++----------
 .../borgmatic/third_party-borgmatic.en.md       | 17 +++++++----------
 2 files changed, 14 insertions(+), 20 deletions(-)

diff --git a/docs/third_party/borgmatic/third_party-borgmatic.de.md b/docs/third_party/borgmatic/third_party-borgmatic.de.md
index 8ffcf5d1e..657917a88 100644
--- a/docs/third_party/borgmatic/third_party-borgmatic.de.md
+++ b/docs/third_party/borgmatic/third_party-borgmatic.de.md
@@ -40,7 +40,10 @@ services:
       - ./data/conf/borgmatic/ssh:/root/.ssh:Z
     environment:
       - TZ=${TZ}
-      - BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere
+      - BORG_PASSPHRASE=${BORG_PASSPHRASE}
+      - DBNAME=${DBNAME}
+      - DBUSER=${DBUSER}
+      - DBPASS=${DBPASS}
     networks:
       mailcow-network:
         aliases:
@@ -51,22 +54,16 @@ volumes:
   borg-config-vol-1:
 ```
 
-Stellen Sie sicher, dass Sie die `BORG_PASSPHRASE` in eine sichere Passphrase Ihrer Wahl ändern.
+Fügen Sie `BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere` zu Ihrer `mailcow.conf` hinzu und stellen Sie sicher, dass Sie die `BORG_PASSPHRASE` in eine sichere Passphrase Ihrer Wahl ändern.
 
 Aus Sicherheitsgründen mounten wir das maildir als schreibgeschützt. Wenn Sie später Daten wiederherstellen wollen,
 müssen Sie das `ro`-Flag entfernen, bevor Sie die Daten wiederherstellen. Dies wird im Abschnitt über die Wiederherstellung von Backups beschrieben.
 
 ### Erstellen Sie `data/conf/borgmatic/etc/config.yaml`
 
-Als nächstes müssen wir die borgmatic-Konfiguration erzeugen. Das Erstellen der Datei auf die hier beschriebene Weise stellt sicher, dass die korrekten MySQL-Zugangsdaten aus `mailcow.conf` übernommen werden.
+Als nächstes müssen wir die borgmatic-Konfiguration erzeugen. Borgmatic unterstützt Umgebungsvariableninterpolation, dadurch erhalten wir die korrekten MySQL-Zugangsdaten über Docker bzw. über unsere `mailcow.conf`, ohne dass diese in der Konfigurationsdatei offengelegt werden.
 
-Zunächst laden wir `mailcow.conf`, um Zugriff auf die mailcow-Einstellungen innerhalb des nachfolgenden Kommandos zu erhalten.
-
-```bash
-source mailcow.conf
-```
-
-Das nächste Kommando erzeugt dann die borgmatic-Konfigurationsdatei mit den korrekten Zugangsdaten. Vergewissern Sie sich, alle folgenden Zeilen zu kopieren!
+Vergewissern Sie sich, alle folgenden Zeilen zu kopieren!
 
 ```bash
 cat <<EOF > data/conf/borgmatic/etc/config.yaml
diff --git a/docs/third_party/borgmatic/third_party-borgmatic.en.md b/docs/third_party/borgmatic/third_party-borgmatic.en.md
index a5f3a726e..abed8b51a 100644
--- a/docs/third_party/borgmatic/third_party-borgmatic.en.md
+++ b/docs/third_party/borgmatic/third_party-borgmatic.en.md
@@ -41,7 +41,10 @@ services:
       - ./data/conf/borgmatic/ssh:/root/.ssh:Z
     environment:
       - TZ=${TZ}
-      - BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere
+      - BORG_PASSPHRASE=${BORG_PASSPHRASE}
+      - DBNAME=${DBNAME}
+      - DBUSER=${DBUSER}
+      - DBPASS=${DBPASS}
     networks:
       mailcow-network:
         aliases:
@@ -52,22 +55,16 @@ volumes:
   borg-config-vol-1:
 ```
 
-Ensure that you change the `BORG_PASSPHRASE` to a secure passphrase of your choosing.
+Append `BORG_PASSPHRASE=YouBetterPutSomethingRealGoodHere` to your `mailcow.conf` and ensure that you change the `BORG_PASSPHRASE` to a secure passphrase of your choosing.
 
 For security reasons we mount the maildir as read-only. If you later want to restore data you will need to remove
 the `ro` flag prior to restoring the data. This is described in the section on restoring backups.
 
 ### Create `data/conf/borgmatic/etc/config.yaml`
 
-Next, we need to create the borgmatic configuration. Creating the file in this way ensures the correct MySQL credentials are pulled in from `mailcow.conf`.
+Next, we need to create the borgmatic configuration. Borgmatic supports environment variable interpolation, this way we can get the correct MySQL credentials from Docker or more specifically from our `mailcow.conf` without exposing them in our config.
 
-First we load `mailcow.conf` so we have access to the mailcow configuration settings for the following command.
-
-```bash
-source mailcow.conf
-```
-
-The next command then creates the borgmatic configuration file containing the correct credentials. Make sure to copy all the following lines!
+Make sure to copy all the following lines!
 
 ```bash
 cat <<EOF > data/conf/borgmatic/etc/config.yaml