LoginSignup
21

More than 3 years have passed since last update.

posted at

Organization

S3をNextCloudのプライマリストレージ(データディレクトリ)に設定する方法

TL;DR

  • NextCloudのユーザデータを,AWS S3に保存する方法を解説します
    • NextCloudのデータがクラウドストレージに格納されるようになるので(費用が掛かるデメリットを除けば),容量を気にせずに使用することができます
    • (NextCloudの機能通り)ユーザごとに個別のディレクトリが使え,かつ,共有設定もできます

NextCloudがS3を利用する2つの方法

  • NextCloudがS3を利用する方法として,以下の2つの方法があります
    • NextCloudアプリを使用して,ユーザが共有されるディレクトリをS3上に作る方法
    • データディレクトリをS3にまるまる置く方法
  • この記事では,後者の方法を扱います
    • 前者の(アプリを使う)方法は,NextCloudに設定された全ユーザが共有するディレクトリを作る方法で,ユーザごとに振り分けることができないようです(未調査です)
    • 後者の方法は,データディレクトリがS3に置かれるので,ホストのストレージ負荷を軽減できます(その分費用も掛かります)

NextCloudのユーザデータをS3に置く方法

設定

  • 以下の3つの手順で進めます
    • IAMでS3にアクセスできるユーザを作成する
    • S3にNextCloud用のバケットを作成する
    • NextCloudに作成したバケット情報を設定する

IAMでS3アクセスユーザを作成する

aws IAMにアクセスし,ユーザを作成します.

  • メニューから[ユーザ]を選び,[ユーザを追加]をクリックする
  • 適当なユーザ名を入力し[プログラムによるアクセス]にチェックします
  • アクセス許可の設定で[既存のポリシーを直接アタッチ]を選択し,[AmazonS3FullAccess]をチェックする
  • 「成功」と言われたら,[アクセスキーID]および[シークレットアクセスキー]を記録しておく
    • 注意: [表示]リンクをクリックするとシークレットアクセスキーが表示されますが,このときだけしか表示されないので注意してください!紛失したら別のユーザを作る必要があります.
    • 04_keys.jpg

S3のバケットを作成する

aws S3で,前項のユーザでアクセスできるNextCloud用のバケットを作成します.

  • [バケットを作成する]をクリックします
  • 適当なバケット名を入力します
    • (別のユーザも含めて)awsサービス全体一意な名前である必要があります
    • 適当な名前や日付などを入れて一意な名前にしてください
  • アクセス許可などはそのまま(「パブリックアクセスをすべてブロック」)でOKです
  • 「バケットの作成」をクリックし,バケットを作成します
    • 07_access.jpg
  • バケットが作成されました.次節では,このバケットにデータを格納するようにNextCloudの設定を行います

NextCloudの設定

  • NextCloudが稼働しているホストの,config/config.phpのCONFIGアレイの中に,S3の設定を記載します.
    • NextCloudをDockerで稼働させている場合は,コンテナの/var/www/htmlにconfigディレクトリがあります
  • 以下のように,objectstoreキーで,前項までで作ったawsユーザおよびS3の情報を記載します
    • 'bucket' : バケット名
    • 'region' : S3のリージョン('ap-northeast-1'など)
    • 'key' : 20文字の大文字英数字のアクセスキー
    • 'secret' : 40文字の英数字記号のシークレットキー
<?php
// config/config.php
$CONFIG = array (
  //.....<snip>.....
  'objectstore' => array(
        'class' => 'OC\\Files\\ObjectStore\\S3',
        'arguments' => array(
                'bucket' => '<バケット名>',
                'autocreate' => true,
                'region' => '<S3のリージョン>',
                'key'    => '<20文字の大文字英数字のアクセスキー>',
                'secret' => '<40文字の英数字記号のシークレットキー>',
                'use_ssl' => false,
                'use_path_style'=> false,
        ),
    ),
    //.....<snip>.....
);

動作確認

  • ブラウザでNextCloudにアクセス(ログイン)すると,ユーザディレクトリがS3になります
    • もともとデータが(ローカルに)存在していた場合は,設定が上書きされて見えなくなっています
    • 上述のconfig.phpの設定を消すと,元に戻すことができます
  • S3のバケットには,urn:oid:数字のようなファイル名で,データが格納されます

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
21