#!/bin/bash set -e # Stop script if any command fails # Parameters BACKUP_SERVER="192.168.42.126" BACKUP_SERVER_USER="root" REMOTE_TMP_DIR="/tmp" REMOTE_TARGET_DIR="/opt/headscale" cd /opt/headscale NOW=$(date +"%Y%m%d_%H%M%S") TARFILE="headscale_backup_$NOW.tar.gz" echo "1. Stop Headscale Docker service..." docker compose down echo "2. Create tar.gz backup..." tar czvf "/tmp/$TARFILE" . echo "3. Calculate local checksum (db.sqlite)..." LOCAL_SUM=$(md5sum /opt/headscale/data/db.sqlite | awk '{print $1}') echo "4. Start Headscale Docker service again..." docker compose up -d echo "5. Copy backup to backup server..." scp "/tmp/$TARFILE" "$BACKUP_SERVER_USER@$BACKUP_SERVER:$REMOTE_TMP_DIR/" rm -f "/tmp/$TARFILE" echo "6. Restore backup and verify checksum on backup server..." ssh "$BACKUP_SERVER_USER@$BACKUP_SERVER" "bash -s" < "\$LOGFILE" EOF echo "=== DONE ==="