概要
Nextcloudとは
Office 365が提供しているような、ファイル共有やメール、チャット、ビデオ通話、スケジュール管理等の機能を、オープンソースで実現してしまったアプリケーションがある。それが、Nextcloudだ。
誰もが自身のサーバにインストールして、無料で使うことが可能である。
こうしたプラットフォームはユーザ数に応じた課金が主流だが、Nextcloudを自前でホストすれば、ユーザ数を問わず定額のインフラ費用のみに抑えることが可能である。
もちろん、個人で利用することも可能だ。
さくらのレンタルサーバ
さくらのレンタルサーバは、共有サーバを間借りしてWebページをホスティングできるサービスである。管理者権限がないため、さくらのVPSやさくらのクラウドに比べて機能は制限されるものの、単なるWebサーバ機能だけでなく、PHPやデータベースを利用可能である。Wordpressが動かせるのはそのためだ。
そして、Nextcloudはなんと、PHPとデータベースがあれば動かすことができる。
もちろんOSや計算能力の制約上、ファイル同時編集やビデオ通話は利用できない。しかしそれを踏まえても、中小規模の組織や個人向けとしては申し分ない多機能ぶりである(「余談」項で言及している通り、さくらのVPSやさくらのクラウドで別サーバを立てれば、これらにも対応は可能)。
そこで今回は、さくらのレンタルサーバにNextcloudを構築していく。
構築
ドメインの作成
まず、Nextcloudをホストするドメインを追加する。私の場合は取得済みのドメインのサブドメインを発行した。

www配下にNextcloud用のフォルダも作成する。さくらのレンタルサーバにSSHログインし、以下のコマンドを叩いた。GUIがよければ、ファイルマネージャでやっても問題ない。
mkdir ./www/nextcloud
ドメイン設定で、Nextcloud用のドメインが作成したフォルダに向くように設定する。

Ipv6は任意だが、このタイミングで最低限WAFは有効にしておこう。

TLSを有効化したいところだが、ドメインがネームサーバに認識されるまで1時間弱かかるので、先に他の作業を勧めていく。
php.ini設定
「スクリプト設定」タブからphp.ini設定に遷移し、php.iniの設定を行う。さくらのレンタルサーバは共用サーバであるため、既定ではPHPの動作に強い制約がかかっている。
Nextcloudの最低要件・推奨値とさくらのレンタルサーバ側の制約に鑑みると、最低限以下を設定しておくのがよい。
memory_limit = 512M
upload_max_filesize = 512M
post_max_size = 512M
opcache.interned_strings_buffer = 64
なお、PHPは最新バージョンかつモジュールモードで動作する必要がある。未設定の場合は言語のバージョン設定から設定しておく。筆者は2018年からの利用者なので自身で設定したが、ここ数年の間に契約開始している場合は既にそのように設定されているのではないかと推察する。
Cron設定
Nextcloudは、バッググラウンドの定期処理をCronで実行することを推奨している。せっかく管理画面に入っているので、インストール前だがその設定もしておく。
同じく「スクリプト設定」のCRON設定を開き、Nextcloudの推奨する5分毎の頻度で、実行設定を登録する。
cd /home/[初期ドメイン]/www/[作成したディレクトリ] && php -f cron.php > /dev/null 2>&1
セットアップ用のPHPファイルの配置
Nextcloudが提供するセットアップ用のPHPファイルを、ドメイン用のフォルダ内で取得する。私はwgetでURLを叩いたが、このページから取得し、ファイルマネージャで配置する形でも問題ない。
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php
ここまできたら、まずドメインのSSL/TLS設定を有効化する。Let's Encryptで十分だ。手順はこちらのページにある。
管理画面でまだドメインが読み込めない場合は、30分ほど時間を置いて再試行するとよい。証明書の発行にも数十分かかるので、一度インターバルを挟むことになる。
筆者はせっかちなのでhttpで強行した(読者のみなさんは真似しないように)。
セットアップの実行
ブラウザでドメイン/setup-nextcloud.phpを叩くと、Setup Wizardが表示される。基本的には案内に従って設定していくことになる。「Next」を押下する。

次にインストールするディレクトリを聞かれる。この記事ではすでにNextcloud用のフォルダ内にセットアップスクリプトを置いているので、「.」とだけ入力して「Next」を押下する。

次は管理者アカウントの設定とデータベース設定を行う。
管理者アカウントは任意の値で設定すれば良い。
データベースについては、さくらのレンタルサーバ管理画面の「Webサイト/データ」からデータベースに遷移し、その値を参考に入れていく。データベース名称とデータベースユーザは同一名であることに留意する。

次に、推奨アプリをインストールするかどうかを尋ねられる。お好み次第なので、詳細は割愛する。

これが完了すると、無事ダッシュボードが表示されるはずだ。レンタルサーバで動かしているため、初回アクセスは重い。少し時間が経ってからアクセスするのもよいだろう。

ここまできたら構築完了だ。二段階認証の設定やconfの細かい修正は最初にしておくとよいだろう。ここは利用者によって要件が変わるうえに、すべて画面上でガイドが出るため、詳細は割愛する。
外観やロゴは自由にカスタマイズできる。

まとめ
今回はさくらのレンタルサーバでNextcloudを構築してきた。
PCやスマホ用のアプリも提供されているので、あわせて活用すればほんとうにOffice 365やGoogleドライブと同じ感覚で使うことが可能だ。
500円〜3850円/月で、グループウェアが使える時代、素晴らしい。
さくナレで予告されているAppRun専有型のボリュームマウント機能がリリースされたら、さくらのクラウドでの大規模向け構築記事も執筆するつもりである。お楽しみに。
余談
WordやExcel互換ファイルの編集(複数ユーザ同時編集含む)には、Collaboraというアプリケーションが必要になる。これはFreeBSDでは動作しない。
しかし、CollaboraサーバをLinuxで動かして、そのサーバリンクをNextcloud管理画面に登録することで、レンタルサーバ上のNextcloudでもこの編集機能を提供することは可能である。
実際に、さくらのVPSでCollaboraのDockerコンテナを立ち上げ、ホストしたドメインをNextcloudに登録、wordファイルを開いてみると……

問題なく同時編集ができた。
同様に、複数人でのビデオ通話に必要なシグナリングサーバも、別途構築して管理画面で登録すれば、対応することができる。
せっかくさくらのVPSを動かすのであればさくらのVPS上でNextcloudもホストしてしまえばよい、と言えばそれまでだが、Nextcloud本体の処理はさくらのレンタルサーバに寄せ、負荷分散を図りたい場合は有効な選択肢だ。
「取り急ぎレンタルサーバで作ってみて、機能が必要になったらその処理サーバを別サーバで構築して追加する」という運用にしてみてもいいだろう。


