type: decision
status: active
timestamp: 2026-06-22
tags: [decision, backup, redundancy, dashboard, mirror, cron]

Backup everywhere weekly + backup-status dashboard app

Weekly cron backs up to multiple destinations git mirror (already running), Firestore exports to CF R2, Restic snapshots of master to Backblaze B2. New post-MVP app `oriz-backup-status-app` provides a dashboard at backup.oriz.in showing total bytes backed up, per-rail health, last-success timestamps, per-source breakdown. Decoupled from any single host failing.'

Backup everywhere weekly + dashboard

Decision

Weekly cron Friday 03:30 IST runs all backup rails simultaneously:

RailSourceDestinationFree tierAlready running?
1Every git submodule + masterGitLab + Codeberg + Bitbucket + GitFlic.ruAll free, no cardYES (mirror-to-4-git-hosts)
2Firestore (all collections)Cloudflare R2 bucket oriz-backup-firestore10 GB free, no cardNO — to add
3Master c:/D/oriz (excluding submodules) + secrets configsBackblaze B2 bucket oriz-backup-master10 GB free, no cardNO — to add
4npm package tarballs (all 17 packages)GitHub Releases of masterUnlimited, freeNO — to add
5CF KV namespace snapshots (per Worker)Cloudflare R2 bucket oriz-backup-kvFreeNO — to add

All 5 rails run in parallel inside the same Friday 03:30 IST cron workflow.

Backup status app

New app oriz-backup-status-app at backup.oriz.in. Subdomain pattern: backup.oriz.in.

Features:

Stack: Astro static site. Backup metadata generated by the weekly cron and committed to oriz-backup-status-app/public/status.json. Site re-deploys on commit.

Restore runbook

Each rail has a per-rail runbook in c:/D/oriz/knowledge/runbooks/restore-from-<rail>.md (to be authored alongside the rail going live).

Cost

All 5 rails are free-no-card tier. R2: 10 GB egress + 10 GB storage free. B2: 10 GB storage + 1 GB/day download free. Mirror hosts: free always.

Cross-refs


Edit on GitHub · Back to index