From 12cd678ba018c848f98d99d872dede1cc68d6d29 Mon Sep 17 00:00:00 2001 From: Daveanand Mannie Date: Sat, 21 Feb 2026 21:44:09 -0500 Subject: [PATCH] [add] added backup script --- backup.sh | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 backup.sh diff --git a/backup.sh b/backup.sh new file mode 100644 index 0000000..4ceb4ee --- /dev/null +++ b/backup.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +set -euo pipefail + +# ============================================================================= +# Gitea Backup Script for Dokploy +# ============================================================================= +# +# Creates a database dump and file archive from the running Gitea containers. +# +# Usage: +# chmod +x backup.sh +# ./backup.sh +# ./backup.sh /custom/backup/dir +# +# ============================================================================= + +# --- Configuration --- +GITEA_CONTAINER="gitea" +DB_CONTAINER="gitea-db" +DB_USER="gitea" +DB_NAME="gitea" + +BACKUP_DIR="${1:-$HOME/gitea-backups}" +TIMESTAMP=$(date +%Y%m%d_%H%M%S) + +mkdir -p "$BACKUP_DIR" + +# --- Dump database --- +echo "=== Dumping database ===" +docker exec "$DB_CONTAINER" pg_dump \ + -U "$DB_USER" -d "$DB_NAME" \ + --no-owner --no-acl \ + -F c -f /tmp/gitea_db_backup.dump + +docker cp "$DB_CONTAINER":/tmp/gitea_db_backup.dump "$BACKUP_DIR/gitea_db_${TIMESTAMP}.dump" +docker exec "$DB_CONTAINER" rm /tmp/gitea_db_backup.dump +echo "Database dumped to: $BACKUP_DIR/gitea_db_${TIMESTAMP}.dump" + +# --- Backup files --- +echo "" +echo "=== Backing up Gitea files ===" +docker exec "$GITEA_CONTAINER" bash -c ' +cd /data +tar czf /tmp/gitea_files_backup.tar.gz \ + git/repositories \ + git/lfs \ + gitea/avatars \ + gitea/attachments \ + git/.ssh \ + 2>/dev/null || true +' + +docker cp "$GITEA_CONTAINER":/tmp/gitea_files_backup.tar.gz "$BACKUP_DIR/gitea_files_${TIMESTAMP}.tar.gz" +docker exec "$GITEA_CONTAINER" rm /tmp/gitea_files_backup.tar.gz +echo "Files backed up to: $BACKUP_DIR/gitea_files_${TIMESTAMP}.tar.gz" + +# --- Backup app.ini --- +echo "" +echo "=== Backing up app.ini ===" +docker cp "$GITEA_CONTAINER":/data/gitea/conf/app.ini "$BACKUP_DIR/app_${TIMESTAMP}.ini" +echo "Config backed up to: $BACKUP_DIR/app_${TIMESTAMP}.ini" + +# --- Summary --- +echo "" +echo "=== Backup complete ===" +echo "Files:" +ls -lh "$BACKUP_DIR"/*"${TIMESTAMP}"* +echo "" +echo "To restore on a fresh Dokploy instance:" +echo " 1. Deploy the Gitea compose stack" +echo " 2. Copy the backup files to ~/ on the server" +echo " 3. Rename them to gitea_db_backup.dump, gitea_files_backup.tar.gz, app.ini" +echo " 4. Run ./restore.sh"