Skip to main content
Activepieces stores files uploaded by users and generated during workflow execution. You can use local storage or S3-compatible object storage.

Storage Options

Local Storage

Default optionFiles stored on container filesystem:
  • Simple setup
  • No external dependencies
  • Requires persistent volumes
  • Limited scalability
Use for: Development, single-server deployments

S3 Storage

Recommended for productionFiles stored in S3-compatible object storage:
  • Unlimited scalability
  • High availability
  • Geographic distribution
  • Managed backups
Use for: Production, multi-server deployments

Local Storage

Configuration

Local storage is the default. Files are stored in /usr/src/app/cache:
.env

Docker Volume

Mount a volume to persist files:
docker-compose.yml
Or use a named volume:
docker-compose.yml

Kubernetes Persistent Volume

values.yaml

Limitations

Local storage limitations:
  • Files lost if container is deleted (without volume)
  • Cannot share files across multiple instances
  • Limited by disk space
  • No built-in redundancy
For production with multiple replicas, use S3 storage.

S3 Storage

Supported Services

Activepieces works with any S3-compatible service:
Amazon Simple Storage Service
.env

Configuration

enum
required
Storage backendOptions: local, s3
string
required
S3 bucket nameCreate bucket before deploying Activepieces.
string
required
AWS access key ID or equivalent
Not required if using AP_S3_USE_IRSA=true on EKS.
string
required
AWS secret access key or equivalent
string
required
S3 regionExamples: us-east-1, eu-west-1, auto (for Cloudflare R2)
string
Custom endpoint for S3-compatible servicesLeave empty for AWS S3
boolean
default:"false"
Generate pre-signed URLs for file downloadsEnable for private buckets:
boolean
default:"false"
Use IAM Roles for Service Accounts (EKS)
When enabled, no access key/secret required. Authentication uses pod IAM role.

S3 Setup Guide

AWS S3

1

Create S3 bucket

Or via AWS Console:
  1. Go to S3 service
  2. Click “Create bucket”
  3. Enter bucket name: activepieces-files
  4. Select region: us-east-1
  5. Keep default settings
  6. Click “Create bucket”
2

Configure bucket policy

For public access (not recommended):
For private access (recommended), use signed URLs:
3

Create IAM user

Create IAM user with S3 access:
IAM Policy
Generate access keys and add to .env.
4

Configure Activepieces

.env

MinIO (Self-Hosted)

1

Deploy MinIO

docker-compose.yml
Start MinIO:
2

Create bucket

Access MinIO Console at http://localhost:9001Login with:
  • Username: minioadmin
  • Password: minioadmin
Create bucket named activepieces
3

Configure Activepieces

.env

EKS with IRSA

Use IAM Roles for Service Accounts (no credentials needed):
1

Create IAM policy

2

Create IAM role

3

Configure Helm

values.yaml

File Structure

Files are organized by platform and project:
File types (from s3-helper.ts:13):
  • FILE: User-uploaded files
  • FLOW_RUN_LOG: Execution logs
  • STEP_FILE: Step output files
  • PACKAGE_ARCHIVE: Piece package archives

File Operations

Activepieces uses the AWS SDK for S3 operations (source: s3-helper.ts):

Upload

Uploads file to S3 using PutObjectCommand.

Download

Downloads file from S3 using GetObjectCommand.

Signed URLs

Generates pre-signed URL valid for 7 days.

Delete

Batch delete up to 100 files (Cloudflare R2 limit).

Monitoring

Storage Usage

Check disk usage:

Cleanup

Configure lifecycle policies to automatically delete old files:
Apply policy:

Migration

Local to S3

1

Setup S3 bucket

Create and configure S3 bucket as described above.
2

Sync existing files

3

Update configuration

.env
4

Restart Activepieces

Troubleshooting

Test S3 configuration:
Check logs:
Verify IAM permissions include:
  • s3:PutObject
  • s3:GetObject
  • s3:DeleteObject
  • s3:ListBucket
Check bucket policy allows your IAM user/role.
Enable signed URLs:
Verify bucket is private (not public).Check URL expiration (7 days default).
Ensure volume is mounted:
Recreate with volume:

Best Practices

Use S3 for Production

Always use S3-compatible storage for production deployments with:
  • Multiple replicas
  • High availability requirements
  • Large file volumes

Enable Versioning

Enable S3 bucket versioning to protect against accidental deletion:

Use Signed URLs

Keep buckets private and use pre-signed URLs:

Configure Lifecycle

Automatically delete old logs and temporary files to reduce costs.

Next Steps

Environment Variables

Complete S3 configuration reference

Database

Configure PostgreSQL

Scaling

Scale file storage

Backup

Backup S3 files