windowsPCで、Docker上にFessサーバを構築してみた。

## 環境
windows11
docker 27.1.1
Fess 14.17.0
opensearch:2.17.0

注意：Fessのバージョンとopensearchのバージョンは対になっている。
参考
https://fess.codelibs.org/ja/downloads.html

## インストールと各初期セットアップ

■docker
https://www.docker.com/products/docker-desktop/
セットアップの参考文献　https://qiita.com/gahoh/items/7b21377b5c9e3ffddf4a
windowsでdockerを稼働させるときはWSL2にチェック入れる事。
インストール後でもWSL2にチェック入れれます。歯車ﾏｰｸ→Resourcesから設定

■Fess
https://github.com/codelibs/docker-fess.git

自分はCドライブ直下にダウンロードしました。

２つのディレクトリを作成してください
C:\docker-fess-master\data\es
C:\docker-fess-master\data\fess
esにはオープンサーチのデータが入ってきます。インデックス付けしたデータとかです。


composeディレクトリの中を編集します。
C:\docker-fess-master\compose

①compose.yaml
```
services:
  fess01:
    image: ghcr.io/codelibs/fess:14.17.0
    # build: ./playwright # use Playwright
    container_name: fess01
    environment:
      - "SEARCH_ENGINE_HTTP_URL=http://search01:9200"
      - "FESS_DICTIONARY_PATH=${FESS_DICTIONARY_PATH:-/usr/share/opensearch/config/dictionary/}"
      # - "FESS_PLUGINS=fess-webapp-semantic-search:14.17.0 fess-ds-wikipedia:14.17.0"
    ports:
      - "8080:8080"
    networks:
      - search_net
    depends_on:
      - search01
    volumes:
      - C:/docker-fess-master/data/fess:/usr/share/fess/data
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    restart: unless-stopped

networks:
  search_net:
    driver: bridge
```


②compose-opensearch2.yaml　
```
services:
  search01:
    image: ghcr.io/codelibs/fess-opensearch:2.17.0
    container_name: search01
    environment:
      - node.name=search01
      - discovery.seed_hosts=search01
      - cluster.initial_cluster_manager_nodes=search01
      - cluster.name=fess-search
      - bootstrap.memory_lock=true
      - node.roles=cluster_manager,data,ingest,ml
      - "OPENSEARCH_JAVA_OPTS=-Xms1g -Xmx1g"
      - "DISABLE_INSTALL_DEMO_CONFIG=true"
      - "DISABLE_SECURITY_PLUGIN=true"
      - "FESS_DICTIONARY_PATH=/usr/share/opensearch/config/dictionary"
    ulimits:
      memlock:
        soft: -1
        hard: -1
      nofile:
        soft: 65535
        hard: 65535
    volumes:
      - C:/docker-fess-master/data/es:/usr/share/opensearch/data
      - C:/docker-fess-master/data/es/dictionary:/usr/share/opensearch/config/dictionary
    ports:
      - 9200:9200
    networks:
      - search_net
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "5"
    restart: unless-stopped

networks:
  search_net:
    driver: bridge

volumes:
  search01_data:
  search01_dictionary:
```

## Fess稼働
コマンドプロンプト画面で打ってください。

```
cd \docker-fess-master\compose
```
```
docker compose -f compose.yaml -f compose-opensearch2.yaml up -d
```

ダウンロード始まります。
終了後、dockerのメニュー画面でFess立ち上がってるの確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/490159cf-b5ea-efea-ac84-51f23df05e0c.png)

port(s)の8080:8080をクリックしたらFess画面へ行けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/c48dc9f0-d107-eb62-7d38-7550449051f8.png)

## クロール設定
ネットワーク共有フォルダーの設定を行います。

ログイン
ユーザー名:admin
PW: admin
adminは初期設定です。
http://localhost:8080/　にアクセス
管理者でログイン成功しました。次は管理画面に入ります。
admin
管理
クローラー
ファイルシステム
新規
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/80a70823-cb85-a754-2061-521c7c9491ff.png)

検索対象から除外するパス:この設定は検索結果に出てこなくていい拡張子を指定しています。exeなんか、出ても仕方がないですよね。ファイルサイズも大きいのでいりません。
```
.*\.exe$|.*\.zip$|.*\.war$|.*\.jar$|.*\.tar\.gz$|.*\.tmp$|.*Thumbs\.db$|.*\.lnk$|.*\.accdb$|.*\.msp$|.*\.msi$|.*\.JPG$|.*\.jpg$|.*\.png$|.*\.MOV$|.*\.BMP$
```
深さ:ディレクトリ階層の深さです
最大アクセス数:クロールできる最大数のファイルです。ファイル数が7000ほどのディレクトリをクロールしていたので10000と設定しました。
名前:任意
パス:  smb://192.168.0.100/〇〇〇/
smb://に続けてサーバー名を書いてください。最後は/で締めましょう。

----------------
### 全般設定
#### 最終更新日時の確認
チェックを外すと更新の有無に関わらず全てのドキュメントを再インデックスします。
#### 以前のドキュメントを削除
```
-1
```
デフォルトでは3日後にインデックスがすべて削除されてしまう設定？

#### 除外するエラーの種類


```
org.codelibs.fess.es.client.FessEsClientException|org.codelibs.fess.exception.ContentNotFoundException
```

#### 障害数の閾値
```
3
```
しきい値を超えた障害URLをクロール対象から除外します。

----------------
次にサーバー名に接続するためのファイル認証設定をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/ebbc0d1e-4937-643b-e4a0-fd3164710708.png)
クローラー
ファイル認証
新規作成
ホスト名:サーバーのIPアドレス
ユーザー名:そのサーバーの任意のディレクトリに入れるユーザー名
パスワード:そのサーバーの任意のディレクトリに入れるPW
ファイルクロール設定:認証情報を紐づけたいファイルシステムの名前

### クロール開始
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3882753/a03ed197-0b5e-aacc-882f-7cc01cfa97d4.png)
今すぐ開始をクリック

～～クロール中～～

システム情報
ジョブログ
ここで、クロールの稼働状況が見れます。

システム情報
クロール情報
ここで、クロール完了したインデックスが見れます。