広告

Nextcloudのインストール

2020年2月1日Nextcloud

久しぶりの書き込みですが、またまた Ubuntu とはほとんど無関係の話題です。

このサイトは XSERVER X10プランで運用していますが、200Gを使い切ることは考えられません。
そんなときフリーのクラウドサーバー “Nextcloud" をインストールできるという記事を見かけたので試してみました。
最初は試験的にサブドメインにインストールしましたが、特に問題なくインストールできたので改めて専用のドメインを取得して、自分専用の Cloud サービスとして運用します。
いろいろ制限のある Google Drive も Dropbox も不要かな?

準備

インストーラー setup-nextcloud.php

次の公式サイトから Web installer “setup-nextcloud.php" をダウンロードします。アーカイブファイルだと最新の stable version: 18.0.0 を入手できますが、安定かつお手軽そうだったのでこちらにしました。
ちなみに Web installer でインストールされるのは16.0.3(2020.1.18現在)ですが、すぐに17.0.2にアップデートします。

SSLの有効化

既に SSL 化されているドメインのサブドメインにインストールする場合は不要ですが、今回のように新規ドメインを取得したときは XSERVER のサーバーパネルから SSL を有効化します。

データベースの準備

Nextcloud 専用のデータベースを用意します。こちらも XSERVER のサーバーパネルから実行可能です。

インストール

ダウンロードしたファイル"setup-nextcloud.php" を ftp でサーバーにアップロードします。今回は専用ドメインなのでドキュメントルートにアップロードしました。

続いてブラウザで https://hogehoge.jp/setup-nextcloud.php にアクセスすると、次の画面が表示されるので、"."を入力します。サブディレクトリにインストールしたい場合は “nextcloud"など “/" 無しで入力します。

次へ。

管理者用アカウントを作成します。
続いてその下の「ストレージとデータベース」をクリックします。
まだ「セットアップを完了します」は押さないでくださいね。

XSERVERのサーバーパネルで空のデータベースを作成したときの、データベース情報を入力します。"local host"も適宜、mysqlサーバーのドメインに変更してください。

暫くすると案内画面が表示されます。

案内画面を閉じると下の初期画面が表示されます。

初期設定

右上の歯車ボタンをクリックしてメニュー「設定」をクリック、設定画面に入ります。
画面左側の「概要」をクリックすると、「セキュリティ&セットアップ警告」が表示されるので対応します。

メモリー上限の変更

初期設定は256MBになっていると思います。これを512MB以上にするため、XSERVER の管理画面から php.ini を編集します。

SSL リダイレクトの設定

こちらも XSERVER の管理画面から編集します。 Nextcloud のインストール時に .htaccessファイルが作成されるので、mod_rewrieのところに次の2行を追加します。

<IfModule mod_rewrite.c>
~
~
~
RewriteCond %{HTTPS} !on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

アップデート通知

暫くすると、17.0.2へのアップデートを促す通知が表示されるので対応します。

「アップデーターを開く」をクリックして次の画面に進みます。「今すぐダウンロード」の場合は・・・実行していません。

「Start update」をクリックして暫く放置すると、次の画面になります。

「メンテナンスモードを維持しますか?」という質問でとまります。
ここでは web based updater を使用するので「 NO 」をクリックして次の画面に進みます。今回はメジャーバージョンアップなので更新ファイルが多いみたいですね。

「アップデートを開始」をクリックします。

アップデートが完了しました。

再び「設定」の「概要」を見てみます。

アップデート後の設定

無視できるコメントもありますが、対応できるものには対応したいと思います。

bigintへの変換

ssh でログインしてコマンドラインから

$ sudo -u nginx php /home/xxx(id)xxx/example.jp/public_html/occ db:convert-filecache-bigint 

を実行しようとすると XSERVER に叱られます。しかも、その行為が記録されるみたいです。普通のレンタルサーバーのアカウントが sudo できる訳ないですよね。

なので phpMyAdmin からデータベース構造を変更します。やり方は簡単ですが、対象を間違えないようにご注意下さい。

今回は mounts.storage_id , mounts.toot_id , mounts_mount_id の3つです。

メンテナンスモードへの移行

occ が使えないので無理やり手動で移行します。

インストール先のディレクトリの ./config/config.php を次のとおり書き換えます。ftp でダウンロード、ローカルで書き換え、アップロードでも良いですし、ssh でログインして直接書き換えても良いです。false にすれば解除(通常モード)です。
正しく遷移すれば画面にメンテナンスモードのメッセージが表示されます。

<?php
$CONFIG = array (
 ~~~
  'maintenance' => true,
 ~~~
);

続いて phpMyAdmin でデータベースの構造を書き換えます。
型変換なので難しくはありません。
対象となるデータベースのテーブルを探します。おそらく oc_mount で変わりないと思います。
このテーブルの「構造」をクリックします。

順番に変更します。まずは storage_id のデータ型を変更します。
下の画面は変更後なのですでにbigint(20)になっています。

データ型、長さを変更して「保存」します。

ログアウトして、最後にメンテナンスモードから通常モードに切り替えます。

<?php
$CONFIG = array (
 ~~~
  'maintenance' => false,
 ~~~
);

忘れていたバックアップ用 cron の有効化

XSERVERのサーバーパネルから設定します。
コマンドは

/usr/bin/php7.3 -f /home/xxx(id)xxxx/example.jp/public_html/cron.php

普段運用している php のバージョンに合わせればいいでしょう。
実行のタイミングは次のとおりです。

分      */15
時間    *
日      *
月      *
曜日    *
コマンド    /usr/bin/php7.3 -f /home/xxx(id)xxx/example.jp/public_html/cron.php
コメント    Nextcloud ←適宜 

HSTS対応

こちらも XSERVER の管理画面から .htaccess を書き換えます。

<IfModule mod_headers.c>

#下の1行を追加
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"

  <IfModule mod_setenvif.c>
    <IfModule mod_fcgid.c>
       SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
       RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
~
~
~

詳細はドキュメントサイトでご確認下さい。

これでほぼ、初期設定は終了です。あとは好みのアプリを追加すれば Cloud Server の完成です。
慌てて残したメモなので間違い等あるかもしれませんがご容赦下さい。

ログファイルの肥大化

最初のインストール直後は膨大なログが吐き出されています。インストールが終わって設定が一段落したら、空っぽのログファイルを ftp で上書きアップロードしたほうが良いかもしれません。

・・・まだ2項目ほどセキュリティ&セットアップ警告が残っていますが、リバースプロキシは無視していいですし、メモリーキャッシュの設定は XSERVER の Xアクセラレータが適用されているから無くても良さそう???

セキュリティ&セットアップ警告のうち、メモリーキャッシュの対応はこちら。

リバースプロキシの対応はこちら。

クライアント側は、ubuntu の場合は apt でインストール可能なので何も苦労することは無いと思います。
Windows やスマホの場合はクライアントアプリをインストールしてアカウントの設定となります。

Posted by @think