NaruseJunのメモ帳

NaruseJunがいろいろ書いてる

ownCloudをConoHaのオブジェクトストレージに乗せる

2016-07-27 技術

このはちゃんかわいい

ownCloud、便利なんですがファイルをVPS上に記録してるとConoHaはデフォで50GBしか使えないので辛い。

増量しても良いんですけど、どうせなら容量単価の安いオブジェクトストレージに乗せられないか?というお話です。

乗せられないか?というか、乗るんですけど。

ownCloudのインストール

公式から落として設置してアクセスすれば初期設定画面になってあとはノリでなんとかなるので、
特に書くこともないんですが、nginxを使ってる場合はキチンと設定しないとダメなので、そこだけ注意です。

参考:Nginx Configuration for the ownCloud 9.x Branches

オブジェクトストレージ上にファイルを置く

無制限ストレージ with 新しいConoHa Object Storage and ownCloud
みたいな、オブジェクトストレージをExternalStorageとして接続する方法もありますが、
これだとExternalStorageフォルダ外に置いたファイルが普通にローカルに記録されちゃうので、ちょっと微妙。

全てのユーザがどこにファイルを置いてもオブジェクトストレージに置かれる方が好ましいです。
ということで、オブジェクトストレージをPrimaryStorageとして設定しましょう。

ConoHaのオブジェクトストレージの正体はOpenStack Swiftなので、ownCloudに最初から入ってる機能でなんとかなります。

まず、予めコンテナを作成しておく必要があるのですが、ConoHaのオブジェクトストレージにはGUIがないので、コマンドラインツールでなんとかしましょう。
とりえあず、pipを使える環境にしてから、

$ pip install python-swiftclient python-keystoneclient
$ export OS_AUTH_URL="https://identity.tyo1.conoha.io/v2.0"
$ export OS_TENANT_NAME="[テナント名]"
$ export OS_USERNAME="[APIユーザ名]"
$ export OS_PASSWORD="[APIユーザPW]"
$ swift post "[作成するコンテナ名]"
$ swift list

こんなかんじで、作成したコンテナ名が表示されればOKです。

ownCloudの初期設定を終えると、config/config.phpが作成されるハズなので、このファイルに設定を追記します。

$CONFIG = array (
  ...

  'objectstore' =>
  array (
    'class' => 'OC\\Files\\ObjectStore\\Swift',
    'arguments' =>
    array (
      'serviceName' => 'Object Storage Service',
      'url' => 'https://identity.tyo1.conoha.io/v2.0',
      'region' => 'tyo1',
      'tenantName' => '[テナント名]',
      'username' => '[APIユーザ名]',
      'password' => '[APIユーザPW]',
      'container' => '[作成したコンテナ名]',
    ),
  ),

  ...
);

これでOK。
見た目はなんにも変わってないので設定できてるのか不安になりますが、
適当なファイルをアップロードしてみてから、

$ swift list [作成したコンテナ名]

とやってurn:oid:***みたいなファイルが作成されていればOKです。

これで、ownCloud上の全てのファイルがオブジェクトストレージに置かれるようになります。
この設定をすると、今までローカルに保存していたファイルは参照できなくなってしまう(開こうとするとエラーになる)ので、
運用中に切り替えるのは避けて、インストールした直後に設定を行うのがベターです。

かくして

格安で大量のファイルを保存できる環境が手に入りました。やった!

ちなみに、CUIからオブジェクトストレージを操作するツールはOpenStack公式のpython-swiftclient以外にも、
ConoHaの †中の人† が作成されているconoha-ojsもあります。