docs(selfhost): document the real update and rollback flow - #3195
Conversation
Add an "Updating and rolling back" section to the self-host operations docs grounded in the actual deploy-selfhost-image.sh and deploy-selfhost-prebuilt.sh scripts: what each restarts (app service only, --no-deps), what is preserved automatically (.env, config mount, data volumes, compose overrides), and how to pin or roll back a version. States plainly that there is no dedicated rollback script and explains the forward-only migration caveat operators must check before rolling back across a schema change. Also corrects the releases page's "Upgrade flow" and "Rollback" sections, which described a generic docker compose pull/up flow that doesn't match either real script, and cross-links both pages to the new section.
…check Name the app's /data volume (where Codex/Claude Code auth material lives) and Grafana's grafana-data volume explicitly as preserved state, since #1823 calls both out by name. Also add a post-update check for confirming the deployed release id, since neither /health nor /ready reports a version -- .env and docker inspect are the only truthful ways to verify it.
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Deploying with
|
| Status | Name | Latest Commit | Preview URL | Updated (UTC) |
|---|---|---|---|---|
| ✅ Deployment successful! View logs |
gittensory-ui | 78cf57c | Commit Preview URL Branch Preview URL |
Jul 04 2026, 07:34 PM |
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-04 19:33:19 UTC
⏸️ Suggested Action - Manual Review
Review summary Nits — 6 non-blocking
Concerns raised — review before merging
Review context
Contributor next steps
Signal definitions
🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed 💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →. Checked by Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
Summary
apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx(after the existing "Routine checks" section), grounded in the actualscripts/deploy-selfhost-image.shandscripts/deploy-selfhost-prebuilt.sh(read both scripts in full before writing). Covers: what each script does and how it differs from a baredocker compose pull/up(restarts only thegittensoryservice via--no-deps, waits ondocker inspecthealth status, persists the resolved image/version back to.env); how to pin an exact tag or digest; that both scripts leave.env,gittensory-config/, every data volume (including the app's own/datavolume where Codex/Claude Code auth material lives), Grafana'sgrafana-datavolume, and anydocker-compose.override.ymluntouched; that there is no dedicated rollback script today (rollback = re-running one of the two scripts pointed at an older tag/digest/checkout); the forward-only migration caveat (grounded inscripts/check-migrations.mjs, which has no down-migration concept) and what to check before rolling back across a schema boundary; and pre/post-update checks, including that neither/healthnor/readyreports a version so the release id has to be confirmed via.envordocker inspectinstead.Note on scope vs. #1823's acceptance criteria: while this PR was in flight, PR #3191 (for the sibling issue #1829) merged to
mainand independently fixed the same generic/inaccurate "Upgrade flow" and "Rollback" sections ondocs.self-hosting-releases.tsxthat I had also touched — so I dropped my redundant edits to that file during rebase and kept only the new Operations section, which is the actual scope of #1823. #1823 also asks for an "optional script or make target" for repeatability; I did not add one since the issue marks it optional and the two existing scripts already cover the repeatable path. Everything else in #1823's acceptance criteria (source-checkout path, image-tag path, what's preserved, restart-only-app-service vs. recreate-profile-service guidance, migration/rollback expectations, pre/post-update checks) is addressed here, so I'm calling this "Advances," not "Closes" — it's a real, substantial step, and I want a maintainer to confirm it's the last piece before actually closing the issue.Scope
type(scope): short summaryConventional Commit format.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlint— not run standalone; no workflow files touchednpm run typechecknpm run test:coverage— not run; this PR only touchesapps/gittensory-ui/**, which Codecov does not gate (docs-only change, nosrc/**lines changed)npm run test:workers— not run; no Worker/backend code touchednpm run build:mcp/npm run test:mcp-pack— not run; no MCP package code touchednpm run ui:openapi:check— not run; no API/schema changesnpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderate— not run standalone this pass;npm cireported 0 vulnerabilities on install and no dependency changes are in this diffscripts/deploy-selfhost-image.sh,scripts/deploy-selfhost-prebuilt.sh,scripts/lib/selfhost-deploy-common.sh, andscripts/check-migrations.mjsin full to ground every claim in the new section against actual script behavior (not guessed). No bug found in either deploy script during this read — this PR is documentation-only.origin/mainimmediately before pushing; resolved a real conflict indocs.self-hosting-releases.tsxagainst the concurrently-merged docs(selfhost): align release upgrade/rollback docs with deploy scripts #3191 by taking main's version and dropping my duplicate edits there.If any required check was skipped, explain why:
apps/gittensory-ui/src/routes/docs.self-hosting-operations.tsx. Nosrc/**,scripts/**,migrations/**, or workflow files changed, so the backend/coverage/MCP/OpenAPI/audit checks above don't apply to this diff. I ran the UI-specific checks that do apply (ui:lint,ui:typecheck,ui:build) and the roottypecheck, all green.Safety
DocsPage/CodeBlock/Callout/FeatureRowprimitives, no new components or layout.UI Evidence
Not applicable — this PR is prose-only content added to an existing docs page using the page's existing components (
CodeBlock,Callout, headings, lists) with no new layout, component, or visual styling changes. I built the UI (npm run ui:build, green) and spot-checked the rendered page in a local dev server: the new "Updating and rolling back"h2and its fourh3subsections ("Path 1: pull a published image", "Path 2: build from the current git checkout", "Rollback: no dedicated command today", "Before and after any update") render correctly, appear in the page's auto-generated "On this page" table of contents with correct scroll-spy highlighting, and theCalloutwarning renders with the expected left-border styling — confirmed via the accessibility tree and DOM/style inspection rather than a screenshot (a full-page screenshot was also captured showing the section in context, but isn't committed per the review-evidence policy).Notes
<head>meta description to mention updates/rollback (previously only listed readiness/metrics/logs/dashboards/jobs/queues/routine checks).