Windows Server Essentialsの機能の1つに”リモートWebアクセス”と呼ばれる、外部のネットワークからローカルストレージ上の共有フォルダーにブラウザ経由でアクセスする機能がありました。我が家のWindows Server Essentialsはまだ現役ですが、Essentialsサーバーの共有フォルダーに外出先からアクセスするにあたり、この機能をRaspberry Pi上にインストールしたOSSのNextCloudで代替しています。
Android/iOSのクライアントアプリもあるNextCloudはとても便利なソリューションですが、うまくチューニングしてあげないと意外にRaspberry Pi 4でも動作が重かったりします。今回は、パフォーマンスチューニングに関していくつか公式ドキュメントを参考に実施したことと、その補足となる情報を記載したいと思います。
HTTP/2のWindowsサイズ、redisのポート番号あたりが意外と触れられている記事は少ないように思っていて、しかもパフォーマンスにかなり重要なポイントかなと思います。
NextCloudのパフォーマンスをチューニングする
HTTP/2を有効にする
HTTP/3も聞こえてきているところではありますが、まだまだApacheやNginxでの実装は枯れていないようなので、まずはHTTP/2から。我が家ではUbuntu server 22.04にApacheを利用しているので、以下のサイトを参考にApacheでHTTP/2を有効にしました。
具体的に実施したことは、以下の4つなります。
- mod_http2を有効化
- mpm_preforkを無効化し、mpm_eventを有効化
- php-fpmを有効化
- Apacheを再起動
HTTP/2のWindowサイズとストリームのメモリーサイズ上限を調整する
/etc/apache2/mod-available/http2.conf を修正し、以下の2行をコメントアウトして有効にします。これを構成しないと、AndroidやiOSのモバイルアプリ、ブラウザーからのファイルアップロードが異常に遅くなるなどうまくいきません。
<IfModule !mpm_prefork>
Protocols h2 h2c http/1.1
- # H2WindowSize 1048576
+ H2WindowSize 1048576
- # H2StreamMaxMemSize 5120000000
+ H2StreamMaxMemSize 5120000000
メモリーキャッシングを構成する
NextCloudの公式ドキュメントを参考に、APCuとRedisを構成します。
Redisはインストールした直後のデフォルトではTCP 6379ポートのリスニングは無効になっています。/etc/redis/redis.confを編集してTCPソケットのリスニングを構成するか、単体のサーバー上でNextCloudもredisも動かす場合は公式ドキュメントの以下の記載を参考に、ローカルのソケットをリッスンするようにNextCloudの構成ファイルに設定します(hostとportだけ設定すれば十分です)。
If you want to connect to Redis configured to listen on an Unix socket (which is recommended if Redis is running on the same system as Nextcloud) use this example
config.phpconfiguration:'memcache.local' => '\OC\Memcache\APCu', 'memcache.distributed' => '\OC\Memcache\Redis', 'redis' => [ 'host' => '/run/redis/redis-server.sock', 'port' => 0, 'dbindex' => 0, #任意 'password' => 'secret', #任意 'timeout' => 1.5, #任意 ],https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/caching_configuration.html
NextCloudで、プライベートでもビジネスでも快適なプライベートクラウド環境を
データの保存はGoogleやApple、Amazonのクラウドストレージに任せちゃえという意見もそれはそれでありだと思いますが、実際には突然のポリシー変更であったりタリフ変更であったり、見直しを迫られる揺り戻しがこれまでも起こってきましたし、これからも円安などを背景に続くと思われます。
データは自分の手元で保存しながら、必要に応じてシェアも自由自在、そんなプライベートクラウドを作るには、今一番の選択肢がNextCloudかなと思います。この設定情報が多少なりとも参考になれば幸いです。