#!/bin/bash # Restore a Forgejo backup tarball from GCS over the live data dir. # Run on the VM via SSH. Stops the stack, restores, restarts. # # Usage: sudo ./restore.sh forgejo-20260507T033000Z.tar.gz set -euo pipefail if [[ $# -ne 1 ]]; then echo "Usage: $0 " >&2 echo " e.g. $0 forgejo-20260507T033000Z.tar.gz" >&2 exit 1 fi BACKUP=$1 BUCKET=$(curl -sf -H "Metadata-Flavor: Google" \ "http://metadata.google.internal/computeMetadata/v1/project/project-id")-forgejo-backups read -r -p "About to restore '$BACKUP' from gs://$BUCKET/ over /mnt/disks/forgejo-data/forgejo. Continue? [y/N] " ans [[ "$ans" == "y" || "$ans" == "Y" ]] || exit 1 systemctl stop forgejo-stack.service docker run --rm -v /tmp:/tmp google/cloud-sdk:slim \ gsutil cp "gs://${BUCKET}/${BACKUP}" /tmp/ rm -rf /mnt/disks/forgejo-data/forgejo tar xzf "/tmp/${BACKUP}" -C /mnt/disks/forgejo-data/ rm "/tmp/${BACKUP}" systemctl start forgejo-stack.service echo "Restore complete. Check 'docker logs forgejo' for migration output."