Nextcloud app upgrade 32 → 33 → 34 #76
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!76
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-nextcloud-app-32-to-34"
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
Sequential major-version app upgrade for Nextcloud (task #8 of the infra update-audit):
32-apache→33-apache→34-apache, in two separate maintenance windows with a real-traffic soak between them, per the plan at~/.claude/plans/2026-09-16-nextcloud-app-32-to-34-upgrade.md.config/apps.config.phphad been missing since the original 2026-07-04 Unraid migration, so all 10 app-store-installed apps (Calendar, Deck, Notes, Passwords, Talk, the Collabora bridge, notify_push, etc.) lived in the image-managedapps/directory instead of the writablecustom_apps/path. The image's own upgrade entrypoint doesrsync --deleteagainstapps/on every major version bump, which deleted 9 of those 10 apps' code outright (not just disabled) on first boot of the new image —notify_pushincluded, which crash-loopedpushuntil fixed. No data was lost (recoverable via the pre-upgradehtmlbackup, though not needed — fresh app-store installs were used instead). Fixed by adding the missingapps.config.phpand reinstalling all 10 apps intocustom_apps/;push's hardcoded entrypoint path was updated to match. Full writeup inccnet-nextcloud-swarm/CLAUDE.md.apps.config.phpfix let Nextcloud's own updater fetch NC34-compatible app-store releases automatically (deck1.16.8→1.18.5,richdocuments10.3.1→11.1.1,spreed/Talk 23.0.11→24.0.5) with no manual intervention.occweb(an obscure admin-tools app) has no NC34-compatible release upstream and was left disabled — a deliberate decision, not a gap.Also caught and corrected mid-task: an earlier assumption (from the MariaDB 10.11→11.8 migration) that
docker stack deploypreserves out-of-banddocker service scaleturned out to be false — it resets every service to its file-declared replica count on every deploy. No harm resulted (caught quickly, nothing degraded), but the migration pattern was changed to declarereplicas: 0in the stack file itself for the first deploy of each hop, matching the two-deploy pattern already used for the Postgres migrations.An apparent ~14%
oc_filecacherow-count drop after hop 2 was investigated and exonerated — traced via the DB dumps taken before each hop to preview-cache cleanup that ran overnight after hop 1, entirely before hop 2 started. Not a data-loss regression.Changes
ccnet-nextcloud-swarm/nextcloud-swarm-stack.yml:nextcloud/cron/pushimage tags32-apache→34-apache;push'sentrypoint:updated fromapps/notify_push/...tocustom_apps/notify_push/....ccnet-nextcloud-swarm/CLAUDE.md: documents theapps.config.phpgap, root cause, and fix, plus confirms the Collabora pin (26.04.2.4.1) needed no change for either hop.config/apps.config.phpwas added live on the CephFS bind mount (not tracked in this repo — app runtime config, not stack definition) with the image's stockapps_paths(shippedapps/read-only,custom_apps/writable).Test plan
needsDbUpgrade: false, all 10 apps verified enabled via direct DB query (notocc app:list, unreliable under maintenance mode),oc_filecachecount matched pre/post,occ richdocuments:activate-config(Collabora WOPI handshake) andocc notify_push:self-test(6/6) both clean, real HTTP check, overnight log audit across all 6 services (app log + container logs) found zero warnings/errors beyond expected internet bot-scan noise.oc_filecacheinvestigation above.🤖 Generated with Claude Code
https://claude.ai/code/session_01TAp6m6GGf1PKfff1HKziBB