Backups steps 5–6 + rebuild tracker (brings main up to date) #35

Merged
adam merged 2 commits from feat/nightly-dumps into main 2026-10-21 22:56:48 -05:00
Owner

Everything from the 2026-10-21 session that isn't on main yet. Merging this brings git fully up to date.

Commits

  1. feat(backup): nightly Postgres + SQLite dumps (backup step 5)
    • scripts/backup/nightly-dumps.sh, installed as the Unraid User Script nightly-dumps, scheduled 30 1 * * * (confirmed in cron)
    • Finds databases by itself: Postgres containers with POSTGRES_USER; SQLite files in appdata touched in the last 30 days. SQLite copies run as each file's owner via setpriv
    • Test run: 2 pg + 16 SQLite copies, 466 MB in about 4 s, failures=none
  2. docs: rebuild tracker + Backrest install (backup step 6)
    • docs/plans/rebuild.md: the single place for rebuild status, with the interview decisions (repo-doc tracker · review order · Hermes burn + park, M1 Max repurpose kept for later · no nudges)
    • docs/plans/backups.md: Backrest recorded as installed and verified (read-only sources, --hostname backrest, stray /mnt/user/backup removed, sync identity rotated); step 7 is NEXT
    • CLAUDE.md: one-line pointer to the tracker

Changes nothing deployed. No offsite backup exists until step 7.

🤖 Generated with Claude Code

Everything from the 2026-10-21 session that isn't on `main` yet. **Merging this brings git fully up to date.** ### Commits 1. **feat(backup): nightly Postgres + SQLite dumps** (backup step 5) - `scripts/backup/nightly-dumps.sh`, installed as the Unraid User Script `nightly-dumps`, scheduled `30 1 * * *` (confirmed in cron) - Finds databases by itself: Postgres containers with `POSTGRES_USER`; SQLite files in appdata touched in the last 30 days. SQLite copies run as each file's owner via `setpriv` - Test run: 2 pg + 16 SQLite copies, 466 MB in about 4 s, `failures=none` 2. **docs: rebuild tracker + Backrest install** (backup step 6) - `docs/plans/rebuild.md`: **the single place for rebuild status**, with the interview decisions (repo-doc tracker · review order · Hermes burn + park, M1 Max repurpose kept for later · no nudges) - `docs/plans/backups.md`: Backrest recorded as installed and verified (read-only sources, `--hostname backrest`, stray `/mnt/user/backup` removed, sync identity rotated); **step 7 is NEXT** - `CLAUDE.md`: one-line pointer to the tracker Changes nothing deployed. No offsite backup exists until step 7. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Backup plan step 5. scripts/backup/nightly-dumps.sh runs on Unraid as a
User Script at 01:30 and writes consistent copies into
/mnt/user/backups/dumps/latest (previous/ is kept too) for the 02:00
Backrest snapshot:

- pg_dumpall of every running container that has POSTGRES_USER set
- sqlite3 .backup of every SQLite file in appdata modified in the last
  30 days, run as the file's owner so no root-owned -wal/-shm files are
  left behind, then checked with quick_check (Plex's custom tokenizer
  is reported as unverified, not as a failure)
- a STATUS file for the upcoming lab-health check

First run: 2 pg + 16 SQLite copies, 466 MB in about 4 s, no failures.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adam changed title from feat(backup): nightly Postgres + SQLite dumps (backup step 5) to Backups steps 5–6 + rebuild tracker (brings main up to date) 2026-10-21 22:55:20 -05:00
- docs/plans/rebuild.md: the single place for rebuild status, with
  decisions from the 2026-10-21 interview (repo-doc tracker, review order,
  Hermes burn + park with the M1 Max repurpose idea kept for later, no
  nudges), where backups stand, and loose ends found along the way.
- docs/plans/backups.md: step 6 done, template recorded as installed
  (--hostname backrest, CA defaults /backup and /repos removed, sync
  identity rotated); step 7 marked NEXT.
- CLAUDE.md: point sessions at the tracker.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
adam merged commit 51066e9559 into main 2026-10-21 22:56:48 -05:00
Sign in to join this conversation.
No reviewers
No labels
lab-honing
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
adam/foundry!35
No description provided.