WindowsでDocker Desktopを使用してFESSを導入する手順

## はじめに
FESS (Flexible and Extensible Search System) は、オープンソースの検索エンジンです。この記事では、Windows環境でDocker Desktopを使用してFESSを導入する手順を説明します。

https://fess.codelibs.org/ja/

## 前提条件
- Windows 10または11がインストールされていること
- Docker Desktopがインストールされ、起動していること

## 手順

### 1. Docker Desktopのインストール
1. [Docker公式サイト](https://www.docker.com/products/docker-desktop)からDocker Desktopをダウンロードします。
2. ダウンロードしたインストーラーを実行し、画面の指示に従ってインストールを完了させます。
3. インストールが完了したら、Docker Desktopを起動し、タスクバーのDockerアイコンが安定した状態（クジラのアイコン）になっていることを確認します。

### 2. Dockerのメモリ設定の変更
FESSを使用する際、デフォルトのメモリ設定では不足する場合があります。WSL 2を使用している場合は、`.wslconfig`ファイルを作成し、適切なメモリ設定を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/0f3177ab-d984-a844-a494-72eb6407ac41.png)

1. Disk image locationのフォルダ（通常は `C:\Users\<ユーザー名>`）に移動し、`.wslconfig`ファイルを作成します。
   ```sh
   cd ~
   notepad .wslconfig
   ```
2. 以下の内容をファイルに記述し、保存します（例としてメモリを4GBに設定）。
   ```ini
   [wsl2]
   memory=6GB  # メモリの最大使用量
   processors=2  # 使用するCPUコアの数
   swap=2GB  # スワップファイルのサイズ
   ```
3. Docker Desktopを再起動します。

### 3. FESSリポジトリのクローン
1. 作業ディレクトリを作成します。
   ```sh
   mkdir fess-docker
   cd fess-docker
   ```
2. Gitを使用してFESSのDockerリポジトリをクローンします。
   ```sh
   git clone https://github.com/codelibs/docker-fess.git
   ```
3. クローンしたリポジトリのディレクトリに移動します。
   ```sh
   cd docker-fess
   ```

### 4. Docker Composeの設定
1. `docker-compose.yml`ファイルを確認し、必要に応じて編集します。基本的にはデフォルトの設定で問題ありませんが、カスタマイズが必要な場合は適宜設定を変更してください。

### 5. FESSコンテナの起動
1. README.mdに記載されているコマンドを使用してFESSコンテナを起動します。
   ```sh
   docker compose --env-file .env.elasticsearch -f compose.yaml -f compose-elasticsearch8.yaml up -d
   ```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/6a1c1a4e-c371-a49e-a10a-c3907553a438.png)

2. 起動が完了したら、ブラウザで以下のURLにアクセスし、FESSの管理画面にログインします。
   ```
   http://localhost:8080
   ```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/cf7012f4-6bef-db17-f7e4-37ec3d4742b0.png)

### 6. FESSの初期設定
1. 画面右上のログインから管理画面にアクセスします。
アカウント: admin
パスワード: admin
※パスワードは初回ログイン時に変更を求められます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/fb80c742-3cd6-a695-8911-722821fe5ad4.png)

2. クロール設定
FESS管理画面で、ファイルのクロール設定を行います。詳細な設定手順は公式ドキュメントを参照してください。

メニューから「クローラー」を選択
「ウェブクロール設定」を開く
新規作成ボタンをクリック
必要な情報を入力
例として、Yahoo Japanをクロールする設定は以下の通りです。

名前: yahoo test
URL: https://www.yahoo.co.jp/
クロール対象とするURL: https://www.yahoo.co.jp/.*
クロール対象から除外するURL: (?i).*(css|js|jpeg|jpg|gif|png|bmp|wmv|xml|ico|exe)
設定後、「作成」ボタンをクリックします。


ファイルのクロール設定
ローカルファイルをElasticsearchの検索対象にするためには、まず被検索対象をクロールする必要があります。

左メニューの「クローラー」から「ファイルシステム」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/2650ccbe-6ba8-ab71-97c5-d5b0412d091c.png)

「新規作成」ボタンをクリック
検索対象にしたいファイルのある場所 
例：「file:///var/log/」に設定

3. クロールの実行
設定が完了したら、クロールを実行してデータを収集します。管理画面から「ダッシュボード」に戻り、「クロールの開始」ボタンをクリックします。

4. 検索の確認
クロールが完了したら、検索バーにキーワードを入力して、正常に検索結果が表示されることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/889c4f0e-3e9a-5f4b-d325-b5cbae9303ad.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/8815860d-fc74-d14d-3663-d8d6f2214fc9.png)


## トラブルシューティング
- コンテナが正常に起動しない場合、以下のコマンドでログを確認します。
  ```sh
  docker-compose logs
  ```
- エラーが発生した場合は、設定ファイルやDockerの状態を確認し、必要に応じて修正します。

## まとめ
以上で、Windows環境でDocker Desktopを使用してFESSを導入する手順は完了です。FESSを活用して、効率的な検索エンジンを構築しましょう。

---

この手順に従って、FESSの導入をスムーズに行うことができます。Dockerの基本的な操作や設定ファイルの編集に慣れていない場合は、公式ドキュメントや関連するリソースを参考にすると良いでしょう。