docs: add clustered deployment guide for shared storage#1540
Merged
Conversation
73d1acb to
d0a4bce
Compare
Member
Author
Review AnalysisReviewed adversarially and re-verified the load-bearing claims against the Correctness — verified against the image
Fixed in this PR
Still open before un-drafting
Conventions / Security
|
Add an admin-manual page describing how to run the ownCloud Docker image across multiple application nodes that share a common file storage (for example NFS) on Kubernetes, Swarm, or plain Docker hosts. The existing NFS page only covers the mount/client layer. This new page covers the container-image specifics that bite in a scale-out setup: - file locking, distributed cache, and sessions must be backed by a shared Redis, never by POSIX/NFS locks or files on the share - the session backend needs both OWNCLOUD_SESSION_SAVE_HANDLER and a tcp:// OWNCLOUD_SESSION_SAVE_PATH set together - the recursive startup chown walks the whole tree on every boot; use OWNCLOUD_SKIP_CHOWN/SKIP_CHMOD and fix ownership once out of band - consistent numeric UID/GID and no_root_squash considerations - NFS attribute-cache coherence trade-offs - cron must run on exactly one node - upgrades/migrations are uncoordinated across nodes and must be gated to a single node with cluster-wide maintenance mode - config from env vars, and S3 primary object storage as an alternative Wire the page into the navigation as a sibling of the NFS page. Signed-off-by: Thomas Müller <1005065+DeepDiver1975@users.noreply.github.com>
df79c9f to
af5663d
Compare
mmattel
approved these changes
Jun 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds an admin-manual page describing how to run the ownCloud Docker image across multiple application nodes that share common file storage (e.g. NFS) — on Kubernetes, Docker Swarm, or plain Docker hosts behind a load balancer.
The existing
nfs.adocpage only covers the NFS mount/client layer (protocol version, mount options,rsize/wsize, MTU). The parentdeployment_recommendations.adocdescribes the scale-out scenarios but not the container-image operational specifics that cause problems in a clustered setup. This new sibling page fills that gap.New page:
installation/deployment_recommendations/clustered_shared_storage.adoc, wired into the nav as a sibling of the NFS page.What it covers
All grounded in the
owncloud/baseimage's startup scripts andconfig.php:OWNCLOUD_REDIS_ENABLED=trueauto-wiresmemcache.locking+memcache.distributed.OWNCLOUD_SESSION_SAVE_HANDLER=redisrequires atcp://OWNCLOUD_SESSION_SAVE_PATHset alongside it — it is not auto-derived from the Redis host.OWNCLOUD_SKIP_CHOWN/OWNCLOUD_SKIP_CHMODand fix ownership once out of band.root_squashconsiderations for NFS.actimeo/noac), cross-linked to the NFS page.Notes for reviewers
tcp://redis:6379?auth=...) against the supported phpredis form.xref:targets were verified to resolve to existing pages.🤖 Generated with Claude Code