Skip to content

docs(filesystem): restructure hosting filesystem guide and document S3 migration#2353

Open
Soner (shyim) wants to merge 4 commits into
mainfrom
docs/filesystem-improvements-s3-migration
Open

docs(filesystem): restructure hosting filesystem guide and document S3 migration#2353
Soner (shyim) wants to merge 4 commits into
mainfrom
docs/filesystem-improvements-s3-migration

Conversation

@shyim

@shyim Soner (shyim) commented Jun 25, 2026

Copy link
Copy Markdown
Member

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:
    • Storage decision table (when to use local vs. S3 vs. a shared bucket for clusters vs. CDN).
    • Filesystem structure table covering all adapters (public, private, theme, asset, sitemap, temp) with visibility and default paths.
    • Complete per-adapter config reference for local, amazon-s3 (incl. S3-compatible providers like MinIO/R2/Spaces), and google-storage, verified against the Shopware source.
    • Media URL strategies (id, filename, physical_filename, plain), upload restrictions, private download strategies (php/x-sendfile/x-accel), batch_write_size tuning, custom S3 HTTP client, and custom adapters.
    • A Troubleshooting section mapping common symptoms (404 media, wrong domain, missing assets, missing dependency, MinIO host errors) to fixes.
  • New "Migrating an existing filesystem to a new adapter" section — step-by-step move from local to S3 (copy files with 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

Checklist

  • I reviewed affected links, code samples, and cross-references, including PageRef references where relevant.
  • I added or updated redirects in .gitbook.yaml if pages were moved, renamed, or deleted. (N/A — no pages moved, renamed, or deleted.)
  • I updated .wordlist.txt (and sorted it) if spellcheck flags new legitimate terms.
  • Any required dependent changes in downstream modules have already been merged and published. (N/A — docs-only change.)
  • This pull request is ready for review. (Draft — pending review of tone/structure.)

Notes

  • All new prose terms were verified against the Dockerized CI spellcheck (rojopolis/spellcheck-github-actions); .wordlist.txt was updated and re-sorted with LC_ALL=C sort to match CI ordering.
  • Technical details (adapter type strings, config keys, default paths, download/path strategies, package requirements) were cross-checked against the Shopware core source.

…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.
@shopware-dev-docs-connector

shopware-dev-docs-connector Bot commented Jun 25, 2026

Copy link
Copy Markdown

Developer Docs healthcheck

Status: Completed with success.
Repository: shopware/docs
Commit: 96b74f6
Preview: https://developer-documentation-8eh3nx2lr-shopware-frontends.vercel.app
Workflow run: #4286

@shyim Soner (shyim) marked this pull request as ready for review June 25, 2026 06:05
Copilot AI review requested due to automatic review settings June 25, 2026 06:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread guides/hosting/infrastructure/filesystem.md Outdated
Comment thread guides/hosting/infrastructure/filesystem.md Outdated
Comment thread guides/hosting/infrastructure/filesystem.md Outdated
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).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
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**.

Comment on lines +183 to +189
| `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. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `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**) |

Comment on lines +219 to +223
| `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. |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
| `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**) |

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants