Files
computer-playbook/roles/web-app-seaweedfs/TODO.md

55 lines
2.6 KiB
Markdown

# 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.