chore(forgejo): upgrade app 15 -> 16 #74
No reviewers
Labels
No labels
blocked
borg-backup
ceph
forgejo
in-progress
infra
netdata
nextcloud
p:high
p:low
p:medium
searxng
service-onboard
swarm-nodes
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
copper/ccnet-prod-devops!74
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-forgejo-app-15-to-16"
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?
Summary
codeberg.org/forgejo/forgejofrom:15to:16inccnet-forgejo-swarm/forgejo-swarm-stack.yml.REVERSE_PROXY_TRUSTED_PROXIES, don't use reverse-proxy auth, and our one pull mirror is a low-risk external target unaffected by the SSRF-hardening change).pg_dumpbackup before cutover (gated on dump validity) and verified the internal Forgejo schema migration (v16a–v16e) applied cleanly with no errors./api/v1/versionreports16.0.4+gitea-1.22.0, a realgit cloneagainst the repo succeeded, HTTPS returns 200, and the existing pull mirror's sync schedule is undisturbed.Incident during execution (documented in full in the plan file)
This worktree was created before task #5's postgres 16→18 migration (PR #73) had merged into
main, so its stack file still had the oldpostgres:16-alpineimage/mount config. The first deploy attempt pushed that staledbconfig live, causingforgejo_dbto crash-loop (postgres 16'sinitdbcorrectly refused to touch the non-empty pg18-format datadir rather than overwriting it — no data was touched or lost, verified directly against the on-diskPG_VERSIONfile). Fixed by correcting the stack file back to the real productiondbconfig, redeploying, and force-updatingforgejo_forgejopast a stuckDesired State: Shutdowntask (a known raft/scheduling gotcha). Total downtime ~4 minutes, entirely within the already-planned quiescence window.Before pushing, merged
origin/maininto this branch and verified the net diff against main was exactly the intended change, to make sure this class of staleness can't slip through again.Full details, advisor review notes, and root-cause writeup:
~/.claude/plans/2026-09-16-forgejo-app-15-to-16-upgrade.md(local plan file, not committed to the repo).Test plan
pg_dumpbackup taken and gated on validity before cutovercurl -I https://code.coppercore.net→ 200/api/v1/version→16.0.4+gitea-1.22.0git cloneagainst the repo succeeded🤖 Generated with Claude Code
https://claude.ai/code/session_01TAp6m6GGf1PKfff1HKziBB