From 907608c2f6aadec43780743abb24576143dde464 Mon Sep 17 00:00:00 2001 From: Adam Moussa Date: Tue, 29 Sep 2026 18:43:22 -0400 Subject: [PATCH] fix(terraform): restore forgejo.db from the dump tarball Boot restore was copying data/ and repos/ and leaving the sqlite file at the archive root, so a volume restore started Forgejo with no database. --- terraform/user_data.sh | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/terraform/user_data.sh b/terraform/user_data.sh index 6bf7dc2..c46f17e 100644 --- a/terraform/user_data.sh +++ b/terraform/user_data.sh @@ -114,11 +114,30 @@ if [ ! -f /var/lib/forgejo/data/forgejo.db ]; then RESTORE_DIR="$(mktemp -d)" aws s3 cp "s3://${BACKUP_BUCKET}/${S3_PREFIX}/${LATEST}/${FILE}" "$RESTORE_DIR/dump.tar.gz" --region "${AWS_REGION}" tar xzf "$RESTORE_DIR/dump.tar.gz" -C "$RESTORE_DIR" - cp -a "$RESTORE_DIR"/data/. /var/lib/forgejo/data/ + mkdir -p /var/lib/forgejo/data /var/lib/forgejo/custom + if [ -d "$RESTORE_DIR/data" ]; then + cp -a "$RESTORE_DIR"/data/. /var/lib/forgejo/data/ + fi + rm -rf /var/lib/forgejo/data/repositories mkdir -p /var/lib/forgejo/data/repositories - cp -a "$RESTORE_DIR"/repos/. /var/lib/forgejo/data/repositories/ + if [ -d "$RESTORE_DIR/repos" ]; then + cp -a "$RESTORE_DIR"/repos/. /var/lib/forgejo/data/repositories/ + fi + # Dump sqlite lives at the archive root, not under data/. Copy it last. + cp "$RESTORE_DIR/gitea-db.sqlite3" /var/lib/forgejo/data/forgejo.db + if [ -d "$RESTORE_DIR/lfs" ]; then + mkdir -p /var/lib/forgejo/data/lfs + cp -a "$RESTORE_DIR"/lfs/. /var/lib/forgejo/data/lfs/ + fi + if [ -d "$RESTORE_DIR/custom" ]; then + cp -a "$RESTORE_DIR"/custom/. /var/lib/forgejo/custom/ + fi chown -R forgejo:forgejo /var/lib/forgejo rm -rf "$RESTORE_DIR" + if [ ! -s /var/lib/forgejo/data/forgejo.db ]; then + echo "Restore did not produce /var/lib/forgejo/data/forgejo.db" >&2 + exit 1 + fi else echo "No backup found in S3 - starting fresh" fi