Coconut Storage (TEST)
Perfect if you want to test Coconut without having a Storage provider or CDN.Note that you can't use it for production, the files are deleted within 24 hours.
{
"storage": {
"service": "coconut"
}
}
AWS S3
Example for AWS S3 storage:
{
"storage": {
"service": "s3",
"region": "us-east-1",
"bucket": "mybucket",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be s3 . | string | s3 | Yes |
credentials Keys to authenticate against AWS S3. | hash | Yes | |
access_key_id The AWS Access Key Id. |
string | Yes | |
secret_access_key The AWS Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
region The bucket region. By default, we find the right region automatically. Supported regions are: us-east-2 us-east-1 us-west-1 us-west-2 af-south-1 ap-east-1 ap-south-1 ap-northeast-3 ap-northeast-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ca-central-1 cn-north-1 cn-northwest-1 eu-central-1 eu-west-1 eu-west-2 eu-south-1 eu-west-3 eu-north-1 . |
string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
secure Returns an HTTPS URL if true . |
bool | true | No |
acl supported acl: private public-read public-read-write authenticated-read aws-exec-read bucket-owner-read bucket-owner-full-control |
string | public-read | No |
storage_class supported storage class: STANDARD REDUCED_REDUNDANCY STANDARD_IA ONEZONE_IA INTELLIGENT_TIERING GLACIER DEEP_ARCHIVE |
string | STANDARD | No |
expires |
string | No | |
cache_control |
string | No |
AWS S3 Bucket Policy
When using AWS S3, you must setup a bucket policy so that we have the permissions to upload. Here is a policy that you can use. Don't forget to replace BUCKET by your actual bucket name.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": ["s3:PutObject", "s3:GetObject", "s3:ListBucket", "s3:GetBucketLocation", "s3:PutObjectAcl", "s3:GetBucketAcl", "s3:GetObjectAcl"],
"Resource": ["arn:aws:s3:::BUCKET", "arn:aws:s3:::BUCKET/*"]
}
]
}
Google Cloud Storage
Example for Google Cloud Storage storage:
{
"storage": {
"service": "gcs",
"bucket": "mybucket",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
}
}
}
To use Google Cloud Storage with Coconut, you will need to follow this simple guide here.
Note that Uniform bucket level access is not supported. You must use Fine-grained instead.
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be gcs . | string | gcs | Yes |
credentials Keys to authenticate against AWS S3. | hash | Yes | |
access_key_id The AWS Access Key Id. |
string | Yes | |
secret_access_key The AWS Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
expires |
string | No | |
cache_control |
string | No |
DO Spaces
Example for DO Spaces storage:
{
"storage": {
"service": "dospaces",
"bucket": "mybucket",
"region": "fra1",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be dospaces . | string | dospaces | Yes |
credentials Keys to authenticate. | hash | Yes | |
access_key_id The Access Key Id. |
string | Yes | |
secret_access_key The Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
region The bucket region. Supported regions are: nyc3 sfo2 sgp1 fra1 . |
string | nyc3 | No |
acl supported acl: private public-read |
string | public-read | No |
Linode
Example for Linode storage:
{
"storage": {
"service": "linode",
"bucket": "mybucket",
"region": "us-east-1",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be linode . | string | linode | Yes |
credentials Keys to authenticate. | hash | Yes | |
access_key_id The Access Key Id. |
string | Yes | |
secret_access_key The Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
region The bucket region. Supported regions are: us-east-1 us-east-2 eu-central-1 |
string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
acl supported acl: private public-read |
string | public-read | No |
Wasabi
Example for Wasabi storage:
{
"storage": {
"service": "wasabi",
"bucket": "mybucket",
"region": "us-east-1",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be wasabi . | string | wasabi | Yes |
credentials Keys to authenticate. | hash | Yes | |
access_key_id The Access Key Id. |
string | Yes | |
secret_access_key The Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
region The bucket region. Supported regions are: us-east-1 us-east-2 us-west-1 eu-central-1 |
string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
acl supported acl: private public-read |
string | public-read | No |
Any S3 compatible services
Example for an S3 compatible service storage:
{
"storage": {
"service": "s3other",
"bucket": "mybucket",
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
},
"endpoint": "https://compatibles3service.com/api/"
}
}
Example with Minio:
{
"storage": {
"service": "s3other",
"bucket": "mybucket",
"force_path_style": true, // mandatory
"region": "region", // mandatory
"credentials": {
"access_key_id": "...",
"secret_access_key": "..."
},
"endpoint": "https://your.minio.endpoint"
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be s3other . | string | s3other | Yes |
credentials Keys to authenticate. | hash | Yes | |
access_key_id The Access Key Id. |
string | Yes | |
secret_access_key The Secret Access Key. |
string | Yes | |
bucket The bucket where you want the files to be uploaded. The bucket must exist. | string | Yes | |
region The bucket region. |
string | No | |
path The absolute path where you want the files to be uploaded. | string | / | No |
endpoint The API endpoint (full URL) pointing to the S3 compatible service API. |
string | Yes | |
force_path_style Some service requires Force Path Style to be true. |
boolean | false | No |
Backblaze
Example for backblaze storage:
{
"storage": {
"service": "backblaze",
"bucket_id": "mybucketId",
"credentials": {
"app_key_id": "...",
"app_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be backblaze . | string | backblaze | Yes |
credentials Keys to authenticate. | hash | Yes | |
account_id The Account Id. If you have generated a specific key for an App, you should use app_key_id to authenticate instead. |
string | Yes | |
app_key_id The App Key Id. |
string | Yes | |
app_key The App Key. |
string | Yes | |
bucket_id The bucket Id where you want the files to be uploaded. The bucket must exist. | string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
Rackspace
Example for Rackspace storage:
{
"storage": {
"service": "rackspace",
"container": "mycontainer",
"credentials": {
"username": "...",
"api_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be rackspace . | string | rackspace | Yes |
credentials Keys to authenticate. | hash | Yes | |
username The Username. |
string | Yes | |
api_key The API Key. |
string | Yes | |
container The Container where you want the files to be uploaded. The container must exist. | string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
region The container region. Supported regions are: ORD DFW HKG LON IAD SYD |
string | No |
Microsoft Azure
Example for Azure storage:
{
"storage": {
"service": "azure",
"container": "mycontainer",
"credentials": {
"account": "...",
"access_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be azure . | string | azure | Yes |
credentials Keys to authenticate. | hash | Yes | |
account The Account. |
string | Yes | |
api_key The Access Key. |
string | Yes | |
container The Container where you want the files to be uploaded. The container must exist. | string | Yes | |
path The absolute path where you want the files to be uploaded. | string | / | No |
IPFS Pinata
Warning: httpstream outputs (HLS and MPEG-Dash) won't work at the moment as we use only relative paths.
Example for Pinata storage:
{
"storage": {
"service": "ipfs_pinata",
"credentials": {
"api_key": "...",
"secret_api_key": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be ipfs_pinata . | string | ipfs_pinata | Yes |
credentials Keys to authenticate. | hash | Yes | |
api_key The API Key. |
string | Yes | |
secret_api_key The Secret API Key. |
string | Yes | |
gateway_dns If you have dedicated gateway, you can set it like this: <Your Gateway Subdomain>.mypinata.cloud . | string | Yes |
IPFS Infura
Warning: httpstream outputs (HLS and MPEG-Dash) won't work at the moment as we use only relative paths.
Example for Infura storage:
{
"storage": {
"service": "ipfs_infura",
"credentials": {
"project_id": "...",
"project_secret": "..."
}
}
}
Options
Name | Type | Default | Required |
---|---|---|---|
service Service must be ipfs_infura . | string | ipfs_infura | Yes |
credentials Keys to authenticate. | hash | Yes | |
project_id The Project ID. |
string | Yes | |
project_secret The Project Secret. |
string | Yes |
FTP, SFTP and HTTP protocols
We support FTP, SFTP and HTTP servers if you want to use your own server to receive the files.
Example for HTTP:
{
"storage": {
"url": "https://myserver.com/api/coconut"
}
}
Another example for FTP server:
{
"storage": {
"url": "ftp://username:passwd@myserver.com/path/"
}
}