Initial commit: Headscale management scripts and configuration
- Add headscale binary and configuration files - Include management scripts for API keys, nodes, and authentication - Add Docker setup with docker-compose - Include backup and restore functionality - Add example scripts for creating API keys and pre-auth keys Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
59
headscale_backup_and_restore.sh
Executable file
59
headscale_backup_and_restore.sh
Executable file
@@ -0,0 +1,59 @@
|
||||
#!/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" <<EOF
|
||||
set -e
|
||||
START_TIME=\$(date '+%Y%m%d_%H%M%S')
|
||||
LOGFILE="$REMOTE_TARGET_DIR/backup_restore_check_\$START_TIME.txt"
|
||||
rm -rf $REMOTE_TARGET_DIR
|
||||
mkdir -p $REMOTE_TARGET_DIR
|
||||
cd $REMOTE_TARGET_DIR
|
||||
tar xzvf $REMOTE_TMP_DIR/$TARFILE
|
||||
rm -f $REMOTE_TMP_DIR/$TARFILE
|
||||
REMOTE_SUM=\$(md5sum $REMOTE_TARGET_DIR/data/db.sqlite | awk '{print \$1}')
|
||||
COMPARE_RESULT="NOT MATCH"
|
||||
if [ "$LOCAL_SUM" = "\$REMOTE_SUM" ]; then
|
||||
COMPARE_RESULT="MATCH"
|
||||
fi
|
||||
{
|
||||
echo "=== BACKUP & RESTORE CHECK ==="
|
||||
echo "Time: \$START_TIME"
|
||||
echo "Local db.sqlite md5sum: $LOCAL_SUM"
|
||||
echo "Remote db.sqlite md5sum: \$REMOTE_SUM"
|
||||
echo "Compare result: \$COMPARE_RESULT"
|
||||
echo "Status: Finished restore and checksum"
|
||||
echo "=============================="
|
||||
} > "\$LOGFILE"
|
||||
EOF
|
||||
|
||||
echo "=== DONE ==="
|
||||
|
||||
Reference in New Issue
Block a user