このページでは、Docker および Docker Compose を使用した Fess のインストール手順を説明します。 Docker を使用することで、簡単かつ迅速に Fess 環境を構築できます。
前提条件
システム要件 に記載されているシステム要件を満たしていること
Docker 20.10 以降がインストールされていること
Docker Compose 2.0 以降がインストールされていること
Docker のインストール確認
以下のコマンドで Docker および Docker Compose のバージョンを確認します。
注釈
古いバージョンの Docker Compose を使用している場合は、docker-compose コマンドを使用します。 本ドキュメントでは、新しい docker compose コマンド形式を使用しています。
Docker イメージについて
Fess を Docker Compose で起動すると、以下の 2 つのコンテナが動作します。
Fess (
fess01): 全文検索システム本体OpenSearch (
search01): 検索エンジン
公式 Docker イメージは GitHub Container Registry で公開されています。 Compose ファイルおよび起動手順は docker-fess リポジトリで管理されています。
ステップ 1: Docker Compose ファイルの取得
Docker Compose を使用した起動には、以下のファイルが必要です。
方法 1: ファイルを個別にダウンロード
以下のファイルをダウンロードします:
方法 2: Git でリポジトリをクローン
Git がインストールされている場合は、リポジトリ全体をクローンすることもできます:
ステップ 2: Docker Compose ファイルの確認
compose.yaml の内容
compose.yaml には、Fess 本体(fess01 サービス)の設定が含まれています。
主な設定項目:
ポート番号: Fess の Web インターフェースのポート(デフォルト: 8080)
環境変数: OpenSearch の接続先 (
SEARCH_ENGINE_HTTP_URL) や辞書ファイルのパス (FESS_DICTIONARY_PATH) など起動順序: OpenSearch (
search01) が正常な状態になってから起動するようdepends_onが設定されています
compose-opensearch3.yaml の内容
compose-opensearch3.yaml には、検索エンジン(search01 サービス、OpenSearch)の設定が含まれています。
主な設定項目:
OpenSearch イメージ: 使用する OpenSearch イメージ(
ghcr.io/codelibs/fess-opensearch)メモリ設定: JVM ヒープサイズ
ボリューム: データ永続化用のボリューム(
search01_data: インデックスデータ、search01_dictionary: 辞書ファイル)
設定のカスタマイズ(オプション)
デフォルトの設定を変更する場合は、compose.yaml を編集します。
例:ポート番号を変更する場合:
例:メモリ設定を変更する場合:
ステップ 3: Docker コンテナの起動
基本的な起動
以下のコマンドで、Fess と OpenSearch を起動します:
注釈
-fオプションで複数の Compose ファイルを指定します-dオプションでバックグラウンドで実行します
起動ログの確認:
Ctrl+C でログ表示を終了できます。
起動の確認
コンテナの状態を確認します:
以下のようなコンテナが起動していることを確認してください:
fess01search01
Tip
起動には数分かかる場合があります。まず OpenSearch (search01) が正常な状態になってから Fess (fess01) が起動します。 docker compose ... ps で各コンテナの状態を確認し、fess01 が起動したらブラウザーで http://localhost:8080/ にアクセスできます。
ステップ 4: ブラウザーでアクセス
起動が完了したら、以下の URL にアクセスします:
検索画面: http://localhost:8080/
デフォルトの管理者アカウント:
ユーザー名:
adminパスワード:
admin
AI検索モード(LLMプラグイン)の有効化
Fess 15.8 から、AI検索モード(RAG Chat)機能は fess-llm-* プラグインとして分離されました。 公式の docker-fess リポジトリには、主要な LLM プロバイダー向けのオーバーレイファイルが同梱されています。
| オーバーレイ | 用途 |
|---|---|
compose-ollama.yaml | Ollama(ローカル LLM、追加の ollama01 サービスを起動) |
compose-gemini.yaml | Google Gemini(クラウド API) |
compose-openai.yaml | OpenAI(クラウド API) |
各オーバーレイは FESS_PLUGINS で対応するプラグインを自動取得し、FESS_JAVA_OPTS に -Dfess.config.rag.chat.enabled=true を設定して RAG Chat を有効化します。 クラウド API を利用する Gemini と OpenAI では、さらに -Dfess.system.rag.llm.name で使用するプロバイダーを指定し、 API キー (rag.llm.<provider>.api.key) とモデル (rag.llm.<provider>.model) を設定します。 Ollama では rag.llm.name の既定値 (ollama) がそのまま使われるため明示的な指定はなく、 接続先 (rag.llm.ollama.api.url) が設定されます。
Gemini を使う例:
OpenAI を使う例:
注釈
使用するモデルは、GEMINI_MODEL および OPENAI_MODEL 環境変数で変更できます (既定値はそれぞれ gemini-2.5-flash と gpt-5-mini です)。
Ollama を使う例:
警告
compose-ollama.yaml の ollama01 サービスは、既定で NVIDIA GPU を使用するように定義されています (NVIDIA Container Toolkit が必要です)。 GPU が搭載されていない環境で実行する場合は、compose-ollama.yaml の deploy: ブロック(reservations 配下の GPU 指定)を削除またはコメントアウトしてください。
Tip
起動後、管理画面「システム > 全般」の設定画面で、使用する LLM プロバイダー (rag.llm.name) や 各プロバイダー固有の設定を変更できます。ただし、これらの変更はコンテナ内の設定ファイルに保存されるため、 コンテナを再作成(docker compose down 後に up)すると失われます。 設定を永続化するには、上記の例のように Compose ファイルの FESS_JAVA_OPTS で指定してください。
データの永続化
Fess のデータ(インデックス、クロールしたドキュメント、ユーザー情報、設定など)は、すべて OpenSearch に保存されます。 これらのデータは OpenSearch のボリュームに永続化されるため、コンテナを削除してもデータは保持されます。 Fess 本体(fess01)のコンテナ自体は状態を持たず、専用のボリュームはありません。
ボリュームの確認:
compose-opensearch3.yaml で定義される主なボリューム:
search01_data: OpenSearch のインデックスデータ(Fess の全データを含む)search01_dictionary: 辞書ファイル
注釈
Docker Compose のボリューム名には、プロジェクト名(既定では Compose ファイルのあるディレクトリ名)が接頭辞として付きます。 たとえば compose ディレクトリで起動した場合、実際のボリューム名は compose_search01_data のようになります。
重要
コンテナを削除してもボリュームは削除されません。 ボリュームを削除するには、明示的に docker volume rm コマンドを実行する必要があります。
Docker コンテナの停止
コンテナを停止する:
コンテナを停止して削除する:
警告
down コマンドはコンテナを削除しますが、ボリュームは削除しません。 ボリューム(search01_data など)も削除する場合は -v オプションを追加します:
注意: このコマンドを実行すると、OpenSearch に保存されたすべてのデータが削除されます。
高度な設定
環境変数のカスタマイズ
compose.yaml で環境変数を追加・変更することで、詳細な設定が可能です。
主な環境変数:
| 環境変数 | 説明 |
|---|---|
FESS_HEAP_SIZE | Fess の JVM ヒープサイズ(Docker イメージの既定値: 512m) |
FESS_JAVA_OPTS | 追加の JVM オプションの指定(-Dfess.config.* による設定の上書きなど) |
FESS_PLUGINS | 起動時に自動インストールするプラグイン(スペース区切りの name:version 形式。例: fess-ds-wikipedia:15.8.0) |
SEARCH_ENGINE_HTTP_URL | OpenSearch の HTTP エンドポイント(compose.yaml の既定値: http://search01:9200) |
SEARCH_ENGINE_USERNAME / SEARCH_ENGINE_PASSWORD | 認証が有効な OpenSearch に接続する際の資格情報 |
FESS_DICTIONARY_PATH | 辞書ファイルのパス(OpenSearch と共有するディレクトリ) |
FESS_PORT | Fess がコンテナ内で待ち受けるポート(既定値: 8080) |
例:
注釈
タイムゾーンを変更する場合は、FESS_JAVA_OPTS に -Duser.timezone=Asia/Tokyo のように指定します。
設定ファイルの反映方法
Fess の詳細な設定は fess_config.properties ファイルに記述します。 Docker イメージでは、fess_config.properties はコンテナ内の /etc/fess に配置されています。 Docker 環境で設定を反映させるには、以下の方法があります。
方法 1: 設定ファイルのマウント
/etc/fess には Fess の動作に必要な他の設定ファイルも含まれるため、このディレクトリをそのままマウントで置き換えると起動に失敗します。 代わりに、クラスパスの先頭に追加されるオーバーライド用ディレクトリ /opt/fess を使用します(初期状態は空です)。
ホスト側に設定ファイルを用意するためのディレクトリを作成:
設定ファイルのテンプレートを取得(初回のみ):
/path/to/fess-config/fess_config.propertiesを編集して必要な設定を記述:compose.yamlのfess01サービスにボリュームマウントを追加:コンテナを起動:
注釈
/opt/fess はクラスパスの先頭に追加されるため、ここに置いた fess_config.properties が イメージ同梱の /etc/fess/fess_config.properties よりも優先されます。 プロパティファイルはファイル単位で読み込まれ、項目ごとにマージされません。 そのため、上書きしたい項目だけでなく すべての設定項目を含む完全なファイル を配置する必要があります。 一部の項目のみを変更したい場合は、次の「方法 2」を利用してください。
方法 2: システムプロパティによる設定
fess_config.properties の設定項目を、環境変数経由でシステムプロパティとして上書きできます。
fess_config.properties に記載される設定項目(例: crawler.document.cache.enabled=false)を、 -Dfess.config.設定項目名=値 の形式で指定します。
compose.yaml の fess01 サービスの環境変数に FESS_JAVA_OPTS を追加:
注釈
-Dfess.config. の後に続く部分が fess_config.properties の設定項目名に対応します。 一部の項目のみを上書きする場合は、こちらの方法が簡単です。
外部の OpenSearch への接続
既存の OpenSearch クラスターを使用する場合は、compose-opensearch3.yaml を使わずに compose.yaml のみで起動し、接続先を変更します。
compose-opensearch3.yamlを指定せずに起動:compose.yamlのfess01サービスで接続先を設定:
注釈
認証が有効な OpenSearch に接続する場合は、SEARCH_ENGINE_USERNAME と SEARCH_ENGINE_PASSWORD も指定します。
その他のオーバーレイと構成
docker-fess リポジトリには、上記以外にも用途別の Compose ファイルやディレクトリが含まれています。
| ファイル / ディレクトリ | 用途 |
|---|---|
compose-dashboards3.yaml | OpenSearch Dashboards を追加(ポート 5601、データ可視化用) |
compose-minio.yaml | MinIO(オブジェクトストレージ)を追加し、Fess のストレージ機能の保存先として利用 |
vanilla/ | Fess 用プラグインを含まない素の OpenSearch と組み合わせる構成(辞書管理などの一部機能は利用不可) |
snapshot/ | 開発版(snapshot)イメージを使用する構成(クラスター構成や Elasticsearch 8 との組み合わせを含む) |
multi-instance/ | 1 つの OpenSearch を共有する複数の Fess インスタンスを起動する構成 |
Docker ネットワークの設定
複数のサービスと連携する場合、カスタムネットワークを使用できます。
例:
Docker Compose での本番運用
本番環境で Docker Compose を使用する場合の推奨設定:
リソース制限の設定:
再起動ポリシーの設定:
ログの設定:
セキュリティ設定の有効化
OpenSearch のセキュリティプラグインを有効にし、適切な認証を設定します。 詳細は セキュリティ設定 を参照してください。
トラブルシューティング
コンテナが起動しない
ログを確認:
ポート番号の競合を確認:
ディスク容量を確認:
メモリ不足エラー
OpenSearch がメモリ不足で起動しない場合、vm.max_map_count を増やす必要があります。
Linux の場合:
永続的に設定する場合:
データの初期化
すべてのデータを削除して初期状態に戻す:
警告
このコマンドを実行すると、すべてのデータが完全に削除されます。
次のステップ
インストールが完了したら、以下のドキュメントを参照してください:
起動、停止、初期設定 - Fess の起動と初回セットアップ
セキュリティ設定 - 本番環境でのセキュリティ設定
トラブルシューティング - トラブルシューティング
よくある質問
Q: イメージのダウンロードにはどのくらいのディスク容量が必要ですか?
A: Fess と OpenSearch のイメージは初回起動時にダウンロードされ、あわせて数 GB 程度のディスク容量が必要です。 ネットワーク環境によってはダウンロードに時間がかかる場合があります。
Q: Kubernetes での運用は可能ですか?
A: 可能です。Docker Compose ファイルを kompose などのツールで Kubernetes マニフェストに変換するか、 独自のマニフェストを作成して運用できます(公式の Helm チャートは提供されていません)。
Q: コンテナのアップデートはどのように行いますか?
A: 以下の手順でアップデートします:
最新の Compose ファイルを取得
コンテナを停止:
新しいイメージを取得:
コンテナを起動:
Q: マルチノード構成は可能ですか?
A: 可能です。docker-fess リポジトリの snapshot/compose-cluster.yaml を参考に OpenSearch を複数ノードで構成したり、 multi-instance/ を参考に 1 つの OpenSearch を共有する複数の Fess インスタンスを構成したりできます。 ただし、本番環境では Kubernetes などのオーケストレーションツールの使用を推奨します。