Configuration
Storage Setup (S3/MinIO)
Configure S3-compatible storage for manga chapter images. Uses MinIO for local development and any S3-compatible service for production.
Local Development (MinIO)
MinIO is included in the Docker Compose setup. It provides an S3-compatible API for local testing:
pnpm docker:upAPI Endpoint
http://localhost:9000Console (Web UI)
http://localhost:9001Default credentials:
minioadmin / minioadminEnvironment Variables
# S3-Compatible Storage S3_ENDPOINT=http://localhost:9000 S3_BUCKET=scanlation S3_ACCESS_KEY=minioadmin S3_SECRET_KEY=minioadmin S3_REGION=us-east-1 S3_FORCE_PATH_STYLE=true
S3_FORCE_PATH_STYLE should be true for MinIO and false for AWS S3.
Production Options
Cloudflare R2 Setup (Recommended)
R2 has no egress fees, making it perfect for serving manga images.
- 1Create a Cloudflare account and enable R2
- 2Create a new R2 bucket (e.g., "scanlation-images")
- 3Create an API token with R2 read/write permissions
- 4Copy your Account ID from the R2 dashboard
- 5Update your .env.local with R2 settings
# R2 Configuration
S3_ENDPOINT=https://<account-id>.r2.cloudflarestorage.com S3_BUCKET=scanlation-images S3_ACCESS_KEY=<your-access-key-id> S3_SECRET_KEY=<your-secret-access-key> S3_REGION=auto S3_FORCE_PATH_STYLE=false
Bucket Structure
The template organizes images in the following structure:
bucket/
├── covers/
│ ├── series-slug-1.jpg
│ └── series-slug-2.jpg
├── banners/
│ └── series-slug-1.jpg
└── chapters/
└── series-slug/
└── chapter-1/
├── 001.jpg
├── 002.jpg
└── ...