Nextcloudをエックスサーバーにインストールして自分専用のクラウドストレージを構築する
DropboxやGoogleドライブと同じような機能を持つ自分専用のクラウドストレージをエックスサーバー上に構築します。使用するソフトウェアはフリーでオープンソースのNextcloudです。
クラウドストレージ(オンラインストレージ)の構築と聞くと難しく思えますが、WordPressをサーバーにインストールするのと難易度は変わりません。NextcloudもWordPressと同じく、PHP・JavaScript・MySQL(SQLite)で動作しています。
また、Nextcloudにも様々なプラグイン(アプリ)が用意されており、多様な機能を追加することができます。今回はセキュリティアプリを利用して二段階認証を追加します。
加えて、Nextcloudには、Windows、Mac、iOS、Androidなど、複数のプラットフォームでクライアントアプリが用意されており、異なるOS間でもWebブラウザを介さずに、OSのエクスプローラーでデータを共有することができます。
準備
まず、インストール場所とデーターベースの用意をします。
インストールする場所を決める
今回は、Nextcloud本体をhome/server_id/example.com/public_html/nextcloudへ。
データー保存は非公開ディレクトリにhome/server_id/data/nextcloudを用意しました。
home/server_id/
|-- example.com/
| |-- .../
| `-- public_html/
| `-- nextcloud/
`-- data/
`-- nextcloud/
データベースの準備
エックスサーバーのサーバーパネル(MySQL設定)にて
- 新規データベースの作成
- 必要があれば新規ユーザー作成
- アクセス権所有の設定
インストーラーのダウンロード
Nextcloud Installへアクセス、
DOWNLOAD Server > Community projects > Web installer をクリック、
setup-nextcloud.phpをダウンロードします。今回はサーバーへの転送を省くために直接サーバーにダウンロードします。
エックスサーバーにSSH接続して以下のコマンドを実行します
$ cd ~/example.com/public_html/nextcloud
$ wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
......
...... `setup-nextcloud.php' へ保存完了
インストール
example.com/nextcloud/setup-nextcloud.phpへアクセスしてインストールします。
インストールディレクトリの指定に「.」を入力してカレントディレクトリに展開します。以上でインストールが完了してセットアップに移るのですが、エックスサーバーではこの記事公開時点で500 Internal Server Errorが出ます。
エラーログを確認すると「Invalid command 'ModPagespeed', perhaps misspelled or defined by a module not included in the server configuration」とあったので、example.com/nextcloud/.htaccessの該当箇所を修正します。
<IfModule pagespeed_module>
# ModPagespeed Off コメントアウト
</IfModule>
セットアップ
example.com/nextcloudへアクセスしてセットアップをします。
ユーザー名
ユーザー名兼ユーザーIDになります。ここで入力した文字列(ユーザーID。最大64文字)がWebDAVアクセスへのURLとして使用されます。ユーザー名の変更は後からも可能ですが、IDは変更できません。
データフォルダー
準備で作成したディレクトリパスを入力します。
ユーザー作成(インストール)
その他の入力も済まし、インストールをクリックします。次ページの推薦アプリはキャンセルをクリックします。
設定
概要
ログイン後の画面右上のユーザーアイコンをクリックしてメニューから「設定」を選択します。
次に左サイドバーの、管理の下の「概要」を選択します。
エラー
エラーがいくつか出ているので、
を参考に解決します。全て解決することはできませんでしたが、現時点では動作に支障はないので問題が出たときに対処します。
メモリーキャッシュが構成されていません。パフォーマンスを向上させるために、可能な場合はmemcacheを構成してください。詳細については、ドキュメント↗をご覧ください。
というエラーは、config.phpに'memcache.local' => '\OC\Memcache\APCu'
を書くことで解消されますが、SSH接続でoccを利用する際に
An unhandled exception has been thrown:
OCP\HintException: [0]: Memcache \OC\Memcache\APCu not available for local cache (Is the matching PHP module installed and enabled?)
とのエラーを起こしてしまいます。php.iniにapc.enable_cli=1を設定すれば解消するようですが、サーバーの再起動をできないこと、また、動作に問題は無いのでこのエラーは放置します。
共有
今回は共有関連は使用しないので全てのチェックを外しました。
二段階認証の設定
アプリのインストール
画面右上のユーザーアイコンをクリックしてメニューから「アプリ」を選択します。
次に左サイドバーの「セキュリティ」を選択します。
画面右に表示されたアプリの中から「Two-Factor TOTP Provider」を選択し、「ダウンロードして有効化する」をクリックします。
有効化
画面右上のユーザーアイコンをクリックしてメニューから「設定」を選択します。
次に左サイドバーの、個人の下の「セキュリティ」を選択します。
二段階認証の設定項目が表示されているの設定、有効化します。
データの暗号化
各ファイルの中身は暗号化されますが、暗号化と復元化のための秘密鍵と公開鍵はサーバー上に在り、ディレクトリ構造やファイル名はそのままです。
アプリの有効化
画面右上のユーザーアイコンをクリックしてメニューから「アプリ」を選択します。
次に左サイドバーの「無効なアプリ」を選択します。
画面右に表示されたアプリの中から「Default encryption module」の「有効にする」をクリックします。
有効化
画面右上のユーザーアイコンをクリックしてメニューから「設定」を選択します。
次に左サイドバーの、管理の下の「セキュリティ」を選択します。
サーバーサイド暗号化の設定項目にチェックを入れ、有効化します。
ファイルの暗号化はこの機能を有効化した後にアップロードしたファイルに対して行われ、既存ファイルは暗号化されません。既存ファイルを暗号化する場合は、SSH接続し以下のコマンドを実行します。
$ pwd
/path/to/nextcloud_dir
$ ./occ encryption:encrypt-all
以上で最低限の設定は終了です。その他の項目は使用法に合わせて設定してください。
更新
ログイン後の画面右上のユーザーアイコンをクリックしてメニューから「設定」を選択します。
次に左サイドバーの、管理の下の「概要」を選択します。
新しいバージョンが利用可能な場合は通知が表示されるので、アップデーターを開くをクリックします。
エラーが起こるので、ページをそのままにし、インストール時と同じく.htaccessを修正します。
また、メンテナンスモードになっているのでconfig.phpの'maintenance' => false
と修正します。
修正後、画面に表示されたボタンをクリックで更新作業が進行します。
おわりに
これで自分専用のオンラインストレージを構築することができました。
あとは、Nextcloud Installから、クライアントアプリ(Download for desktopから)をダウンロードし設定すれば、ローカルディレクトリを扱うようにエックスサーバー上のファイルを扱えます。
既存のクラウドストレージの容量不足や同時接続数に悩まされているなら、Nextcloudの導入はお勧めです。