#!/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"