#!/bin/bash set -euo pipefail ## Restore a Discourse backup from an existing instance ## Usage: bash scripts/restore-backup.sh DISCOURSE_DIR="/opt/discourse" BACKUP_DIR="/opt/discourse/shared/standalone/backups/default" if [ $# -eq 0 ]; then echo "Usage: $0 " echo "" echo "Steps to get a backup from the existing community.cadcad.org:" echo " 1. Log into the existing Discourse as admin" echo " 2. Go to /admin/backups" echo " 3. Click 'Backup' to create a new backup" echo " 4. Download the .tar.gz file" echo " 5. Upload to Netcup: scp backup.tar.gz netcup:/tmp/" echo " 6. Run: bash $0 /tmp/backup.tar.gz" exit 1 fi BACKUP_FILE="$1" if [ ! -f "$BACKUP_FILE" ]; then echo "ERROR: Backup file not found: $BACKUP_FILE" exit 1 fi echo "=== Discourse Backup Restore ===" echo "Backup file: $BACKUP_FILE" echo "" # Copy backup to Discourse backup directory echo "[1/4] Copying backup to Discourse backup directory..." mkdir -p "$BACKUP_DIR" cp "$BACKUP_FILE" "$BACKUP_DIR/" BACKUP_FILENAME=$(basename "$BACKUP_FILE") echo " Copied to $BACKUP_DIR/$BACKUP_FILENAME" # Enable restore mode echo "" echo "[2/4] Enabling restore mode..." cd "$DISCOURSE_DIR" ./launcher enter app </dev/null || true fi echo "" echo "=== Restore Complete ===" echo "" echo "The forum should now contain all data from the backup." echo "Visit https://cadcad-forum.jeffemmett.com to verify." echo "" echo "If switching to community.cadcad.org:" echo " 1. Update DISCOURSE_HOSTNAME in containers/app.yml" echo " 2. Update Traefik router rule in containers/app.yml" echo " 3. ./launcher rebuild app" echo " 4. Update Cloudflare tunnel + DNS"