diff --git a/config/config/config.json b/config/config/config.json index c76395c..09ccf09 100644 --- a/config/config/config.json +++ b/config/config/config.json @@ -1,5 +1,5 @@ { - "modno": 12, + "modno": 14, "version": 4, "instance": "nuclide.systems", "repos": [ @@ -59,17 +59,17 @@ "/mnt/pve/unas/backup/home-assistant", "/mnt/pve/unas/backup/immich", "/mnt/pve/unas/backup/nextcloud", - "/mnt/pve/unas/services/arcane", - "/mnt/pve/unas/services/arr-stack", "/mnt/pve/unas/services/coder", "/mnt/pve/unas/services/gitea", - "/mnt/pve/unas/services/gluetun", "/mnt/pve/unas/services/karakeep", "/mnt/pve/unas/services/memos", "/mnt/pve/unas/services/n8n", "/mnt/pve/unas/services/nextcloud", "/mnt/pve/unas/services/pocketid-backup", - "/mnt/pve/unas/services/traccar" + "/mnt/pve/unas/services/traccar", + "/mnt/pve/unas/services/vaultwarden", + "/mnt/pve/unas/services/shared-db-garage", + "/mnt/pve/unas/media/documents/public/paperless-ngx" ], "schedule": { "cron": "0 1 * * 1,2,3,4,5", @@ -91,6 +91,22 @@ "actionCommand": { "command": "bash /opt/backrest/scripts/pocketid-prestage.sh" } + }, + { + "conditions": [ + "CONDITION_SNAPSHOT_START" + ], + "actionCommand": { + "command": "bash /opt/backrest/scripts/garage-prestage.sh" + } + }, + { + "conditions": [ + "CONDITION_SNAPSHOT_START" + ], + "actionCommand": { + "command": "bash /opt/backrest/scripts/n8n-prestage.sh" + } } ] }, diff --git a/scripts/scripts/garage-prestage.sh b/scripts/scripts/garage-prestage.sh new file mode 100755 index 0000000..83f934b --- /dev/null +++ b/scripts/scripts/garage-prestage.sh @@ -0,0 +1,13 @@ +#!/bin/bash +set -e + +CT104="root@192.168.1.40" +STAGING="/mnt/pve/unas/services/shared-db-garage" + +mkdir -p "$STAGING" + +# Rsync Garage data and meta dirs (hot copy — Garage is append-only, safe to snapshot) +rsync -rlptD --no-owner --no-group --delete "$CT104":/opt/stacks/shared-db/garage/data/ "$STAGING/data/" +rsync -rlptD --no-owner --no-group --delete "$CT104":/opt/stacks/shared-db/garage/meta/ "$STAGING/meta/" + +echo "[$(date)] garage-prestage: done ($(du -sh $STAGING | cut -f1))" diff --git a/scripts/scripts/n8n-prestage.sh b/scripts/scripts/n8n-prestage.sh new file mode 100755 index 0000000..7857130 --- /dev/null +++ b/scripts/scripts/n8n-prestage.sh @@ -0,0 +1,14 @@ +#!/bin/bash +set -e + +CT104="root@192.168.1.40" +STAGING="/mnt/pve/unas/services/n8n" + +# Rsync n8n data (config, nodes, storage) — skip logs and temp files +rsync -rlptD --no-owner --no-group --delete \ + --exclude='*.log' \ + --exclude='crash.journal' \ + --exclude='*.json' \ + "$CT104":/opt/stacks/n8n/data/ "$STAGING/" + +echo "[$(date)] n8n-prestage: done" diff --git a/scripts/scripts/pocketid-prestage.sh b/scripts/scripts/pocketid-prestage.sh index 97af2b6..68a54e8 100755 --- a/scripts/scripts/pocketid-prestage.sh +++ b/scripts/scripts/pocketid-prestage.sh @@ -2,16 +2,16 @@ set -e STAGING="/mnt/pve/unas/services/pocketid-backup" -CT110="root@192.168.1.5" +CT109="root@192.168.1.8" # Export inside container then docker cp to host -ssh "$CT110" 'docker exec pocket-id /app/pocket-id export /app/pocket-id-export.zip && docker cp pocket-id:/app/pocket-id-export.zip /tmp/pocketid-export.zip && docker exec pocket-id rm /app/pocket-id-export.zip' +ssh "$CT109" 'docker exec pocket-id /app/pocket-id export /app/pocket-id-export.zip && docker cp pocket-id:/app/pocket-id-export.zip /tmp/pocketid-export.zip && docker exec pocket-id rm /app/pocket-id-export.zip' # Pull to staging on UNAS (accessible from CT 103) -scp "$CT110":/tmp/pocketid-export.zip "$STAGING/pocketid-export.zip" -scp -r "$CT110":/opt/stacks/pocketid/data/keys "$STAGING/" +scp "$CT109":/tmp/pocketid-export.zip "$STAGING/pocketid-export.zip" +scp -r "$CT109":/opt/stacks/pocketid/data/keys "$STAGING/" -# Cleanup CT 110 temp -ssh "$CT110" 'rm -f /tmp/pocketid-export.zip' +# Cleanup CT 109 temp +ssh "$CT109" 'rm -f /tmp/pocketid-export.zip' echo "[$(date)] pocketid-prestage: done"