メインコンテンツに移動

先日、Nextcloud20をインストールする記事を書きました。
https://minokamo.tokyo/2021/01/09/3210/
しかし、PHP8はサポート対象外で動作しませんでした。Nextcloud21がリリースされたのでインストールします。公式サイトで対象ファイルのリンクアドレスを取得します。

https://nextcloud.com/

ターミナルでファイルをダウンロードして展開します。nextcloudというフォルダが作成されるのでフォルダごとドキュメントルートに移動します。移動後はそのフォルダの権限を変更します。

wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip
unzip nextcloud-21.0.1.zip
sudo mv nextcloud /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud

それではブラウザでアクセスしてみましょう。
PHP8に対応したせいかうまくいきました。nginxのconfファイルでfastcgiのパスはsockファイルを指定しましたが動作しました。

その後、設定にあるログを見て、フォルダが作成できないというエラーが出ていたら、フォルダとファイルに適切なパーミッションを設定することで解決しました。

OCP\Files\NotPermittedException: Could not create folder

sudo find /var/www/html/nextcloud/ -type f -exec chmod 640 {} \;
sudo find /var/www/html/nextcloud/ -type d -exec chmod 755 {} \;

また、Nextcloudの設定にある概要をクリックすると、「セキュリティ&セットアップ警告」にいくつか問題があったので修正していきます。

・PHPのシステム環境変数が正しく設定されていないようです。getenv("PATH") コマンドでテストして何も値を返さないことを確認してください。 PHP設定の注意事項と php-fpmを利用する場合のサーバー向け設定をインストールドキュメントで確認してください。

ドキュメントの確認のリンクがあるので、これを参考に修正します。
エディタで「clear_env = no」のコメント扱いを解除します。php-fpmを再起動します。

sudo vi /etc/php/8.0/fpm/pool.d/www.conf
sudo systemctl restart php8.0-fpm

・"Strict-Transport-Security" HTTPヘッダが最低でも "15552000" 秒に設定されていません。セキュリティを強化するには、セキュリティTips で解説しているHSTSを有効にすることを推奨します。

サブドメインを含めて設定をする例が下記の記述となります。
confファイルのlisten 443の下に追記しました。その後、nginxを再起動して確認します。


add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

sudo vi /etc/nginx/conf.d/nextcloud.minokamo.tokyo.conf
sudo systemctl restart nginx
curl --head nextcloud.minokamo.tokyo

・Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add "default_phone_region" with the respective ISO 3166-1 code of the region to your config file.

nextcloudのconfig.phpに下記を追記します。

sudo vi /var/www/html/nextcloud.minokamo.tokyo/config/config.php

記述内容
'default_phone_region' => 'JP',

・メモリキャッシュが設定されていません。可能であれば、パフォーマンスを向上するため、memcacheを設定してください。より詳しい情報はドキュメントで参照できます。

sudo apt install memcached
sudo apt install php8.0-memcached
sudo vi /var/www/html/nextcloud.minokamo.tokyo/config/config.php

config.phpに下記を追記。
'memcache.distributed' => '\OC\Memcache\Memcached',
'memcache.local' => '\OC\Memcache\Memcached',

・このインスタンスには推奨されるPHPモジュールがいくつかありません。 パフォーマンスの向上と互換性の向上のために、それらをインストールすることを強くお勧めします。

私の環境ではbcmathとimagickが不足しているとのことです。後者はワードプレスなどでも不足しているとダッシュボードに表示されることがあります。
この問題を解決するためインストールします。

sudo apt install php8.0-bcmath php8.0-imagick
sudo systemctl restart php8.0-fpm

・Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it.

本体をインストールしないとエラーが発生するようです。

sudo apt install imagemagick

WebDAVに関するエラーは導入していないので、またの機会に設定することにします。これはDropBOXなどのオンラインストレージサービスに似ていると言われていて、ファイルの操作が簡単にできるみたいです。他のエラーはNGINXとは関係が無いのでこれで良いと思います。