Nextcloudは高機能なオンラインストレージであり、webブラウザのみでの利用もちろん、マルチOS対応のクライアントアプリも用意されているなど使い勝手が良いため、これまで提供してきたFTPサーバの代替として導入する事にしました。

インストールと初期設定

コマンド一発で導入できる「snap版」を採用する。

$ sudo snap install nextcloud

これだけで、必要なパッケージ(HTTPサーバ/DBサーバ/PHP/管理ツール群)が導入される。

デフォルトではlocalhostからの接続しか受け付けないため、サーバPC上で初期設定を行う。

設定ファイル

設定ファイルは、以下のとおり。

設定変更は、管理コマンドが用意されていない場合のみ、直接ファイルを編集してNexcloudを再起動する。

再起動コマンド
$ sudo snap restart nextcloud

起動コマンド
$ sudo snap start nextcloud

停止コマンド
$ sudo snap stop nextcloud

デフォルト値の変更

新規ユーザ追加時に日本語環境がデフォルトとなるよう、設定ファイル末尾の「);」の前へ以下を追記する。

$ sudo nano /var/snap/nextcloud/current/nextcloud/config/config.php
  'default_language' => 'ja',
  'default_locale' => 'ja_JP',
  'default_phone_region' => 'JP',

Nextcloudを再起動する。

信頼されたドメインの追加

サーバPC外からの接続を許可するため「信頼されたドメイン」を追加登録する。ここで登録するドメインとは、サーバPC自体の「ローカルIPアドレス/ローカルホスト名/DDNSホスト名」を指す。分かりやすく言うと「http://★/」でアクセスする場合の「★」部分。

登録されているドメインを表示する
$ sudo nextcloud.occ config:system:get trusted_domains
localhost

新たにドメインを登録する
$ sudo nextcloud.occ config:system:set trusted_domains 1 --value=ローカルIPアドレス
$ sudo nextcloud.occ config:system:set trusted_domains 2 --value=ローカルホスト名
$ sudo nextcloud.occ config:system:set trusted_domains 3 --value=DDNSホスト名

登録確認
$ sudo nextcloud.occ config:system:get trusted_domains
localhost
ローカルIPアドレス
ローカルホスト名
DDNSホスト名

これで、サーバPC外からの接続を受け付けるようになる。

HTTPS通信の有効化

HTTPSでアクセスできるよう「Let's Encrypt」からSSL証明書を取得する。登録時に連絡先メールが必要となるため、外部から配信可能なメールアドレスを用意する。

以下を実行してSSL証明書を取得する。

$ sudo nextcloud.enable-https lets-encrypt
...
Have you met these requirements? (y/n) y
Please enter an email address (for urgent notices or key recovery): 連絡先メールアドレス 
Please enter your domain name(s) (space-separated): DDNSホスト名
Attempting to obtain certificates... done
find: Failed to restore initial working directory: /home/USER1: Permission denied
Restarting apache... done

SSL証明書の導入は完了したようだが、何やらパーミッションエラーが表示されている。試しにrootで実行してみる。

$ sudo su -
# nextcloud.enable-https lets-encrypt
...
Attempting to obtain certificates... done
Restarting apache... done

今度はエラーなく完了した。

簡易的にHTTPS化するには、自己署名証明書を導入する方法もある。

$ sudo nextcloud.enable-https self-signed

自己署名証明書の場合、初回アクセス時に警告が表示されるが、自己責任で許可すれば接続可能だ。

データ保存場所の移動

デフォルトでは「/var/snap/nextcloud/common/nextcloud/data」へユーザデータが保存されるが、本番環境では、システムストレージ容量に余裕がないため、外付けHDDへデータを保存するよう設定を変更する。

別手順を参照して「/mnt/USB_HDD」へ外付けHDDをマウントする。

データ移行先フォルダの作成
$ sudo mkdir -p /mnt/USB_HDD/nextcloud

データコピー
$ sudo cp -a /var/snap/nextcloud/common/nextcloud/data /mnt/USB_HDD/nextcloud

リムーバブルメディアの接続
$ sudo snap connect nextcloud:removable-media

データフォルダ(ディレクトリ)の変更
$ sudo nextcloud.occ config:system:set datadirectory --value=/mnt/USB_HDD/nextcloud/data

元データフォルダを改名しておく
$ sudo mv /var/snap/nextcloud/common/nextcloud/data /var/snap/nextcloud/common/nextcloud/data_org

共有フォルダの公開

共有フォルダのみを外部へ公開するため、以下の手順で設定する。

ユーザの追加

ログイン後、右上の管理者アイコン→「ユーザー」から一般ユーザを作成する。

トラブルシューティング

パスワードを連続して誤入力するなど不正を疑われる操作があった時、特定のホスト(IPアドレス)からの接続にアクセス制限が掛かる場合がある。手動解除方法は以下のとおり。

$ sudo nextcloud.occ security:bruteforce:reset IPアドレス