# TODO ## Object-store (S3) consumer integration — roles not yet wired SeaweedFS is the shared S3 object store. A role becomes a consumer by declaring a `seaweedfs` service in `meta/services.yml`, wiring its app config from `lookup('objstore', application_id, ...)` (bucket / access_key / secret_key / url / region), and shipping a gated `files/playwright/test-seaweedfs.js`. See `web-app-mastodon`, `web-app-pixelfed`, and `web-app-nextcloud` for the reference pattern. SeaweedFS S3 requires **path-style addressing** and the internal `http://` endpoint. The roles below are database-backed and their upstream app can store objects in S3, so the integration is **fundamentally possible but not yet implemented**. Roles whose upstream has no S3 backend, or whose S3 client is incompatible with SeaweedFS path-style, are listed at the end. ### Possible via an upstream plugin/extension | Role | Mechanism (verify exact upstream keys before wiring) | |---|---| | `web-app-moodle` | `tool_objectfs` object-file-storage plugin | | `web-app-wordpress` | media-offload plugin (e.g. WP Offload Media) | | `web-app-mediawiki` | `Extension:AWS` (S3 file backend) | | `web-app-odoo` | S3 `ir_attachment` / attachment-storage module | | `web-app-erpnext` | frappe S3 backups + file storage | | `web-app-joomla` | S3 storage plugin | ### Possible — upstream S3 support still to confirm | Role | Note | |---|---| | `web-app-jira` | Atlassian DC attachment store on S3 (edition/version dependent) | | `web-app-confluence` | Atlassian DC attachment store on S3 (edition/version dependent) | | `web-app-suitecrm` | confirm upstream S3 file-storage support | | `web-app-espocrm` | confirm upstream S3 attachment support | | `web-app-zammad` | confirm upstream storage-provider S3 support | | `web-app-xwiki` | confirm S3 attachment store support | ### Blocked — possible only with a provider-side change | Role | Blocker | |---|---| | `web-app-discourse` | Discourse's `aws-sdk-s3` defaults a custom endpoint to virtual-host addressing and exposes no `force_path_style`; it needs SeaweedFS to serve virtual-host/wildcard-DNS addressing (a global provider change affecting all path-style consumers) before it can use S3. | ### Not currently possible | Role | Reason | |---|---| | `web-app-pretix` | Open-source pretix has no S3/object-store backend (local `MEDIA_ROOT` only; no django-storages/boto3, no config hook). | Roles with no object-store surface at all (e.g. `web-app-keycloak`, `web-app-matomo`, `web-app-pgadmin`, `web-app-phpmyadmin`, `web-app-yourls`, `web-app-stalwart`) keep their `# nocheck: seaweedfs-required` exemption and are intentionally excluded.