diff --git a/scripts/backup-init.sh b/scripts/backup-init.sh new file mode 100755 index 0000000..11e6534 --- /dev/null +++ b/scripts/backup-init.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# Initialize Restic backup repository on NAS +# Run once to set up the backup system + +set -e + +# Configuration +BACKUP_REPO="/mnt/nas/backups/homelab-restic" +PASSWORD_FILE="/home/hoborg/creds/restic-password.txt" + +echo "========================================" +echo "Restic Backup Repository Initialization" +echo "========================================" +echo "" +echo "This will:" +echo " 1. Install restic if needed" +echo " 2. Create backup repository at: $BACKUP_REPO" +echo " 3. Generate and save encryption password" +echo "" + +# Check if restic is installed +if ! command -v restic &> /dev/null; then + echo "Installing restic..." + pacman -S --needed --noconfirm restic + echo "✓ Restic installed" +else + echo "✓ Restic already installed ($(restic version))" +fi + +# Create backup directory on NAS +echo "" +echo "Creating backup directory on NAS..." +mkdir -p "$BACKUP_REPO" +echo "✓ Directory created: $BACKUP_REPO" + +# Generate random password if doesn't exist +echo "" +if [ -f "$PASSWORD_FILE" ]; then + echo "✓ Password file already exists: $PASSWORD_FILE" +else + echo "Generating encryption password..." + mkdir -p /home/hoborg/creds + openssl rand -base64 32 > "$PASSWORD_FILE" + chmod 600 "$PASSWORD_FILE" + echo "✓ Password saved to: $PASSWORD_FILE" + echo "⚠️ IMPORTANT: Back up this password file! Without it, backups cannot be restored." +fi + +# Export password for restic +export RESTIC_PASSWORD_FILE="$PASSWORD_FILE" + +# Initialize repository +echo "" +echo "Initializing Restic repository..." +if restic -r "$BACKUP_REPO" snapshots &>/dev/null; then + echo "✓ Repository already initialized" +else + restic -r "$BACKUP_REPO" init + echo "✓ Repository initialized" +fi + +echo "" +echo "========================================" +echo "Backup Repository Ready!" +echo "========================================" +echo "" +echo "Repository location: $BACKUP_REPO" +echo "Password file: $PASSWORD_FILE" +echo "" +echo "Next steps:" +echo " 1. Run backup-homelab.sh to create first backup" +echo " 2. Test restore with backup-restore.sh" +echo " 3. Enable automated backups with systemd timer" +echo ""