This template allows deploying a forgejo en either Scaleway or Hetzner (untested) without much knowledge about them. It DOES require knowledge about Terragrunt and ansible. A wizard of sorts is provided but it will not guarantee success without some knowledge about the underlying technology.
33 lines
1.2 KiB
Django/Jinja
33 lines
1.2 KiB
Django/Jinja
#!/bin/bash
|
|
# Forgejo Backup Script
|
|
# Generated by Ansible
|
|
|
|
set -e
|
|
|
|
BACKUP_DIR="{{ forgejo_backup_path }}"
|
|
TIMESTAMP=$(date +%Y%m%dT%H%M%S)
|
|
LOG_FILE="/var/log/forgejo-backup.log"
|
|
|
|
echo "[$(date)] Starting Forgejo backup..." | tee -a "$LOG_FILE"
|
|
|
|
# Create database backup
|
|
pg_dump -U {{ forgejo_db_user }} {{ forgejo_db_name }} | gzip > "$BACKUP_DIR/database-$TIMESTAMP.sql.gz"
|
|
echo "[$(date)] Database backed up" | tee -a "$LOG_FILE"
|
|
|
|
# Backup repositories
|
|
tar -czf "$BACKUP_DIR/repositories-$TIMESTAMP.tar.gz" -C {{ forgejo_data_path }} git
|
|
echo "[$(date)] Repositories backed up" | tee -a "$LOG_FILE"
|
|
|
|
# Backup configuration
|
|
tar -czf "$BACKUP_DIR/config-$TIMESTAMP.tar.gz" {{ forgejo_config_path }} {{ forgejo_base_path }}/docker-compose.yml
|
|
echo "[$(date)] Configuration backed up" | tee -a "$LOG_FILE"
|
|
|
|
# Backup data
|
|
tar -czf "$BACKUP_DIR/data-$TIMESTAMP.tar.gz" -C {{ forgejo_data_path }} attachments lfs avatars
|
|
echo "[$(date)] Data backed up" | tee -a "$LOG_FILE"
|
|
|
|
# Clean old backups
|
|
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +{{ forgejo_backup_retention_days }} -delete
|
|
echo "[$(date)] Old backups cleaned" | tee -a "$LOG_FILE"
|
|
|
|
echo "[$(date)] Backup completed successfully" | tee -a "$LOG_FILE"
|