# Gitea Backup Strategy This document outlines the backup strategy for your Gitea installation, focusing on ensuring your database is always backed up in at least one place. ## Backup Methods This setup provides two complementary backup methods: ### 1. PostgreSQL Database Dumps Database dumps are SQL files containing all your database data. These are the most reliable way to back up a PostgreSQL database. - **Script**: `backup-gitea-db.ps1` - **Output**: SQL dumps in the `backups` directory, compressed as ZIP files - **Retention**: Keeps the last 10 backups by default ### 2. Docker Volume Backups This method backs up the entire PostgreSQL data volume, which includes all database files. - **Script**: `backup-volume.ps1` - **Output**: TAR archives in the `backups` directory, compressed as ZIP files - **Retention**: Keeps the last 5 volume backups by default ## Automated Backups You can set up automated daily backups using the included script: ```powershell .\schedule-backup.ps1 ``` This creates a Windows Scheduled Task that runs the database backup script daily at 3 AM. ## Restoring from Backups ### Restoring from a Database Dump ```powershell .\restore-gitea-db.ps1 -BackupFile "backups\gitea-db-backup-2025-03-01_10-30-00.sql.zip" ``` ### Restoring from a Volume Backup ```powershell .\restore-volume.ps1 -BackupFile "backups\postgres-volume-backup-2025-03-01_10-30-00.tar.zip" ``` ## Best Practices 1. **Regular Backups**: Run backups at least daily 2. **Multiple Backup Methods**: Use both database dumps and volume backups 3. **Off-site Storage**: Copy your backups to an external drive or cloud storage 4. **Test Restores**: Periodically test restoring from your backups 5. **Version Control**: Keep your Gitea configuration files in version control ## Important Notes - **Never** run `docker-compose down -v` unless you have a recent backup - When upgrading Gitea, always create a backup first - The database volume (`postgres-data`) persists even when containers are stopped or removed, but can be lost if explicitly deleted ## Manual Backup Commands If you need to create a backup manually: ```powershell # Database dump .\backup-gitea-db.ps1 # Volume backup .\backup-volume.ps1 ```