Files
famapp/docs/tasks/60-backups.md
T
ginnoir b89690a9f2 Initial scaffold: tooling, plan, task briefs
- pnpm 10 workspace + TypeScript strict + ESLint flat + Prettier
- CLAUDE.md as canonical brief
- docs/tasks/ — 22 task briefs broken out by phase for sub-sessions
- docs/decisions/ — ADR scaffold

Implements task 01 (repo-init).
2026-05-06 00:05:50 -05:00

28 lines
915 B
Markdown

# 60 — Postgres backups (pg_dump cron)
## Goal
Nightly compressed pg_dump of `famapp-db` (and `authentik-db`) to a host volume, with a retention policy.
## Depends on
- 05
## Scope
- `deploy/backups/` directory committed.
- Add a `famapp-backup` service to compose: small Alpine container with `postgresql-client` + `cron` + a script that runs `pg_dump -Fc` against both DBs into `/backups/<db>/<YYYY-MM-DD>.dump`.
- Retention: keep last 14 daily, last 8 weekly, last 6 monthly. Pure shell, no fancy tooling.
- Document restore procedure in `deploy/backups/README.md`.
## Out of scope
- Off-site replication (Matt's call; he can rsync `/backups` elsewhere).
- Encryption at rest (handled at the disk layer).
## Acceptance criteria
- [ ] After a day, dump files exist for both DBs.
- [ ] `restore.sh <dump-file>` script exists and works against a fresh DB.
- [ ] Retention script keeps the right counts.