Storage Configuration
Kuayle stores uploads either in a local Docker volume or through an S3-compatible API. Choose based on your backup, access-control and deployment requirements.
Local filesystem (default)
By default, the backend writes uploads to `/app/uploads`, persisted by the `uploads` Docker volume. Include that volume in backup and restore procedures.
- STORAGE_TYPE=local (default)
- Files stored in /app/uploads inside the backend container
- Persisted via the uploads Docker volume
- Simple — no external services needed
S3-compatible storage
The S3 backend uses the AWS SDK with a configurable endpoint and path-style requests. It is intended for AWS S3 and compatible services, but provider behavior should be tested with your chosen endpoint.
- STORAGE_TYPE=s3
- S3_ENDPOINT — your storage endpoint URL
- S3_BUCKET — bucket name for uploads
- S3_REGION — e.g. us-east-1
- S3_ACCESS_KEY and S3_SECRET_KEY — credentials
- S3_PUBLIC=true — generate public URLs for images
- S3_CDN_BASE_URL — optional CDN base for public files
SeaweedFS template
The Compose file includes a commented SeaweedFS service as a starting point. Enabling it also requires bucket, credentials, persistence and backup configuration; the commented block is not a complete production storage setup.
- SeaweedFS service included in docker-compose.yml (commented out)
- Set STORAGE_TYPE=s3 and S3_ENDPOINT=http://seaweedfs:8333
- Configure and test the bucket before enabling uploads
Review Kuayle before you deploy it
Inspect the Apache 2.0 source, then follow the Docker Compose guide to run an instance on your infrastructure.