Fecha y contexto
Decisor: Edu
Fecha: 08-08-2026
Contexto: Fase F1 de migración Forgejo; directriz de centralización de todas las automatizaciones en Forgejo Actions ($d >= F1)
Problema
Durante F1, la estrategia es centralizar TODAS las automatizaciones en Forgejo Actions (repo automatizaciones, prefijos infra-*, bib-*, etc.). Esto simplifica mantenimiento y prepara la inversión del origen de verdad en F2.
Excepción: ¿Qué hacer con el backup de Forgejo?
Si se implementase como workflow en Forgejo Actions:
- ❌ Depende de que Forgejo esté vivo para ejecutarse
- ❌ Un fallo en Forgejo (crash, corrupción, attack) impide backups
- ❌ Viola la premisa de que Capa 3 (backups) es independiente de lo que protege
Decisión
El backup de Forgejo corre como cron de sistema en OPS, NO como workflow de Forgejo Actions.
# /etc/cron.d/forgejo-backup
15 5 * * * root /usr/local/bin/forgejo-backup.sh >> /var/log/forgejo-backup.log 2>&1
Justificación
- Independencia: El backup de Forgejo no puede depender de que Forgejo esté operacional. Los crons de sistema lo garantizan.
- Capa 3 operativa: Los backups de Capa 3 (DR) deben estar fuera del componente a proteger.
- Vigilancia desacoplada:
cron-heartbeatmonitorea el cron sin depender de Forgejo Actions. - Precedente: Otros backups vitales (BD de Pro, estado global) también son crons de sistema, no workflows.
Alcance de la excepción
SOLO el backup de Forgejo queda fuera de la centralización en Forgejo Actions.
Otros automatismos de Forgejo (comparador F1, espejo de releases, runners del CI portados, …) siguen dentro de la regla.
Implicaciones
-
Hay dos “relojes” de automatismo en OPS:
- Crons de sistema (
/etc/cron.d/): forgejo-backup, cf-pages-deploy, bib-reindex-ws, etc. - Forgejo Actions (runner en OPS): workflows del repo
automatizaciones+ flujos portados de CI
- Crons de sistema (
-
Los scripts de backup residen en
scripts/ops/forgejo/del workspace (Git versionado). -
Documentación en AUTOMATISMOS.md § 4 (crons) y § 4d (Forgejo Actions).
Supuestos
- Forgejo Actions está operacional (F1 en curso)
- La llave SSH de rsync (
stage_forgejo_backup) es validada y rotada fuera de esta decisión - Google Drive (
gdrive-syncsemanal) es accesible desde STAGE
Alternativas consideradas y descartadas
| Alternativa | Por qué no |
|---|---|
| Workflow en Forgejo Actions | Dependencia cíclica: backup de Forgejo depende de Forgejo |
| Workflow en GitHub Actions | Forgejo es independiente de GitHub; la sincronización es unidireccional (GitHub→Forgejo) |
| Script en máquina externa (Cloud) | Requiere credenciales adicionales; Forgejo en OPS es privada (Hetzner, sin expose público) |
Criterio de éxito
- ✅ Backup completado sin errores a las 05:15 UTC (vigilado por heartbeat)
- ✅ Copia verificada en STAGE y Google Drive
- ✅ Restore funciona sin dependencias de Forgejo Actions
Véase también
- [[feature—infra—forgejo-f1-automatizaciones-paralelo]]
- [[entity—public—forgejo-backup-cron]]
- [[concept—infra—ops-server]]
- [[decision—20260308—centralizacion-automatismos-en-forgejo-actions]]