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

Nextcloud の現行の管理マニュアルには、Redis キャッシュとトランザクションファイルロックのための PhpRedis 拡張機能が引き続き記載されています。また、Nextcloud 34.0.2 で追加された、拡張機能不要の新しい KeyValueCache バックエンドについても記載されています。このガイドでは、Ubuntu 24.04 に PHP 8.3 Redis 拡張パッケージが搭載されているため、既存の PhpRedis 構成を使用しています。新しいバックエンドは、お使いの Nextcloud リリースがサポートしている場合はオプションとして利用できますが、構成キーが異なるため、両方の例を混同しないでください。

その結果、Nextcloudホストのみが利用できるローカルRedisサービス、Redisを基盤とした分散キャッシュとファイルロック、そして高速なローカルキャッシュを実現するAPCuが利用できるようになります。これは一般的なシングルサーバー構成です。WebサーバーとPHPサーバーが複数のホストに分散している場合は、以下のlocalhost設定の代わりに、適切なネットワーク制御を備えた共有Redisエンドポイントを使用してください。

RedisがNextcloudのインストールで変更する点

RedisはNextcloudに、分散キャッシュエントリとトランザクションファイルロックのためのキーバリューサービスを提供します。これらのロックは、複数のリクエストがファイルを操作する際の競合操作を防ぐのに役立ちます。RedisはNextcloudのデータベース、ファイルストレージ、PHP OPcache、またはバックアッププランを置き換えるものではありません。単一サーバーでは、一般的にAPCuの方がローカルプロセス内キャッシュが高速ですが、Redisは共有キャッシュとロックを処理します。Nextcloudはまた、特に複数のWebサーバーを使用する場合、Redisをローカルキャッシュとして使用することは推奨されないと警告しています。

Nextcloud の最新マニュアルでは、サポートされているバックエンドとして Redis が示されており、拡張機能ベースの方法には PhpRedis 2.2.6 以降が指定されています。Ubuntu 24.04 のパッケージ アーカイブには、php8.3-redisおよびが含まれていますredis-server。Ubuntu がアップデートを公開するとパッケージのリビジョンが変わる可能性があるため、古いガイドからコピーしたバージョンを固定するのではなく、構成済みの Ubuntu リポジトリからインストールしてください。2026 年 10 月 6 日に確認された参照: Nextcloud のメモリ キャッシュに関するドキュメント、Ubuntu 24.04 PhpRedis パッケージ一覧、およびUbuntu 24.04 Redis サーバー パッケージ一覧。

始める前に

  • Nextcloud のインストールディレクトリと Web サイトで使用される PHP ランタイムを確認します。以下のコマンドは、PHP 8.3、Apache または PHP-FPM、および Web サービス アカウントを含む標準的な Ubuntu パッケージのインストールを前提としていますwww-data。
  • バックアップを取りconfig/config.php、復元方法をメモしておきましょう。正確なパスは状況によって異なります。たとえば、パッケージインストールの場合は を使用するかもしれませんが/var/www/nextcloud/config/config.php、手動インストールの場合は別の場所に保存される可能性があります。
  • サーバーがアクティブなファイルアップロードを処理する場合は、メンテナンスウィンドウを使用してください。ApacheまたはPHP-FPMを再起動すると、Webリクエストが一時的に中断されます。

1. Redis、PhpRedis、およびAPCuをインストールします。

パッケージのメタデータを更新し、デーモンとPHP拡張機能をインストールします。

sudo apt update
sudo apt install redis-server php-redis php-apcu

Ubuntuのphp-redisパッケージは、インストールされているPHPバージョンに対応する拡張機能を選択します。複数のPHPバージョンを管理している場合、またはサードパーティのPHPリポジトリを使用している場合は、Nextcloudで使用されているPHPバージョンと完全に一致する拡張機能がインストールされていることを確認してください。コマンドラインPHPランタイム用に有効化されたモジュールだけでは、ApacheやPHP-FPMがそれをロードできるとは限りません。

起動時にRedisを有効にして起動し、その後サービスの状態を確認してください。

sudo systemctl enable --now redis-server
sudo systemctl status redis-server --no-pager
redis-cli ping

最後のコマンドに対するローカル Redis の正常な応答は次のとおりですPONG。サービスが非アクティブの場合は、sudo journalctl -u redis-server -n 50 --no-pagerNextcloud の設定を変更する前に確認してください。

2. Redisリスナーをローカルに保持する

単一ホスト環境の場合、Redisはパブリックインターフェースでリッスンする必要はありません。Ubuntuのパッケージ化された設定は通常、ローカルアクセスと保護モード向けに設計されています。/etc/redis/redis.conf変更する前に必ず確認してください。

sudo grep -E '^(bind|protected-mode|port|unixsocket)' /etc/redis/redis.conf

Redis をループバック (通常は127.0.0.1と) にバインドしたままにして、保護モードを有効にしておきます。このローカル設定では、ポートをインターネットに::1公開したり、 にバインドしたりしないでください。Redis の設定を変更した後は、サービスを再起動して を繰り返してください。63790.0.0.0redis-cli ping

このガイドでは、ソケットのパーミッション変更を最小限に抑えるため、localhost 上で TCP を使用します。Unix ソケットもサポートされているローカルオプションの一つで、接続オーバーヘッドを削減できますが、Redis ソケットのパス、グループ所有権、パーミッション、および Nextcloud の設定がすべて一致している必要があります。意図的にその方法を選択する場合は、Nextcloud マニュアルのソケットの例に従ってください。

3. PHPが両方の拡張機能を読み込めることを確認する

コマンドラインPHPモジュールを確認してください。

php -m | grep -Ei '^(apcu|redis)$'

両方の名前が表示されるはずです。どちらか一方が表示されない場合は、有効になっているモジュール ファイルを確認しphp --ini、PHP のバージョンに合ったパッケージをインストールしてください。Web サイトで使用される PHP ハンドラを再起動して、ワーカーが新しいモジュールをロードするようにします。mod_php を使用する Apache の場合は、 を実行しますsudo systemctl restart apache2。PHP 8.3 を使用する PHP-FPM インストールの場合は、 を実行しますsudo systemctl restart php8.3-fpm。デプロイメントの要件に応じて、Web サーバーを再起動またはリロードしてください。

CLIによるチェックは、ウェブランタイムが正常に動作していることを示す最初の目安としては役立ちますが、完全な証明にはなりません。その後、Nextcloudの管理設定、サーバー情報、またはPHP情報ビューを使用して、ウェブプロセスがキャッシュモジュールを認識していることを確認してください。

4. Nextcloudにキャッシュ設定を追加する

既存のconfig/config.phpファイルをエディタで開きます。まずファイルをバックアップし、既存のPHP配列を閉じる前に、これらのエントリをマージしてください);。ファイル全体を置き換えたり、既に存在するキーのコピーを再度追加したりしないでください。

'memcache.local' => '\OC\Memcache\APCu',
'memcache.distributed' => '\OC\Memcache\Redis',
'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
],

明示的なループバックアドレスは、ローカルのRedisサービスと一致します。代わりにUnixソケットを使用する場合は、ソケットパスをRedisホストとして使用し、デーモンと権限をそれに合わせて設定してください。Redisで認証が必要な場合は、正しいRedis ACLのユーザー名とパスワードをredis配列に追加し、それに応じてRedisを設定してください。共有サンプルや公開サポート投稿に実際のパスワードを貼り付けないでください。

instanceidデータベース認証情報、信頼済みドメイン、データディレクトリなどの既存の設定は変更しないでください。PHP配列の構文は重要です。エントリ間にカンマを入れ、各設定が一度だけ出現するようにしてください。

5. キャッシュとファイルのロックを検証する

インストールディレクトリからWebサービスユーザーとしてNextcloudのコマンドラインステータスチェックを実行してください。インストール場所が異なる場合は、例のパスを置き換えてください。

cd /var/www/nextcloud
sudo -u www-data php occ status

管理設定のWebインターフェースでセットアップ警告を確認し、RedisモジュールとAPCuモジュールがWeb PHPランタイムから認識されていることを確認してください。次に、重要度の低い小さなファイルを使用して、通常のファイル操作(アップロード、名前変更、ダウンロード、削除)をテストします。ローカルキャッシュが正しく構成されていれば、管理ページにメモリキャッシュが見つからないというエラーは表示されなくなります。

成功したPONGとしても、RedisがローカルCLIクライアントに応答していることしか証明できません。Nextcloudの管理者チェックとルーチンファイル操作は、PHP拡張機能、Webサーバーの権限、Redis接続設定、およびアプリケーション構成をまとめて検証するのに役立ちます。1回のテストでページ読み込みが速くなったからといって、パフォーマンスが向上したと断定しないでください。ワークロード、ストレージ、データベース、PHPワーカーの容量など、すべてが応答時間に影響します。

よくある問題のトラブルシューティング

管理ページでは依然としてメモリキャッシュがないと表示されます

重複またはスペルミスのあるキャッシュキーがないか確認し、それがmemcache.localAPCuを指していることを確認した上で、適切なApacheまたはPHP-FPMサービスを再起動してください。CLIのみでインストールされたPHPは、Webサイトで使用されているPHPランタイムとは異なる場合があります。

Redisは実行されていますが、Nextcloudが接続エラーを報告しています

hostとportをconfig.phpのリスナーと比較してください/etc/redis/redis.conf。 でローカルアクセスを確認しredis-cli -h 127.0.0.1 -p 6379 ping、Redis と Web サーバーのログを確認してください。ソケットまたはパスワードを使用している場合は、パスまたは認証情報が両側で一致していることを確認してください。

変更後にファイル操作が失敗する

インスタンスが使用不能になった場合は、バックアップを一時的に復元しconfig.php、PHPとWebサーバーのログを確認してください。配列の句読点を確認し、Redisサービスがアクティブであることを確認し、ファイアウォールやカスタムRedis ACLがWebプロセスをブロックしていないことを確認してください。トラブルシューティングの最初のステップとしてRedisデータをクリアすることは避け、キャッシュやロックエントリを削除する前に、接続と構成を調査してください。

この設定ではカバーできないこと

これはシングルサーバー構成であり、高可用性Redis設計ではありません。Redisレプリケーション、Sentinel、TLS、リモートキャッシュホスト、セッションストレージ、クラスタ化されたNextcloudデプロイメントは構成されません。マルチサーバーのNextcloudノードは、同じ分散キャッシュとロックバックエンドを共有する必要があります。各ノードのlocalhostでは、個別のRedisインスタンスが作成され、この要件を満たせなくなります。リモートまたはクラスタ化されたトポロジの場合は、該当するNextcloud構成セクションに従い、その環境のRedis通信を保護してください。

設定が安定したら、Redisのメモリ使用量とNextcloudの管理画面の概要を監視してください。キャッシュとロックのアクティビティに十分なメモリを割り当て、ロックデータを破棄する可能性のある未検証の削除ポリシーを避け、通常のデータベースとファイルのバックアップを維持してください。Redisのキャッシュはキャッシュとロックのオーバーヘッドを削減できますが、これはNextcloudの健全なインストール環境の一部であり、キャパシティプランニングの代替手段ではありません。

コメントを残す

PythonとSimple-Matrix-Bot-Libを使用してMatrix Botをセットアップする方法

PythonとSimple-Matrix-Bot-Libを使用してMatrix Botをセットアップする方法

PythonとSimple-Matrix-Bot-Libを使用してMatrixボットを構築し、認証とデプロイのオプションを比較し、コマンドをテストし、代わりにmatrix-nioを使用すべき場合を理解します。

Let's Encrypt SSLを使用してUbuntu 24.04にJitsi Meetをインストールする方法

Let's Encrypt SSLを使用してUbuntu 24.04にJitsi Meetをインストールする方法

DNS、ファイアウォールルール、公式リポジトリ、Let's Encrypt SSL、サービスチェック、NATトラブルシューティングを含むJitsi MeetをUbuntu 24.04にインストールします。

ownCloudデスクトップ同期クライアントで「SSL証明書の検証に失敗しました」というエラーを修正する

ownCloudデスクトップ同期クライアントで「SSL証明書の検証に失敗しました」というエラーを修正する

ownCloud Desktopの同期証明書エラーを修正するには、サーバーURL、証明書名と証明書チェーン、システムクロック、クライアントバージョン、および信頼済みCAストアを確認してください。

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

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

PhpRedis、APCu、ループバック専用のRedisサービス、および実践的な検証手順を使用して、Ubuntu 24.04上でNextcloud向けにRedisファイルロックと分散キャッシュを設定します。

Element Webの「イベントの復号化に失敗しました」というE2EEエラーを修正する

Element Webの「イベントの復号化に失敗しました」というE2EEエラーを修正する

デバイス認証、キーのバックアップ、リカバリキー、および紛失したルームキーを確認することで、メッセージ履歴を損なうことなく、Element Webの復号化エラーをトラブルシューティングします。

Nextcloudで二要素認証(2FA)を設定および適用する方法

Nextcloudで二要素認証(2FA)を設定および適用する方法

Nextcloudの2要素認証プロバイダーを有効にする方法、ユーザーまたはグループに対して2要素認証を強制する方法、復旧を準備する方法、ログインとクライアントアプリを検証する方法を学びましょう。

ZimbraでIPアドレスによる送信メールリレーを制限する方法

ZimbraでIPアドレスによる送信メールリレーを制限する方法

zimbraMtaMyNetworks を使用すると、Zimbra で認証されていない送信メールのリレーを信頼できる IP アドレスに制限できます。許可リストを安全に検査、更新、再読み込み、検証する方法を学びましょう。

NextcloudのPHPメモリ制限警告を修正する

NextcloudのPHPメモリ制限警告を修正する

Nextcloud の PHP メモリ制限を少なくとも 512M に設定し、適切な Web PHP 設定を見つけて、Apache または PHP-FPM を再起動し、警告が解消されたことを確認してください。

音声通話およびビデオ通話用のMatrix Coturn TURN/STUNサーバーの設定方法

音声通話およびビデオ通話用のMatrix Coturn TURN/STUNサーバーの設定方法

CoturnをSynapseと連携させて、Matrix WebRTC通話を設定します。共有認証情報、NAT、ファイアウォールポート、TLSオプションを設定し、従来のTURNとMatrixRTCおよびLiveKitを区別します。

NextcloudメールアプリをOAuth2認証で設定する方法

NextcloudメールアプリをOAuth2認証で設定する方法

Nextcloud MailをGmailまたはMicrosoft 365向けにOAuth2で設定し、IMAP/SMTPアクセスを確認し、リダイレクトの問題をトラブルシューティングし、制限事項を把握します。