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

Nextcloudでファイルの内容を検索するには、フルテキスト検索フレームワーク、そのElasticsearchプラットフォームアプリ、およびファイルプロバイダーをインストールします。次に、これらのアプリを互換性のあるElasticsearch 8サーバーに接続し、インデックスを構築します。これにより、検索可能なドキュメントテキストが追加されますが、セキュリティ、監視、およびメンテナンスが必要な別のサービスも追加されます。現在のコネクタのREADMEでは、サポート対象のメジャーバージョンとしてElasticsearch 8が記載されているため、特定のElasticsearchバージョンを選択する前に、インストール済みのアプリリリースとの互換性を確認してください。

サーバーに合った設定を選択してください

Elasticsearchは、ファイル名や基本的なメタデータだけでなく、ドキュメント内の単語も検索できる便利なツールです。ただし、セキュリティとメンテナンスが必要なサービスが増えることに加え、インデックス作成時にメモリ、ディスク、CPUリソースが消費されるというデメリットがあります。小規模なクラウド環境では、こうしたオーバーヘッドに見合うだけのメリットが得られないかもしれませんが、ドキュメントを大量に扱うチームであれば、コンテンツ検索のコストに見合う価値があると判断するでしょう。

統合を構成するアプリは3つです。全文検索はプロバイダーとプラットフォームを連携させ、Elasticsearchはフレームワークをエンジンに接続し、Filesはファイルコンテンツを提供します。プラットフォームアプリは一度に1つしか選択できません。フレームワークのREADMEとFilesプロバイダーのREADMEを参照してください。

これらのLinuxの例では、DebianまたはUbuntuのパスとwww-dataアカウントを使用しています。コンテナや他のディストリビューションを使用する場合は、パスとサービスユーザーを調整してください。

1. 互換性を確認し、Elasticsearchを準備する

Elasticsearchをインストールする前に、Nextcloudとアプリのバージョンを確認してください。コネクタのREADMEには、アプリバージョン26.0.0以降はElasticsearch 8をサポートしていると記載されています。Elasticsearch 9は新しいバージョンだからといって互換性があるとは限りません。ご使用のバージョンに合わせて、コネクタのREADMEとインストールに関するWikiを確認してください。

Elasticsearch は、ご使用のオペレーティングシステムと互換性のあるメジャーバージョンに対応した Elastic の手順に従ってインストールしてください。Elastic の Debian パッケージには OpenJDK がバンドルされているため、通常はこのパッケージ用に別途 Java をインストールする必要はありません。Elasticの Debian パッケージのインストールに関するドキュメントを参照してください。アーキテクチャで別途要件がない限り、Elasticsearch は Nextcloud ホストまたはプライベートアプリケーションネットワークからのみアクセスできるようにしてください。Elasticsearch 8 では、パッケージ設定時にセキュリティ機能が有効になります。ネットワーク展開の場合は認証と TLS を維持し、認証されていない検索エンドポイントをパブリックインターネットに公開しないでください。

サービスが起動したら、インストール時に設定したスキームと認証情報を使用して、ローカルでエンドポイントをテストします。ローカルのセキュアなインスタンスの場合、リクエストは次のようになりますcurl --cacert /path/to/http_ca.crt -u elastic https://localhost:9200。パスワードはシェル履歴に残さず、プロンプトが表示されたら入力してください。プレースホルダーパスではなく、インストール用に生成された CA 証明書を使用してください。正常な応答では、Elasticsearch ノードとバージョンが識別されます。このチェックが失敗した場合は、Nextcloud を設定する前に、サービス、証明書の信頼、または認証情報を修正してください。

2. Nextcloudの検索アプリをインストールする

Nextcloud のアプリページを使用して、全文検索、全文検索 - Elasticsearch プラットフォーム、および全文検索 - ファイルをインストールして有効にします。また、Nextcloud のインストールディレクトリから、Nextcloud のコマンドライン管理ツールを使用することもできますocc。Debian または Ubuntu のインストールでは、パターンは次のとおりです。

cd /var/www/nextcloud
sudo -E -u www-data php occ app:install fulltextsearch
sudo -E -u www-data php occ app:install fulltextsearch_elasticsearch
sudo -E -u www-data php occ app:install files_fulltextsearch

ディストリビューションの HTTP アカウントを使用し、Nextcloud のocc ガイダンスに従ってください。アプリがインストールされているが無効になっている場合は、を使用してくださいocc app:enable APP_ID。3 つのアプリすべてが Nextcloud リリースと互換性があるようにしてください。

3. プラットフォームとファイルプロバイダを設定する

管理者設定を開き、「全文検索」セクションを選択します。検索プラットフォームとしてElasticsearchを選択し、Elasticsearchサーブレットのアドレス、インデックス名、およびインストールされているコネクタリリースで公開されている必要な接続資格情報または証明書設定を入力します。アドレスはNextcloudサーバープロセスからアクセス可能である必要があります。両方のサービスが同じコンテナネットワークで実行されている場合、localhost通常はElasticsearchコンテナではなくNextcloudコンテナ自体を指します。代わりにElasticsearchサービス名または内部ホスト名を使用してください。

インデックス名は小文字を使用してください(例:)nextcloud。サービスを共有するクラウドには、それぞれ別のインデックスを割り当ててください。個別の名前は管理を容易にしますが、アクセス制御に取って代わるものではありません。スクリーンショット、チケット、シェル履歴には認証情報を記載しないでください。

ファイルプロバイダの設定で、ユーザーが必要とするファイルの種類とサイズ範囲のインデックス作成を有効にします。検索可能なコンテンツはプロバイダと抽出サポートに依存します。ファイル名のみをインデックス化しても、PDF 内のテキストは検索できません。Elasticsearch の添付ファイルプロセッサは、PDF や Office ドキュメントなどの一般的なファイル形式からテキストを抽出しますが、抽出制限とサポートされている形式が適用されます。Elasticsearch 8 では、添付ファイルの取り込み機能がディストリビューションに含まれています。Elasticの添付ファイルプロセッサのリファレンスを参照してください。スキャンや画像の場合、通常のドキュメントのテキスト抽出は OCR ではありません。OCR 機能が必要で、その要件を確認した場合にのみ、OCR プロバイダを追加してください。リソースが限られたサーバーでは、ファイルサイズの制限を控えめに設定してください。

4. インデックスを作成し、常に最新の状態に保つ

インデックス作成前にヘルスチェックを実行します。Nextcloudディレクトリから、以下を使用します。

sudo -E -u www-data php occ fulltextsearch:check

まず、報告された接続、プラットフォーム、またはプロバイダのエラーを解決してください。その後、初期インデックスの作成を開始してください。

sudo -E -u www-data php occ fulltextsearch:index

最初の実行では、選択したユーザーのファイルを走査するため、時間がかかる場合があります。SSH セッションを安定させるか、などのターミナルマルチプレクサでコマンドを実行し、tmuxCPU、メモリ、ディスク容量を監視してください。インデックス作成では、抽出されたテキストとファイルメタデータが Elasticsearch にコピーされます。これは Nextcloud のバックアップの代わりにはなりません。検索インデックスとその認証情報を保護する計画を立て、インデックスを削除または再構築すると、再度完全なインデックス作成が必要になる場合があることを覚えておいてください。

継続的なアップデートのためには、Nextcloudのバックグラウンドジョブが確実に実行されるようにしてください。このプロジェクトではfulltextsearch:live、ほぼ即座にインデックスを作成するワーカーについても説明しています。これによりアップデートの遅延を短縮できますが、監視対象のサービスが追加されます。まずはスケジュールされたジョブから始め、遅延が問題となる場合にのみワーカーを追加してください。アップストリームサービスの例を、パス、アカウント、データベースの起動順序に合わせて調整してください。

結果を確認し、トレードオフを選択してください。

インデックス作成が完了したら、小さなテスト文書の中にファイル名には含まれていない特徴的なフレーズを検索します。Nextcloudが、読み取り権限を持つユーザーに対して期待どおりのファイルを返すことを確認します。次に、2つ目のテスト文書をアップロードまたは編集し、設定済みのバックグラウンドジョブまたはライブワーカーを実行させてから、検索を繰り返します。ステータスチェックが成功しただけでは、ファイルの内容がインデックス化されたとは証明されません。

ファイル名のみが表示される場合は、ファイルプロバイダ、ファイルの種類とサイズの設定、抽出サポート、およびインデックスログを確認してください。接続エラーが発生した場合は、Nextcloudネットワークのエンドポイント、TLSの信頼性、および認証情報を確認してください。

コンテンツ検索が、別のステートフルサービスを維持するだけの価値があるほど重要な場合は、Elasticsearchを選択してください。ファイル名検索で十分な場合は、追加のリソースとセキュリティのオーバーヘッドを回避できます。本番環境へのアップグレードを行う前に、Nextcloud、アプリ、Elasticsearchの正確な組み合わせを確認してください。この設定では、すべてのデプロイ方法に対応しているわけではありません。

コメントを残す

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のデータディレクトリを安全に外部ドライブに移動します。