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でアクセスできるよう「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アドレス