はじめに
この記事はNextCloudの外部ストレージとしてConoHaオブジェクトストレージを使う手順というか方法を記した記事になります。
NextCloudのインストール方法などの説明はありません。
すでにインストールができている前提で解説を進めます。
インストールがまだの場合や、ConoHaオブジェクトストレージに契約してない場合は、他のサイトを参考にしてインストール、契約をしてください。
Nextcloud: 20.0.7
External storage supportをインストールする
NextCloudのアプリから「External storage support」というアプリをインストールします。
若しくは有効にします。
これで、S3などを外部ストレージとして使うことができます。
設定を入力する
設定の「外部ストレージ」からフォルダ名を適当に入力して「OpenStack ObjectStorage」を選びます。
OpenStack v2を選んで、設定の項目を入力していきます。
一番上から「Object Storage Service」「tyo1」「何でもいい」「なんでもいい」「APIのユーザー名」「APIのパスワード」「テナント名」「 https://identity.tyo1.conoha.io/v2.0 」とします。
/tokensは必要ありません。
これで完了...というわけではなく、エラーが出ます。
phpファイルを編集する
lib/private/Files/ObjectStore
へFTPなりSFTPなりでアクセスします。
そこにある、SwiftFactory.php
をダウンロードします。
SwiftFactory.phpを適当なエディタで開きます。
62行目にこのような記述があります。
//...
//62行目ぐらい
public const DEFAULT_OPTIONS = [
'autocreate' => false,
'urlType' => 'publicURL',
'catalogName' => 'swift',
'catalogType' => 'object-store'
];
この'catalogName' => 'swift',
を'catalogName' => 'Object Storage Service',
に書き換えます。
書き換えたら、先程の場所(lib/private/Files/ObjectStore
)に上書きアップロードします。
これで、再度設定すると、今度はエラーなく通るはずです。
追記1)
ConoHaオブジェクトストレージだけにしか使わない場合は、こちらでいいと思いますが、他のObjectStorageとかのやつに使えなくなると思います。
他で使う予定がある場合は、おすすめしません。
追記2)
NextCloudのアップデートがある毎に書き換える必要があります。
原因を考える
APIの結果の一部分がこちらです。
{
"endpoints": [
{
"region": "tyo1",
"publicURL": "https://object-storage.tyo1.conoha.io/v1/nc_<
テナントID>"
}
],
"endpoints_links": [],
"type": "object-store",
"name": "Object Storage Service"
},
おそらくですが、NextCloudでは、APIの結果を『「object-store」で検索をして「swift」と引っかかったものを使う』的な処理をしているんだと思います。
ですが、ConoHaのAPIの結果は「Object Storage Service」なので、エラーが出て使えない...っていうことだと思います。
スペシャルサンクス
- ConoHaのサポートに投げて「トークン発行するリンク(項目名は「認証エンドポイント」のリンク違うよ」と教えてくれたサポートの人
- 拙い文章だけど読んでくれた人