Ubuntu 24.04でNextcloud Redisキャッシングを設定する

Nextcloud 34.0.2 では、Redis 互換のバックエンドがバンドルされているKeyValueCacheため、現在の Nextcloud では PHP の Redis 拡張機能をインストールすることなく Redis を使用できます。単一の Ubuntu 24.04 サーバーでは、高速なローカル キャッシュには APCu を、分散キャッシュとトランザクション ファイル ロックには Unix ソケット経由で接続された Redis を使用します。これにより、Redis をネットワークから切り離し、Nextcloud に PHP リクエスト間で機能する共有キャッシュを提供できます。

まず適切なRedisバックエンドを選択してください。

現在の Nextcloud 35 管理マニュアルには、2 つの Redis パスが記載されています。Nextcloud 34.0.2 以降では、KeyValueCacheNextcloud にバンドルされている Predis を使用することをお勧めします。Redis サーバーをインストールして を設定しますmemcache.kvstoreが、 は必要ありませんphp-redis。古い Nextcloud リリースでは、PhpRedis 拡張機能と別のconfig.phpブロックを使用します。 でバージョンを確認しsudo -u www-data php /var/www/nextcloud/occ status、インストール先が別の場所にある場合はパスを置き換えてください。

このガイドでは、Nextcloud と Redis が同じ Ubuntu ホスト上で実行され、Web サーバーが として実行されwww-data、PHP と Redis を直接管理することを前提としています。Snap、AIO、Docker、またはその他のアプライアンスを使用して Nextcloud をインストールした場合は、ホストレベルのコマンドを盲目的に適用するのではなく、そのパッケージのサービスとファイルシステムの規則に従ってください。APCu は Redis よりもローカル キャッシュが高速ですが、Redis は分散キャッシュとファイル ロックに適しています。Nextcloudのメモリ キャッシュに関するドキュメントを参照してください。

RedisとAPCuをインストールする

Ubuntuのパッケージインデックスを更新し、RedisサーバーとAPCu PHPモジュールをインストールし、起動時にRedisを有効にします。

sudo apt update
sudo apt install redis-server php-apcu
sudo systemctl enable --now redis-server
Ubuntuのターミナルで、apt updateとredis-serverおよびphp-apcuのインストールが表示されている。
設定ファイルを編集する前に、RedisサーバーとAPCuパッケージをインストールしてください。

Ubuntu 24.04 では、デフォルトの PHP ラインは 8.3 で、 はphp-apcuディストリビューションのパッケージ名です。Redis は別のサービスであり、APCu は PHP によってロードされます。APCu をインストールした後、Web に面する PHP プロセスがモジュールをロードするように、PHP ハンドラを再起動してください。PHP-FPM を使用している場合は、通常は ですphp8.3-fpm。Apache が mod_php を使用している場合は、 を再起動してくださいapache2。再起動する前に、アクティブなサービス名を確認してください。

Redisをサーバーにローカルに配置する

このシングルホスト構成では、Unixソケットを使用し、RedisのTCPリスナーを無効にします。編集します/etc/redis/redis.conf。複数の競合するコピーを残すのではなく、既存のアクティブなディレクティブを更新してから、以下を設定します。

port 0
unixsocket /run/redis/redis-server.sock
unixsocketperm 770
Redisの設定エディタで、TCPが無効になっており、モード770のUnixソケットパスが表示されている。
RedisとNextcloudで同じソケットパスを使用し、アクセスをRedisグループに制限してください。

port 0TCPポートを無効にします。Redisは代わりにソケットパスを介してリッスンします。パーミッションモードで770は、Redisの所有者とグループがソケットにアクセスできますが、他のローカルユーザーはアクセスできません。WebサーバーアカウントをRedisグループに追加します。

sudo usermod -aG redis www-data
sudo systemctl restart redis-server

グループメンバーシップを変更した後は、PHP-FPMサービスまたはApacheを再起動してください。実行中のプロセスは古いグループリストを保持するためです。NextcloudのPHPを実際に実行しているサービスを使用してください。Redisのドキュメントでは、信頼できるクライアントへのアクセスを制限することを推奨しています。ローカルソケットを使用すると、インターネットに面したインターフェースでキャッシュポートを公開する必要がなくなります。Redisのセキュリティガイダンスを参照してください。

Nextcloudをソケットに向ける

バックアップを取ってconfig/config.phpから、既存のPHP設定配列内にこれらのエントリを追加してください。ファイルの残りの部分は置き換えないでください。Nextcloudのインストール場所のパスを使用してください。

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\KeyValueCache',
'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
    'server' => [
        'host' => '/run/redis/redis-server.sock',
    ],
],
Nextcloudのconfig.phpエディタで、Redisソケットを使用したAPCuローカルキャッシュとKeyValueCacheのエントリを表示しています。
APCuをローカルに保持し、config.phpでRedisキャッシュバックエンドとソケットホストの両方を設定してください。

ホストパスの先頭のスラッシュは、Nextcloud の KeyValueCache に Unix ソケットを使用するように指示するため、TCP ポートやプロトコルの設定は不要です。Redis はmemcache.distributedと の両方を提供しますmemcache.locking。後者はトランザクション ファイル ロックをデータベースから分離します。memcache.local低遅延のローカル キャッシュ アクセスを実現するには、APCu を有効にしてください。正確なエントリとソケット オプションについては、Nextcloud のKeyValueCache と Unix ソケットの手順、およびトランザクション ファイル ロック ガイドを参照してください。

接続を確認し、権限のトラブルシューティングを行う

まず、Redisサービスがアクティブであり、ソケットが応答することを確認してください。

sudo systemctl status redis-server
redis-cli -s /run/redis/redis-server.sock ping
UbuntuターミナルでNextcloud Redisソケットに対してredis-cliを実行し、PONGを表示しています。
PONG応答は、Redisが設定されたソケットを介したローカル接続を受け入れたことを示します。

2 番目のコマンドに対する期待される応答は ですPONG。次に、Nextcloud にサインインして、管理設定の概要を開きます。ローカル キャッシュの警告が消えていることを確認し、Redis またはキャッシュの警告が残っている場合は Nextcloud のログを確認します。sudo -u www-data php /var/www/nextcloud/occ statusインスタンスがまだロードされていることを確認するには、 を実行することもできます。このコマンドは、キャッシュ自体ではなく、Nextcloud の可用性を確認します。

Redis が「Permission denied」と報告したり、Nextcloud が接続できない場合は、ソケットが存在すること、ソケットがグループwww-dataに属しているredisこと、ソケットのグループとモードでアクセスが許可されていることを確認してください。グループメンバーシップを変更した後は、Redis と PHP ハンドラを再起動してください。Redis がソケットを作成できない場合は、設定パスにタイプミスがないか確認し、ソケットを検査してくださいsudo journalctl -u redis-server -n 50。Redis をパブリックネットワークに公開することでソケットの権限の問題を解決しないでください。

古いNextcloud:代わりにPhpRedisを使用してください

Nextcloud のバージョンが 34.0.2 より古い場合は、Nextcloud で使用されている PHP バージョンに一致する PHP Redis 拡張機能をインストールしてください。標準の Ubuntu 24.04 PHP 8.3 環境では、パッケージは ですphp-redis。Ubuntu では、PHP 8.3 Redis 拡張機能としてリストされています。インストール後、アクティブな PHP ハンドラを再起動してください。 ではconfig.php、上記の KeyValueCache エントリの代わりに、従来の Redis クラスと接続ブロックを使用してください。

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '/run/redis/redis-server.sock',
    'port' => 0,
],

UbuntuのNobleパッケージリストでphp-redisパッケージのマッピングを確認してください。両方のバックエンドを同時に設定しないでください。一致する設定を保存したら、ソケットpingとNextcloud管理画面の概要チェックを再度実行してください。

コメントを残す

NextcloudのパブリックURLを設定して、Nextcloud自身がアクセスできるようにする

Nextcloudの送信アドレスが見つからないという警告を修正するには、正規URLを設定し、サーバー自体からDNS、HTTPS、およびリバースプロキシルーティングを確認してください。

Ubuntu 24.04でNextcloud Redisキャッシングを設定する

Ubuntu 24.04でNextcloud Redisキャッシングを設定する

Nextcloudのキャッシュとファイルロックのために、ローカルのUnixソケットを介してAPCuとRedisを設定する手順を、最新版および旧版のNextcloudリリースごとに説明します。

Systemdタイマーを使用してNextcloudのCronを自動的に実行させる

Nextcloudのcronモードを確認し、systemdサービスとタイマーを修復し、起動後および5分ごとにバックグラウンドジョブが実行されていることを確認してください。

Redisを使用してNextcloudのファイルロック警告を解消する

信頼性の高いNextcloudファイルロックを有効にし、適切なRedisまたはValkeyバックエンドを選択し、同時ファイル変更のリスクを冒すことなく警告が解消されることを確認してください。

Nextcloudのセキュリティ評価でA+を獲得するために必要なこと

Nextcloudのセキュリティ評価でA+を獲得するために必要なこと

最新のアップデート、HTTPSおよびHSTS、正確なリバースプロキシの信頼設定、およびパブリックサーバーに対するチェックによって、Nextcloudのスキャンでよく見られる問題を修正します。

影響度を測定しながらNextcloudのサーバーサイド暗号化を有効にする

必要なストレージに対してNextcloud SSEを設定し、暗号化キーを保護し、既存ファイルを暗号化する前に転送量とCPUへの影響を測定します。

NextcloudにElasticsearchの全文検索機能を追加する

Nextcloudのファイル検索機能をElasticsearchに接続し、ドキュメントの内容をインデックス化し、サーバーとセキュリティのニーズに合った設定を選択してください。

Nextcloudで削除されたファイルの信頼性の高い有効期限ポリシーを設定する

Nextcloudで削除されたファイルの信頼性の高い有効期限ポリシーを設定する

Nextcloudを設定して、削除されたファイルを一定期間後に削除するようにし、バックグラウンドジョブを確実にスケジュールし、すべてのユーザーのゴミ箱を空にするコマンドを回避するようにします。

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

Nextcloudのデータベースインデックスが見つからないという警告をクリアする

NextcloudのOCC修復を安全に実行し、データベースの変更をプレビューして、警告が残る理由を確認してください。

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

Nextcloudのウェブアップロード制限を2GB以上に引き上げる

PHP、Nginx、Apache、一時ストレージ、タイムアウトの設定を調整することで、Nextcloudブラウザからのより大きなファイルアップロードを可能にし、どの制限がファイルのアップロードを妨げているかを確認してください。