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

Nextcloud のトランザクション ファイル ロックに関する警告を解消するには、まずロックが有効になっていることを確認し、次に Redis や Valkey などの Redis 互換の永続バックエンドを設定します。小規模なインスタンスでは、Nextcloud はデフォルトでデータベース ロック バックエンドを使用できます。本番サーバーや共有ワークロードでは、データベースへのロック トラフィックを削減できるため、Redis をバックエンドとするロックが一般的に使用されます。Memcached にファイル ロックを割り当てないでください。Nextcloud は、キャッシュされた値が予期せず消える可能性があると警告しています。

サーバーに適したロックバックエンドを選択してください

トランザクションファイルロックは、ファイル操作を競合する書き込みから保護し、アップロードなどのトランザクションが中断された場合にロックを解除できます。共有ファイルや外部ストレージを含む通常の操作中に発生するデータの破損を防ぐのに役立ちます。ただし、2人が同時に同じドキュメントを編集することや、プレゼンスインジケーターを提供するものではありません。同時保存を制御する機能です。詳細は、Nextcloud 35 のトランザクションファイルロックに関するドキュメントを参照してください。

  • データベースバックエンド: Nextcloudはデフォルトでデータベースロックを使用します。これにより、別のサービスを追加する必要がなくなり、小規模な個人用インストールには十分ですが、データベースロックは負荷を増加させます。使用頻度の低いサーバーで警告を解消するだけの場合は、まずロックが明示的に無効になっていないことを確認してください。
  • phpredis を使用した Redis:確立されたシングルサーバー環境およびクラスタ環境に適しています。Redis 互換サーバーと PHP Redis 拡張機能、および Nextcloud での対応する接続​​設定が必要です。
  • RedisまたはValkeyを使用したKeyValueCache: Nextcloud 34.0.2以降で利用可能です。Nextcloudにバンドルされているライブラリを使用するため、PHP Redis拡張機能は不要です。拡張機能が利用できない場合に便利ですが、Nextcloudはリモートのキーバリューサーバーを使用するとネットワークオーバーヘッドが増加する可能性があると指摘しています。
  • Memcached:分散キャッシュには使用できますが、キャッシュ値が削除される可能性があるため、トランザクションファイルロックには適していません。 から除外してくださいmemcache.locking。

小規模なホームサーバーの場合、ロック警告が表示されず、データベースへの負荷も高くなければ、データベースロックだけで十分な場合があります。負荷の高いインスタンス、複数のアプリケーションサーバー、またはファイルロックをデータベース外で処理したい場合は、RedisまたはValkeyを選択してください。Nextcloud 35の現在のメモリキャッシュに関するガイダンスでは、一般的なシングルサーバー構成の場合、ローカルキャッシュにはAPCu、ロックにはRedisを推奨しています。クラスタ化されたWebノードはすべて、同じRedisまたはValkeyエンドポイントまたはクラスタを使用する必要があります。

ロックが無効になっているかどうかを確認してください。

アクティブな Nextcloud 設定ファイルを見つけてください。通常はconfig/config.phpNextcloud のインストールディレクトリにあります。変更する前にバックアップを取ってください。filelocking.enabledとを検索してくださいmemcache.locking。設定リファレンスでは、デフォルトでロックが有効になっています。明示的に false の値が見つかった場合は、それを true に変更するか、その上書きを削除してください。

'filelocking.enabled' => true,

既存のキーのコピーを複数追加しないでください。PHP 設定配列には、各設定に対して有効な値が 1 つだけ含まれている必要があります。コンテナまたはマネージド ホスティング パネルを使用している場合は、アップグレードや再デプロイ後も変更が保持されるように、サポートされている設定メカニズムを使用して変更を行ってください。Nextcloud 35 の管理者警告リファレンスには、ロック警告の説明とバックエンド要件へのリンクが記載されています。

単一サーバー上でRedisのロックを設定する

Debian または Ubuntu では、パッケージ名は一般的に や のようになりますredis-server。php-redisディストリビューションのパッケージを使用し、PHP モジュールを Web サーバーで使用されている PHP バージョンに合わせます。従来の Redis バックエンドを使用する場合は、Redis サービスをインストールして起動し、Web SAPI で PHP Redis 拡張機能が有効になっていることを確認してください。CLI 専用の PHP モジュールは、PHP-FPM または Apache がそれをロードできることを証明するものではありません。

既存の配列にロックバックエンドと接続の詳細を追加しますconfig.php。この例では、Redisが同じマシン上で実行され、localhostのポート6379でリッスンしており、NextcloudのPHPプロセスからアクセス可能であることを前提としています。

'memcache.locking' => '\OC\Memcache\Redis',
'redis' => [
    'host' => 'localhost',
    'port' => 6379,
    'timeout' => 0.0,
],

Redisサーバーで認証が必要な場合は、認証情報を設定してください。Redisをパブリックインターネットに公開することは避け、ホストまたはプライベートネットワークに限定し、認証ルールとファイアウォールルールを設定してください。Unixソケットの場合は、ソケットパスをRedisホストおよびポート0として使用し、Webサーバーユーザーがそのソケットにアクセスできることを確認してください。Redisが真にローカルで一貫して共有されている場合を除き、localhostの設定をマルチサーバー環境にコピーしないでください。すべてのNextcloudアプリケーションノードは同じバックエンドにアクセスする必要があります。

PHP Redis拡張機能が利用できない場合

Nextcloud 34.0.2以降では、KeyValueCacheは別途PHP拡張機能をインストールすることなく、RedisまたはValkeyに接続できます。バックエンドとキーバリューストアを以下のように設定し、ホスト名と認証情報をご使用の環境の値に置き換えてください。

'memcache.locking' => '\OC\Memcache\KeyValueCache',
'memcache.kvstore' => [
    'server' => [
        'host' => 'localhost',
        'port' => 6379,
    ],
],

RedisとKeyValueCacheの両方を競合するロックプロバイダとして設定しないでください。認証情報、TLS、ソケット、Sentinel、クラスタトポロジについては、推測で単一サーバーの例を改変するのではなく、Nextcloudのドキュメントに従ってください。

再起動して修正内容を確認してください。

サービス構成を変更した場合は、Redis互換サービスを再起動し、PHP拡張機能をインストールまたは有効化した場合は、WebサーバーまたはPHP-FPMプロセスを再起動してください。サービスの状態は、ディストリビューションに応じたサービス名(systemctl status redis-server多くのDebianまたはUbuntuシステムでは`redis`)を使用して確認してください。サービスがアクティブであり、PHPプロセスが接続できることを確認してください。コンテナデプロイメントでは、両方のサービスがネットワーク名前空間を共有している場合を除き、コンテナネットワーク上のRedisサービス名を使用し、localhostは使用しないでください。

管理者として Nextcloud にサインインし、管理概要を更新してください。設定済みのバックエンドが利用可能になり、設定が読み込まれると、トランザクション ファイル ロックの警告は消えます。テスト ファイルをアップロード、ダウンロード、同期した後、Redis の接続エラーまたは権限エラーが発生した場合は、Nextcloud と PHP のログを確認してください。警告が残る場合は、通常、タイプミス、設定キーの重複、PHP 拡張機能/SAPI の誤り、ネットワーク接続のブロック、ソケット権限の誤り、またはバックエンドへのアクセス不能などが原因です。ロックを無効にするのではなく、その原因を特定して修正してください。

デプロイメント固有のオプションについては、トポロジを変更する前に、バージョン付きの公式リファレンスを参照してください。トランザクションファイルロック、メモリキャッシュとRedis/Valkey構成、および構成パラメーター。

コメントを残す

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ブラウザからのより大きなファイルアップロードを可能にし、どの制限がファイルのアップロードを妨げているかを確認してください。

WebサーバーでNextcloudのPHPメモリ警告をクリアする

Nextcloudが実際に使用するPHPメモリの制限を設定し、該当するサービスを再起動して、管理画面の概要で512MBの設定を確認してください。

S3互換バケットをNextcloud外部ストレージに接続する

NextcloudのS3バックエンドを使用して、適切なエンドポイント、認証情報、アクセス範囲、および検証手順を設定し、互換性のあるオブジェクトストレージバケットをマウントします。

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

ストレージを壊さずにNextcloudデータを外部ドライブに移動する方法

永続的なUUIDマウント、メンテナンスモード、検証済みコピー、および元のパスのシンボリックリンクを使用して、Linux Nextcloudのデータディレクトリを安全に外部ドライブに移動します。