Skip to content

Storage Provider Configuration

ChronoFrame supports multiple storage backends to save your photos and thumbnails. This document will detail how to configure different storage providers.

ProviderSupportUse CaseCost
S3 CompatibleProduction environment, cloud storageVaries by provider
Local FilesystemTesting environment, offline deploymentFree
OpenListPersonal cloud storage, NASFree

S3 Compatible Storage

S3 compatible storage is the most recommended production environment option, supporting all major cloud service providers.

Basic Configuration

bash
# Set storage provider to S3
NUXT_STORAGE_PROVIDER=s3

# S3 basic configuration
NUXT_PROVIDER_S3_ENDPOINT=https://your-s3-endpoint.com
NUXT_PROVIDER_S3_BUCKET=chronoframe-photos
NUXT_PROVIDER_S3_REGION=us-east-1
NUXT_PROVIDER_S3_ACCESS_KEY_ID=your-access-key-id
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=your-secret-access-key

# Optional configuration
NUXT_PROVIDER_S3_PREFIX=photos/
NUXT_PROVIDER_S3_CDN_URL=https://cdn.example.com
NUXT_PROVIDER_S3_FORCE_PATH_STYLE=false

Cloud Provider Configuration Examples

AWS S3

bash
NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=https://s3.amazonaws.com
NUXT_PROVIDER_S3_BUCKET=my-chronoframe-bucket
NUXT_PROVIDER_S3_REGION=us-east-1
NUXT_PROVIDER_S3_ACCESS_KEY_ID=AKIA...
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=...
NUXT_PROVIDER_S3_CDN_URL=https://d1234567890.cloudfront.net

Cloudflare R2

bash
NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=https://[account-id].r2.cloudflarestorage.com
NUXT_PROVIDER_S3_BUCKET=chronoframe
NUXT_PROVIDER_S3_REGION=auto
NUXT_PROVIDER_S3_ACCESS_KEY_ID=...
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=...
NUXT_PROVIDER_S3_CDN_URL=https://photos.example.com

Alibaba Cloud OSS

bash
NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=https://oss-cn-hangzhou.aliyuncs.com
NUXT_PROVIDER_S3_BUCKET=chronoframe-photos
NUXT_PROVIDER_S3_REGION=oss-cn-hangzhou
NUXT_PROVIDER_S3_ACCESS_KEY_ID=LTAI...
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=...
NUXT_PROVIDER_S3_CDN_URL=https://cdn.example.com

Tencent Cloud COS

bash
NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=https://cos.ap-beijing.myqcloud.com
NUXT_PROVIDER_S3_BUCKET=chronoframe-1234567890
NUXT_PROVIDER_S3_REGION=ap-beijing
NUXT_PROVIDER_S3_ACCESS_KEY_ID=AKID...
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=...

MinIO Self-hosted

bash
NUXT_STORAGE_PROVIDER=s3
NUXT_PROVIDER_S3_ENDPOINT=https://minio.example.com
NUXT_PROVIDER_S3_BUCKET=chronoframe
NUXT_PROVIDER_S3_REGION=us-east-1
NUXT_PROVIDER_S3_ACCESS_KEY_ID=minioadmin
NUXT_PROVIDER_S3_SECRET_ACCESS_KEY=minioadmin
# MinIO requires path-style access
NUXT_PROVIDER_S3_FORCE_PATH_STYLE=true

Bucket Configuration

CORS Settings

Recommended CORS configuration:

json
[
  {
    "AllowedOrigins": ["https://your-domain.com"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
    "AllowedHeaders": ["*"],
    "ExposeHeaders": ["ETag"],
    "MaxAgeSeconds": 3000
  }
]

Local Filesystem

Local storage saves files in the server filesystem.

bash
# Set storage provider to local
NUXT_STORAGE_PROVIDER=local

# Local storage configuration
NUXT_PROVIDER_LOCAL_PATH=/app/data/storage
NUXT_PROVIDER_LOCAL_BASE_URL=/storage

OpenList Storage

OpenList is a file listing program that supports multiple cloud storage services.

Environment VariableTypeRequiredDefaultDescription
NUXT_PROVIDER_OPENLIST_BASE_URLstringYes-Base URL of the OpenList service
NUXT_PROVIDER_OPENLIST_ROOT_PATHstringYes-Root storage path
NUXT_PROVIDER_OPENLIST_TOKENstringRequired-Authentication token (required for authentication)
NUXT_PROVIDER_OPENLIST_ENDPOINT_UPLOADstringOptional/api/fs/putUpload endpoint
NUXT_PROVIDER_OPENLIST_ENDPOINT_DOWNLOADstringOptional-Download endpoint
NUXT_PROVIDER_OPENLIST_ENDPOINT_LISTstringOptional-List endpoint
NUXT_PROVIDER_OPENLIST_ENDPOINT_DELETEstringOptional/api/fs/removeDelete endpoint
NUXT_PROVIDER_OPENLIST_ENDPOINT_METAstringOptional/api/fs/getMetadata endpoint
NUXT_PROVIDER_OPENLIST_PATH_FIELDstringOptionalpathPath field name
NUXT_PROVIDER_OPENLIST_CDN_URLstringOptional-CDN URL

Authentication:

OpenList provider requires token authentication for secure access:

bash
NUXT_PROVIDER_OPENLIST_TOKEN=your-static-token

Basic Configuration

bash
# Set storage provider to OpenList
NUXT_STORAGE_PROVIDER=openlist

# OpenList basic configuration
NUXT_PROVIDER_OPENLIST_BASE_URL=https://your-openlist-server.com
NUXT_PROVIDER_OPENLIST_ROOT_PATH=/chronoframe/photos
# Token is required for authentication
NUXT_PROVIDER_OPENLIST_TOKEN=your-api-token

# Optional configuration
NUXT_PROVIDER_OPENLIST_ENDPOINT_UPLOAD=/api/fs/put
NUXT_PROVIDER_OPENLIST_ENDPOINT_DOWNLOAD=
NUXT_PROVIDER_OPENLIST_ENDPOINT_LIST=
NUXT_PROVIDER_OPENLIST_ENDPOINT_DELETE=/api/fs/remove
NUXT_PROVIDER_OPENLIST_ENDPOINT_META=/api/fs/get
NUXT_PROVIDER_OPENLIST_PATH_FIELD=path
NUXT_PROVIDER_OPENLIST_CDN_URL=

Configuration Examples

OpenList

bash
NUXT_STORAGE_PROVIDER=openlist
NUXT_PROVIDER_OPENLIST_BASE_URL=https://your-openlist-server.com
NUXT_PROVIDER_OPENLIST_ROOT_PATH=/local/chronoframe
NUXT_PROVIDER_OPENLIST_TOKEN=your-static-token

Common Issues

The AWS Access Key Id you provided does not exist in our records

Access key error, check if ACCESS_KEY_ID and SECRET_ACCESS_KEY are correct.

The specified bucket does not exist

Bucket does not exist, confirm the bucket name is correct and exists in the specified region.

Can upload but cannot access images, console shows Access to fetch at '...' from origin '...' has been blocked by CORS policy

Bucket CORS configuration error, refer to CORS Settings for configuration.

Released under the MIT License.