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:up

API Endpoint

http://localhost:9000

Console (Web UI)

http://localhost:9001
Default credentials: minioadmin / minioadmin

Environment 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

AWS S3Recommended

Industry standard. Pay-per-use pricing, global CDN available.

Learn More

Cloudflare R2

No egress fees! Great for image-heavy sites. S3-compatible.

Learn More

DigitalOcean Spaces

$5/month flat rate. Simple pricing, built-in CDN.

Learn More

Backblaze B2

Lowest price per GB. Great for large archives.

Learn More

Cloudflare R2 Setup (Recommended)

R2 has no egress fees, making it perfect for serving manga images.

  1. 1Create a Cloudflare account and enable R2
  2. 2Create a new R2 bucket (e.g., "scanlation-images")
  3. 3Create an API token with R2 read/write permissions
  4. 4Copy your Account ID from the R2 dashboard
  5. 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
            └── ...