Supported Storage Providers
- Local filesystem
- AWS S3
- DigitalOcean Spaces
- Google Cloud Storage
- Azure Blob Storage
AWS S3
When using STORAGE_PROVIDER=s3
(for AWS S3, DigitalOcean Spaces, Minio, etc.), the underlying AWS SDK for JavaScript v3 handles authentication and configuration automatically based on its standard credential provider chain and region discovery:
- Credentials: Provide credentials via environment variables (
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
, and optionallyAWS_SESSION_TOKEN
), a shared credentials file (~/.aws/credentials
), or an IAM role (on EC2/ECS/Lambda). - Region: Specify the AWS region using the
AWS_REGION
environment variable or a shared config file (~/.aws/config
). - S3-Compatible Endpoint: For services like Minio or DigitalOcean Spaces, you may also need to set the
S3_ENDPOINT
environment variable to the service’s specific endpoint URL (e.g.,http://localhost:9000
for local Minio, orhttps://nyc3.digitaloceanspaces.com
for DigitalOcean).
AWS credentials and configuration are loaded as described in the AWS SDK documentation:
DigitalOcean Spaces
DigitalOcean Spaces is an S3-compatible object storage that this project also supports.
- Create a Space.
- Generate a new spaces access key.
- Fill in the
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
environment variables based on the access key you created. - Set
AWS_REGION
tous-east-1
- Explanation - Set
STORAGE_PATH
to the name of the Space you created. - Set
S3_ENDPOINT
to the endpoint of the Space you created. For example,https://nyc3.digitaloceanspaces.com
. - Set
STORAGE_PROVIDER
tos3
.
Google Cloud Storage
- Create a bucket (or use an existing one).
- Create a new service account.
- Grant the role
Storage Object Admin
to the service account on the bucket.# .env STORAGE_PROVIDER=google-cloud-storage STORAGE_PATH=<name-of-the-bucket>
Using static Service Account credentials
- Click “Create Key” and save the JSON file.
- Add the
project_id
,client_email
, andprivate_key
from saved JSON file to.env
(or wherever you manage your environment variables):# .env GCS_PROJECT_ID=<project_id> GCS_CLIENT_EMAIL=<client_email> GCS_PRIVATE_KEY=<private_key>
Using Application Default Credentials (ADC)
- Do not set
GCS_*
environment variables# .env GCS_PROJECT_ID= GCS_CLIENT_EMAIL= GCS_PRIVATE_KEY=
Azure Blob Storage
- Create a new Blob Storage.
- On “Security + networking” tab, copy one of
Connection string
on “Access keys” blade. - Set
ABS_CONNECTION_STRING
to the connection string.
Minio
- Create Access key
- Fill in the
AWS_ACCESS_KEY_ID
andAWS_SECRET_ACCESS_KEY
environment variables based on the access key you created. - Create bucket
- Set
STORAGE_PATH
to the name of the bucket you created. - Set
AWS_REGION
(can leave blankS3_REGION=
for none). - Set
STORAGE_PROVIDER
tominio
. - Set
S3_ENDPOINT
to Minio url (iehttp://127.0.0.1:9000
)