docs(ops): document dashboard password rotation — cmd/hashpw exists and is undocumented #44
Labels
No labels
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
status/deferred
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/purser#44
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The gap is documentation, not the tool
The operator asked whether the dashboard password lives in Vault, and whether a change-password form belonged in the dashboard. Both answers turned out to be no, and the tool that does the job already exists and is undocumented — neither he nor I knew about it until I read
cmd/.I proposed building it before I looked. That is the duplicate-check failure, on a feature rather than a tracker: the thing was already there, with the exact design rationale I had just argued for, written by whoever built it.
Why no change-password UI — worth recording so it is not re-proposed
A change form requires the container to write its own credential store. That makes a network-facing service that issues VPN client certificates able to rewrite its own auth. Three further reasons:
internal/web/auth.go:17-21, deliberately — "a stolen database yields live sessions as well as bundles"), and there is one shared password. A change form implies identities that do not exist.The operator reached the same conclusion independently once the read-only mount was named.
Scope
Document the rotation procedure where an operator will find it —
docs/operations.mdalongside the168hlifetime and8760hceiling notes, and a line in the README's operations section.Points the docs must make, because each is non-obvious and each has a reason:
hashpwis not in the image. The Dockerfile builds only./cmd/purser(Dockerfile:19-21,34), so this runs from the deploy tree at/srv/docker/purser/src, which sits at the released tag.echo 'pw' | …teaches the habit the tool exists to prevent. Show the interactive form.internal/config/config.go:259) and sessions do not survive it.Optional, and I would not do it without a reason
Shipping
hashpwin the image would allowdocker exec -i purser hashpw, removing the source-tree dependency. It also puts a second binary in a cert-issuing container for a task performed rarely from a host that already has the tree. Mentioned so the trade is recorded, not proposed.Acceptance criteria
docs/operations.mdcarries the rotation procedure, in the interactive formhashpwis not in the image and why the invocation is from the source treeAnchor
Operator question, 2026-08-06, after the v0.3.0 deploy. Filed by Bosun. Reviewed reasoning: the read-only mount is the argument that settled it, and it is the one an operator cannot see from the dashboard.