docs(filesystem): restructure hosting filesystem guide and document S3 migration#2353
docs(filesystem): restructure hosting filesystem guide and document S3 migration#2353Soner (shyim) wants to merge 4 commits into
Conversation
…3 migration - Rewrite guides/hosting/infrastructure/filesystem.md as a task-oriented guide: storage decision table, full per-adapter config reference (local, amazon-s3, google-storage), media URL strategies, upload restrictions, private download strategies, and troubleshooting. - Add a step-by-step 'Migrating an existing filesystem to a new adapter' section (copy files, switch config, regenerate assets/theme), addressing shopware/shopware-cli#834. - Cross-link the migration guide from the cluster setup filesystem section.
Developer Docs healthcheckStatus: Completed with |
There was a problem hiding this comment.
Pull request overview
This PR improves the Shopware hosting documentation by restructuring the filesystem guide into a task-oriented reference and adding a concrete, step-by-step migration procedure for moving an existing installation from local storage to an S3 (or S3-compatible) backend.
Changes:
- Rewrote the filesystem guide to include decision guidance, adapter structure, supported adapter configuration, and operational sections (migration, CDN, troubleshooting).
- Added a detailed “migrating an existing filesystem to a new adapter” walkthrough (copy → switch config → regenerate assets/theme → verify, with a two-pass strategy).
- Cross-linked the new migration section from the cluster setup guide and extended the spellcheck wordlist for newly introduced terms.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| guides/hosting/installation-updates/cluster-setup.md | Adds a direct cross-link to the new filesystem migration section for cluster/S3 moves |
| guides/hosting/infrastructure/filesystem.md | Major rewrite: structured overview, adapter reference, S3 migration procedure, and troubleshooting guidance |
| .wordlist.txt | Adds and keeps sorted new accepted terms used by the updated documentation |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
| ::: | ||
|
|
||
| ## Supported adapter configurations | ||
| For advanced control over timeouts, retries, and proxies, see [Custom HTTP client for S3](#custom-http-client-for-s3). |
There was a problem hiding this comment.
Soner (@shyim) this anchor is no where to be found, also in other files, what is meant to be linked here?
| ### Amazon S3 (and S3-compatible providers) | ||
|
|
||
| ## CDN configuration | ||
| Works with Amazon S3 and any S3-compatible storage such as MinIO, Cloudflare R2, DigitalOcean Spaces, Hetzner Object Storage, or Ceph. |
There was a problem hiding this comment.
| Works with Amazon S3 and any S3-compatible storage such as MinIO, Cloudflare R2, DigitalOcean Spaces, Hetzner Object Storage, or Ceph. | |
| Works with Amazon S3 and any S3-compatible storage such as **MinIO, Cloudflare R2, DigitalOcean Spaces, Hetzner Object Storage, or Ceph**. |
| | `bucket` | Bucket name. **Required.** | | ||
| | `region` | Bucket region, e.g. `eu-central-1`. **Required.** | | ||
| | `endpoint` | Custom endpoint URL. Optional for AWS; required for most S3-compatible providers. | | ||
| | `use_path_style_endpoint` | Set to `true` when the provider does **not** put the bucket in the subdomain (e.g. MinIO in its default setup). | | ||
| | `root` | Prefix inside the bucket all paths are stored under. Optional. | | ||
| | `credentials.key` / `credentials.secret` | Access key and secret. Optional — if omitted, AWS credential discovery (env vars, instance/IAM role) is used. | | ||
| | `options` | Extra options passed through to the underlying AsyncAws S3 client. Optional. | |
There was a problem hiding this comment.
| | `bucket` | Bucket name. **Required.** | | |
| | `region` | Bucket region, e.g. `eu-central-1`. **Required.** | | |
| | `endpoint` | Custom endpoint URL. Optional for AWS; required for most S3-compatible providers. | | |
| | `use_path_style_endpoint` | Set to `true` when the provider does **not** put the bucket in the subdomain (e.g. MinIO in its default setup). | | |
| | `root` | Prefix inside the bucket all paths are stored under. Optional. | | |
| | `credentials.key` / `credentials.secret` | Access key and secret. Optional — if omitted, AWS credential discovery (env vars, instance/IAM role) is used. | | |
| | `options` | Extra options passed through to the underlying AsyncAws S3 client. Optional. | | |
| | `bucket` | Bucket name (**Required**) | | |
| | `region` | Bucket region, e.g. `eu-central-1` (**Required**) | | |
| | `endpoint` | Custom endpoint URL. Optional for AWS; required for most S3-compatible providers | | |
| | `use_path_style_endpoint` | Set to `true` when the provider does **not** put the bucket in the subdomain (e.g. MinIO in its default setup) | | |
| | `root` | Prefix inside the bucket all paths are stored under (**Optional**) | | |
| | `credentials.key` / `credentials.secret` | Access key and secret. Optional — if omitted, AWS credential discovery (env vars, instance/IAM role) is used. | | |
| | `options` | Extra options passed through to the underlying AsyncAws S3 client (**Optional**) | |
| | `bucket` | Bucket name. **Required.** | | ||
| | `projectId` | Google Cloud project ID. **Required.** | | ||
| | `keyFilePath` | Path to a service account key JSON file. | | ||
| | `keyFile` | The service account key as an inline array (alternative to `keyFilePath`). | | ||
| | `root` | Prefix inside the bucket. Optional. | |
There was a problem hiding this comment.
| | `bucket` | Bucket name. **Required.** | | |
| | `projectId` | Google Cloud project ID. **Required.** | | |
| | `keyFilePath` | Path to a service account key JSON file. | | |
| | `keyFile` | The service account key as an inline array (alternative to `keyFilePath`). | | |
| | `root` | Prefix inside the bucket. Optional. | | |
| | `bucket` | Bucket name (**Required**) | | |
| | `projectId` | Google Cloud project ID (**Required**) | | |
| | `keyFilePath` | Path to a service account key JSON file. | | |
| | `keyFile` | The service account key as an inline array (alternative to `keyFilePath`). | | |
| | `root` | Prefix inside the bucket (**Optional**) | |
Summary
Reworks the hosting filesystem documentation and adds a concrete S3 migration guide.
guides/hosting/infrastructure/filesystem.md— rewritten from a scattered config dump into a task-oriented guide:localvs. S3 vs. a shared bucket for clusters vs. CDN).public,private,theme,asset,sitemap,temp) with visibility and default paths.local,amazon-s3(incl. S3-compatible providers like MinIO/R2/Spaces), andgoogle-storage, verified against the Shopware source.id,filename,physical_filename,plain), upload restrictions, private download strategies (php/x-sendfile/x-accel),batch_write_sizetuning, custom S3 HTTP client, and custom adapters.rclone/aws s3 sync, switch config, regenerate assets/theme, verify, plus a two-pass strategy to avoid gaps).guides/hosting/installation-updates/cluster-setup.md— cross-links the new migration guide from the filesystem section.Related links
src/Core/Framework/Adapter/Filesystem/andsrc/Core/Framework/DependencyInjection/Configuration.phpin shopware/shopware.Checklist
PageRefreferences where relevant..gitbook.yamlif pages were moved, renamed, or deleted. (N/A — no pages moved, renamed, or deleted.).wordlist.txt(and sorted it) if spellcheck flags new legitimate terms.Notes
rojopolis/spellcheck-github-actions);.wordlist.txtwas updated and re-sorted withLC_ALL=C sortto match CI ordering.typestrings, config keys, default paths, download/path strategies, package requirements) were cross-checked against the Shopware core source.