- 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).
28 lines
915 B
Markdown
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.
|