Volver a la wiki

Cron forgejo-backup: Backup diario de Forgejo (OPS)

Descripción funcional

Cron: /etc/cron.d/forgejo-backup (OPS)
Script: /usr/local/bin/forgejo-backup.sh (fuente: scripts/ops/forgejo/forgejo-backup.sh)
Frecuencia: Diariamente 05:15 UTC
Vigilancia: cron-heartbeat (entrada forgejo-backup, ventana 26 h)

Genera un dump completo de Forgejo (forgejo dump de BD + repos + config + adjuntos/paquetes, ~126 MB) y lo encadena a través de tres capas:

  1. OPS: /opt/forgejo-backup/dumps/forgejo-dump-YYYYMMDD.zip → retención 7 días (purga automática)
  2. STAGE: /opt/dr-backups/forgejo/ → retención 14 días, copia vía rsync (llave restringida solo-escritura)
  3. Google Drive: CreaRackSL/backups/workspace/forgejo/ → retención 60 días, viaja con gdrive-sync semanal existente

Lógica (resumen de /usr/local/bin/forgejo-backup.sh)

1. mkdir -p /opt/forgejo-backup/dumps
2. docker exec forgejo (como usuario git, uid 1000):
   - rm /tmp/fj-dump.zip
   - timeout 1800 forgejo dump --skip-log --skip-index
   - genera /tmp/fj-dump.zip
3. docker cp forgejo:/tmp/fj-dump.zip → /opt/forgejo-backup/dumps/forgejo-dump-${YYYYMMDD}.zip
4. Validación ZIP: python3 con zipfile.testzip() — todo el archivo debe abrirse sin errores
5. Purga local: find ... -mtime +7 -delete
6. rsync con llave restringida ($KEY): copia el ZIP a STAGE:/opt/dr-backups/forgejo/
7. Log: /var/log/forgejo-backup.log con timestamps UTC y [OK]/[FAIL]

Flags del dump

Seguridad de la llave SSH

/root/.ssh/stage_forgejo_backup está restringida con rrsync en STAGE:

Validación y restore

Restore probado: 08-08-2026, mismo día del primer backup.

Verificaciones realizadas:

Excepciones arquitectónicas

Decisión explícita (Edu, 08-08-2026): El backup de Forgejo es cron de sistema (no Forgejo Actions) porque:

Esto rompe deliberadamente la regla de “todo en Forgejo Actions” del plan de migración.

Purgas

Local (OPS)

Automática en el script: find ... -mtime +7 -delete

STAGE y Drive

Cron forgejo-dumps-purge (sábado 04:45 UTC):

Log en STAGE: /opt/dr-backups/cron.log (entradas con [YYYYMMDDTHH:MM:SSZ] forgejo-purge:)

Véase también

Subir