diff --git a/backup-netbird.sh b/backup-netbird.sh new file mode 100755 index 0000000..496746a --- /dev/null +++ b/backup-netbird.sh @@ -0,0 +1,62 @@ +#!/bin/bash +set -e + +BASE_DIR="/home/Dejan/Docker/Netbird-compose" +cd "$BASE_DIR" + +STAMP="$(date +%F-%H%M)" +BACKUP_DIR="$BASE_DIR/backup/$STAMP" + +mkdir -p "$BACKUP_DIR" + +echo "=== Backing up NetBird+Zitadel config files to $BACKUP_DIR ..." + +# 1) Backup local files (exclude backup and .git) +tar --exclude='./backup' \ + --exclude='./.git' \ + -czf "$BACKUP_DIR/netbird-compose-files.tar.gz" \ + docker-compose.yml \ + .env \ + dashboard.env \ + relay.env \ + zitadel.env \ + zdb.env \ + management.json \ + turnserver.conf \ + machinekey \ + traefik-stack \ + install-netbird-traefik.sh \ + reinit*.sh \ + uninstall-netbird-traefik.sh \ + readme.md 2>/dev/null || true + +echo " → Config files archived." + +# 2) Backup Docker volumes (management DB, Zitadel DB, certs) +echo "=== Backing up Docker volumes ..." + +# netbird_management volume +docker run --rm \ + -v netbird_management:/data \ + -v "$BACKUP_DIR":/backup \ + alpine sh -c "cd /data && tar -czf /backup/netbird_management-volume.tar.gz ." + +echo " → netbird_management done." + +# netbird_zdb_data (Postgres for Zitadel) +docker run --rm \ + -v netbird_zdb_data:/data \ + -v "$BACKUP_DIR":/backup \ + alpine sh -c "cd /data && tar -czf /backup/netbird_zdb_data-volume.tar.gz ." + +echo " → netbird_zdb_data done." + +# netbird_zitadel_certs +docker run --rm \ + -v netbird_zitadel_certs:/data \ + -v "$BACKUP_DIR":/backup \ + alpine sh -c "cd /data && tar -czf /backup/netbird_zitadel_certs-volume.tar.gz ." + +echo " → netbird_zitadel_certs done." + +echo "=== All done. Backup stored in: $BACKUP_DIR"