クラウドサーバー

NextCloudと無料サーバー + AWS S3で、無限に拡張できる専用クラウドストレージを格安で構築する

オープンソースのNextCloudとスターサーバー フリー、AWS S3、Cloudflareで、なるべく0円に近いくらいの格安ではじめられる、無限に拡張できる専用クラウドストレージを構築します。

今回の狙い

NextCloudのセットアップは、GCPの無料プランを使ったり、大容量のレンタルサーバーを使ったり、他にも方法はたくさんありますが、今回は、

  • ストレージ容量にだけコストをかける
  • ストレージは将来的に簡単に拡張できる
  • 最初はほぼ無料でできる

という点を重要視しました。

「料金は多少かかっても良いから簡単にインストールしたい」という方は、ロリポップレンタルサーバーならNextCloudのフォーク元「ownCloud」を簡単インストール出来るので、そちらがオススメです。

NextCloudとは

NextCloud

Dropboxのようなオンラインストレージサイトを自前で構築できるOSSです。PHP + MYSQL or SQLiteがあれば構築できるので、レンタルサーバーなどでも使えるのが大きなメリットです。

NextCloud

Dropboxなどと同様に、Windows、Mac、iOS、Android向けのアプリも用意されていて、複数端末での同期も簡単です。

また、ノートやカレンダーなどのアプリを追加することで、クラウドストレージ以外の機能を追加することもできるため、企業のオンラインツールとしても有用です。

今回使うサービス

スターサーバー フリー PHP+MYSQLプラン

スターサーバー フリー

ネットオウルの展開するスターサーバーのフリープランです。

容量が2GBと低容量ですが、PHP 7系とMYSQLが無料で使えます。無料なので、いくつか制限もあります。

  • スマホ・タブレットからのアクセスで広告が入る
  • 半年ごとに更新ボタンを押さないと契約が切れる
  • 独自ドメインが一個しか登録できない
  • 独自ドメインでSSLが使えない

具体的には、このような制限がありますが、個人や大規模な会社でない限りは問題ないでしょう。

広告については、NextCloudはスマホアプリが用意されているので、モバイル環境ではスマホアプリを使えば広告とは無縁になります。

独自ドメインでSSLが使えない件については、今回はCloudflareのプロキシで対応します。

AWS S3

AWS S3

とはいえ、継続的に使うとなると2GBストレージでは心もとないので、将来的にストレージを拡張することを念頭に、NextCloudで使えるクラウドストレージを利用します。

NextCloudのプライマリーストレージには、Amazon Web Service(AWS)のクラウドストレージサービス・S3が設定できるので、こちらを使います。

Amazon S3

S3は使用した分だけコストが請求される仕組みなので、小さく始めるのに最適です。

今回は、ドキュメント主体で大きなファイルを保存しない予定なので、1GB程度の容量で転送も1GB程度と見積もると、月額0.06ドル(7円くらい)でした。

AWS SIMPLE MONTHLY CALCULATOR

これくらいであれば、将来的に従業員が増えたとしても、一人1GBであればひとりあたり10円未満で運用ができます。

Cloudflare

Cloudflare

上記の通り、スターサーバーのフリープランではSSLが使えないので、SSL化はCDNのCloudflareで行います。

データはCloudflare経由にすることで、Cloudflareの発行したSSLが使えます。

実際に構築する

!! 作業前に !!

  • 独自ドメインでNextCloud使う場合には、予め用意してスターサーバーで使えるように設定しておいてください
  • データベースにMYSQLを使う場合は、予め設定しておいてください
  • DNSにはCloudflareを使うので、登録の上DNSレコードを追加してプロキシ(雲マーク)をオンにしておいてください。

NextCloudのWebインストーラーを入手する

NextCloudにはWeb上でインストール&設定ができるWebインストーラーが用意されているので、そちらを使います。

Get Nextcloud

こちらのページから「Download for server」をクリックして、「Web Installer」タブをクリック、「Right-click here and save the file to your computer」のリンクを右クリックして、リンク先のファイルをローカルに保存します。

setup-nextcloud.phpというファイルが取得できればOKです。

スターサーバー フリーにNextCloudをインストールする

先程の「setup-nextcloud.php」をFTPや管理画面上のWeb FTPからディレクトリルートにアップロードして、「http://ドメイン/setup-nextcloud.php」にアクセスします。

すると、ウィザードが表示されるので、ウィザードを進めてDBの設定やディレクトリ、管理ユーザーの設定などをすればOKです。

スターサーバー フリーのPHP + MYSQLプランでは、MYSQLが使えるので、データーベースはMYSQLにするのがおすすめです。

500エラーが発生したら。。。

インストールが完了すると、いきなり500エラーが発生して焦りますが、.htaccessの設定が問題なので、インストーラーが自動生成した.htaccessを下記のものに変更すればOKです。

RewriteEngine on
RewriteCond %{HTTP_USER_AGENT}  DavClnt
RewriteRule ^$         /remote.php/webdav/          [L,R=302]
RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
RewriteRule ^\.well-known/webfinger /public.php?service=webfinger [QSA,L]
RewriteRule ^\.well-known/carddav /remote.php/dav/ [R=301,L]
RewriteRule ^\.well-known/caldav /remote.php/dav/ [R=301,L]
RewriteRule ^remote/(.*) remote.php [QSA,L]
RewriteRule ^(?:build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
RewriteCond %{REQUEST_URI} !^/\.well-known/(acme-challenge|pki-validation)/.*
RewriteRule ^(?:\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]

ErrorDocument 403 //
ErrorDocument 404 //

プライマリストレージをAWS S3にする

続いて、プライマリストレージをAWS S3にします。

設定方法は下記のページが詳しいので、ここでの詳しい解説は省略します。

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

NextCloud絡みで重要なのは、conifg/config.phpの設定記述です。後述のSSL強制設定も同時に書いてしまいます。

  'installed' => true,
  // ここから
  '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,
        ),
    ),
  ),
  'overwriteprotocol' => 'https',
  // ここまでを追加

なんちゃって常時SSL化

上記の設定ファイルの最後のoverwriteprotocolは、プロキシ環境下でURLをhttpsに統一するための設定です。

今回は、CloudflareのプロキシでSSL化しているので、サイト自体は非SSLサイトで構築されています。なので、たまにNextCloud内を回遊していると非SSLなページに飛んでしまうことがあるので、それを防ぎます。

ちなみに、.htaccessを使ってSSL転送してしまうと、

  • (1)アクセスするとHTTPSページにリダイレクト
  • (2)Cloudflare側でHTTPページを見る
  • (3)HTTPSページにリダイレクト

というリダイレクトループに陥るので利用できません。

実際に使ってみる

無料サーバーでNextCloudを使う準備ができました。

先程のログイン画面からログインをして、ファイルの追加やアプリの登録などをしてみてください。

ファイルの追加・削除ができて、AWS S3にファイルが追加されていればOKです。


無料サーバー・スターサーバー フリーとAWS S3で格安オンラインストレージを構築する方法を見てきました。

スターサーバー フリーだけでは、SSLやストレージ容量に問題がありますが、CloudflareやAWS S3使うことで、クラウドの拡張性を持った、格安でセキュアな専用クラウドストレージを構築することができました。

クラウドストレージとレンタルサーバーを使った自前クラウドストレージの比較については、下記の記事をどうぞ。


価格は記載がある場合を除き、すべて税込みです。

この記事の関連キーワード

クラウドサーバーの記事