Aller au contenu principal
Version: 4.0

S3 Storage

Buckets description

The stack requires several S3 buckets.

  • phrasea-databox

    • Stores databox files and renditions referenced by assets.
    • Can be exposed through a CDN.
    • Is private, and access is performed through signed URLs.
  • phrasea-statics

    • Stores static files used by Phrasea modules, including:
      • Databox, Expose, and Uploader MUI themes.
      • Logos used on Keycloak login pages.
      • Interface design customization files and rendition watermark files.
    • Requires public access.
    • Setting CORS rules to limit allowed origins is recommended.
  • phrasea-uploader

    • Stores files uploaded through Phrasea Uploader.
    • Is private, and access is performed through signed URLs.
  • phrasea-expose

    • Stores files used by the Phrasea Expose module.
    • Can be exposed through a CDN.
    • Is private, and access is performed through signed URLs.

Bucket naming is flexible, but bucket names must be reported in the stack configuration. See environment configuration variables, especially the S3-Compatible Storage Settings section.

S3 Addressing Style

The S3 client addressing style must match your object storage provider behavior.

  • S3_USE_PATH_STYLE_ENDPOINT=true means path-style addressing (bucket name after the endpoint domain).
  • S3_USE_PATH_STYLE_ENDPOINT=false means virtual-hosted-style addressing (bucket name as a subdomain).

For the environment variable reference, see Environment Variables.

In Helm deployment values, the equivalent setting is usePathStyleEndpoint.

Multipart Upload Settings

Phrasea uploads large files using S3 multipart upload.

Depending on your filer or object storage provider, you may need to adjust multipart limits to match platform capabilities.

Main environment variables to review:

  • S3_MULTIPART_MIN_CHUNK_SIZE
  • S3_MULTIPART_MAX_CHUNK_SIZE
  • S3_MULTIPART_MAX_PART_NUMBER
  • S3_MAX_OBJECT_SIZE

If these values do not match your storage limits, uploads can fail for large files.

For variable definitions, see Environment Variables.

Bucket CORS Configuration

If a bucket is accessed through cross-origin XMLHttpRequest calls, you must enable CORS for that bucket.

CORS Example :

{
"CORSRules": [
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "HEAD", "PUT", "POST", "DELETE"],
"AllowedOrigins": ["https://*.mydomain.com"],
"ExposeHeaders": ["ETag", "x-amz-version-id"],
"MaxAgeSeconds": 3000
}
]
}