What happend
Backblaze release there cloud storage’s S3 compatible API about 2 week ago. Given that it is more reliable and cheaper, I tried to move my primary s3 backend from self-hosted MinIO to B2 Cloud Storage this morning but failed.
I’m using K3S v17.3 and latest stable/nextcloud chart. After first failed I thought that is a database issue so I change my database backend from mariadb to sqlite but still not work.
Logs
Apache2’s logs said Pod’s livenessProbe checked /status.php
but always got 400:
there is no log from nextcloud, even after set loglevel to debug:
and I don’t know how to get log from php side. Please somebody here told me how to get log from php side.
Possible reason
Since I only modified the S3 configuration file, I can only think that B2’s S3 API does not meet the requirements of nextcloud.
Here’s B2 said what they support or not:
Supported Calls
The Backblaze S3 Compatible API returns calls in the same way the AWS S3 API does. Note that this may vary slightly from AWS S3 API documentation - this difference is expected based on the AWS S3 API. Here are the calls that are supported:
Abort Multipart Upload
Complete Multipart Upload
Create Bucket
Delete Bucket
Delete Multiple Objects
Delete Object
Get Bucket ACL
Get Bucket Location
Get Bucket Object Versions
Get Object
Get Object ACL
Head Bucket
Head Object
Initiate Multipart Upload
List Buckets
List Multipart Uploads
List Objects v2
List Parts
Put Bucket ACL
Put Object
Put Object Copy
Upload Part
Upload Part Copy
Unsupported Features
The Backblaze S3 Compatible API does not currently support the following features:
ACLs (see above)
IAM roles
Object Locks
Object Tagging
Bucket Logging
Legal Hold
Website configuration
Lifecycle Rules (supported by the Backblaze B2 Native API)
Server-side Encryption
Full S3 API docs see links above.
Conf file
Chart’s values.yaml:
image:
tag: 18.0.4-apache
pullPolicy: Always
nextcloud:
host: [masked]
username: [masked]
password: [masked]
configs:
s3.config.php: |-
<?php
$CONFIG = array (
'objectstore' => array(
'class' => '\\OC\\Files\\ObjectStore\\S3',
'arguments' => array(
'bucket' => '[masked]',
'autocreate' => true,
'key' => '[masked]',
'secret' => '[masked]',
'hostname' => 's3.us-west-002.backblazeb2.com',
'port' => 443,
'region' => 'us-west-1',
'use_path_style' => false,
'use_ssl' => true
)
)
);
internalDatabase:
enabled: true
externalDatabase:
enabled: false
type: mysql
host: [masked]
user: nextcloud
password: [masked]
database: [masked]
mariadb:
enabled: false
persistence:
enabled: true
PS. Region us-west-1
works with other apps and nextcloud don’t work with us-west-002
either I checked.
PS. I tried both nc18 and nc17.
What hpappend with B2’s storage
Infact, after the very first pod failed, there is some files in B2’s bucket generated by nextcloud.
I download that urn:oid:5
file from B2’s cloud storage.
Seek for help
Is here anyone use B2’s S3 API as well and how about you?