File storage (Local)
If your project includes file or image uploads, you'll need an S3-compatible storage backend. For local development, we use MinIO — it provides the same API as AWS S3 and runs via Docker.
Start MinIO with Docker Compose
From the root of your project, run:
docker-compose up -dThis will:
- Start MinIO on ports 9000 (API) and 9001 (Console)
- Create two buckets:
project-public(anonymous read) andproject-private(signed URLs only) - Set up an application user with access credentials
- Configure bucket policies
Configure environment variables
Add the following to your packages/backend/.env file:
S3_BUCKET_PUBLIC=project-public
S3_BUCKET_PRIVATE=project-private
S3_ACCESS_KEY_ID=app_user
S3_SECRET_ACCESS_KEY=app_password123
S3_REGION=us-east-1
S3_ENDPOINT=http://localhost:9000Access MinIO console (optional)
Open http://localhost:9001 in your browser:
- Username:
app_user - Password:
app_password123
From the console you can browse buckets, manage files, and configure access policies.