New runbook captures the three-phase process:
Phase 1 — Drop --append-only via DSM Container Manager web UI
Phase 2 — sudo resticprofile forget --prune --verbose on each of
nh3-docker, nh3-dev, irv-ml1 (interactive sudo per host)
Phase 3 — Restore --append-only via DSM
Why each phase looks the way it does, what to expect (largely no-op
runs for the first 6 months while no snapshots have aged out of the
keep window), how to verify each phase non-destructively (curl 401
on the rest-server root proves the container's up + serving), what
to do if Phase 2 fails with `repository is configured as append-only`
(skipped Phase 1 / DSM didn't apply), and the path to future
automation (find docker bin path on DSM, NOPASSWD-lock syncuser to
the specific recreate command).
Includes a "last run history" table seeded with today's first
post-pipeline run (no-op, irv-ml1 only had 3 snapshots due to the
04-25→27 CUDA stall).
Cross-referenced from docs/README.md (runbook tree), docs/
orientation.md (where-to-look table), and STATUS.md item 9 (which
now points at the runbook + records the next-round date 2026-07-27).
Optionally, prove `--append-only` is back by attempting a no-op
forget from any client — it should refuse with `repository is
configured as append-only`. **This is destructive-adjacent** (forget
attempts a write the server rejects), so it's safe but disruptive
to the client's restic history if logging is verbose. Generally
trust the DSM UI showing the env change applied.
---
## When to schedule the next round
Set a calendar event for **+90 days** from the last successful run.
The ANA-side automation runs the same retention policy on its own
schedule, so the two sides stay roughly in sync.
If `df -h` on `nh3-nas` shows `/volume1/pbs` over 80%, run the
ritual sooner rather than waiting for the calendar.
Last run history (append a line each time):
| date | duration | notes |
|---|---|---|
| 2026-04-27 | <5 min | First ritual run since pipeline went live; no-op everywhere (every snapshot still in keep window). irv-ml1 had only 3 snapshots due to the 04-25→27 CUDA stall. |
---
## Future automation hooks
Once the DSM workflow gets tedious to repeat, the manual phases can
be replaced with `ssh -t nh3-nas` + `sudo docker exec` against the
DSM-managed container. Two prerequisites:
1. **Find the docker binary path on DSM**. DSM Container Manager
doesn't ship `docker` on the default `$PATH` for syncuser. Probe
When both are in place, replace the Phase 1 + Phase 3 manual blocks
in `scripts/restic-prune.sh` with shell-driven `docker container
update` (or container recreate) calls, and the whole ritual becomes
a single `scripts/restic-prune.sh nh3` invocation.
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.