Backups: add a second off-provider destination #41
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#41
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?
Add a second backup destination outside the current provider for true provider-failure resilience.
Epic: gitborg/gitborg-docs#2
Use Glesys as secondary S3 backup provider.
Information on pricing can be found on this page under the headline "Object Storage":
https://glesys.se/priser/
Documentation for usage:
https://docs.glesys.com/products/storage/object-storage
Implemented, deployed, and verified live on prod. 🇸🇪
Glesys (Swedish, Falkenberg — Ceph S3) is now the primary off-site destination; Hetzner (hel1, EU) is the secondary cross-provider redundancy copy. Off-site targets are an ordered
backup_s3_destinationslist; each backup uploads to both with strict semantics (any destination failing fails the run); bucket names + keys are vaulted. Per-destination metricgitborg_backup_offsite_last_status{destination}+BackupOffsiteFailed(warning) alongsideBackupFailed(critical). The restore drill (ADR 0027) now restores from the Swedish primary.Verified end-to-end: a live backup landed the archive in both buckets (
glesys=0,hetzner=0, overall=0); the restore drill fetched from Glesys andforgejo doctorconfirmed 5 repos + DB consistency, VM torn down with no leak; the new alert is loaded (warning) and not firing.This puts the primary off-site copy on Swedish soil, largely closing the principle-#1 exception — it partially satisfies #39's intent, but #39 stays open for Bahnhof S3 specifically (blocked on its DPA).