Portal DB gitborg_web is never backed up (consent/GDPR + accounts unrecoverable) #122
Etiketter
Inga etiketter
area/backups
area/ci
area/control-panel
area/identity
area/infra
area/observability
area/payments
area/security
area/storage
area/web
blocked
needs-info
needs-triage
ready-for-implementation
type
bug
type
chore
type
docs
type
epic
type
feature
type
task
wontfix
Ingen milstolpe
Inget projekt
Inga tilldelade
1 deltagare
Notiser
Förfallodatum
Inget förfallodatum satt.
Beroenden
Inga beroenden satta
Referens
bitborg/bitborg-infra#122
Läser in…
Hänvisa till i nytt ärende
Ingen beskrivning angiven.
Ta bort grenen "%!s()"
Borttagning av en gren är permanent. Även om den borttagna grenen kan fortsätta existera en kort tid innan den faktiskt tas bort, kan det INTE ångras i de flesta fall. Vill du fortsätta?
Severity: CRITICAL — pre-onboarding infra audit (2026-07-19).
The portal database
gitborg_webis never backed upansible/roles/backup/templates/bitborg-backup.sh.j2:84-86dumps onlypg_dump -d forgejo. The portal DBgitborg_web(created byansible/roles/web/tasks/main.yml:18-37in the same Postgres) holds all portal-side state — signup accounts, consent/GDPR records, invite/subscription/session data — and is captured by nothing.Impact
On host loss the portal state is unrecoverable. Neither the weekly
bitborg-backup-verifynor the restore drill would notice — both only touch the forgejo DB, soforgejo doctorstays green whilegitborg_webis silently absent from every archive.Ask
pg_dumpall(captures all DBs + roles/globals — also resolves the "roles not in dump" gap) or add a secondpg_dump -d gitborg_web.bitborg-backup-verifyand thebackup-drillrole to assert ongitborg_webtoo.Effort S. This should land before any real signups create consent records.
✅ Applied + verified (PR #149, 2026-07-19).
--tags backup,backup-drill(prod changed=3, 0 failed).Verified the new dump against the live DB:
pg_dump -U forgejo -d gitborg_web --format=customproduces a valid custom-format archive (pg_restore --listparses it) with 3 TABLE DATA entries — the portal schema round-trips. (Small today: no real signups yet.) The archive+restore path (bundle containsgitborg_web.dump; drill restores it and asserts ≥1 public table) is now guarded-then-always-on and will be exercised by tonight's nightly backup + the weekly drill.