0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi × Fess で全文検索環境構築 (2) Fess インストール

0
Last updated at Posted at 2026-09-26

はじめに

NAS内のファイル数が数十万規模になると、ファイル名検索では目的のデータを見つけにくくなり、ディレクトリー構造の複雑化で検索効率も低下します。
このような環境では全文検索が有効です。
本シリーズでは、NAS内のファイルを高速かつ容易に検索するため、オープンソースの 全文検索サーバー Fess を用いて検索サーバーを構築する手順を紹介します。
検索サーバーのホストとしてRaspberry Pi 5を採用し、低消費電力で常時稼働可能な検索ノードの設置を目標としました。

本記事は全3回のうち 第2回 Fess インストール です。

シリーズ一覧

ソフトウェア構成

検索サーバーは、Webインターフェース、全文検索処理、索引管理、NASとの連携、LLM 連携の各機能を分離した構成で動作します。
image.png

名前 バージョン 役割 説明
Nginx 1.26.3 Webサーバー クライアントPCのWebブラウザーからのアクセスを受け付けるフロントエンドでFessへのリバース・プロキシとして動作
Fess 15.8.0 全文検索サーバー NAS内ファイルのクロール、OpenSearchへの索引作成や検索要求、LLMサーバーへの問い合わせ実行
OpenSearch 3.8.0 検索エンジン 索引の保持
Ollama 0.32.1 LLM実行環境 検索結果の要約や自然言語応答の生成

Ollamaのインストール、構成

本記事で手順説明を省略します。以降の手順は、Ollamaが使用可能であることを前提として記述します。

OpenSearchのインストール

仮想メモリーの最大マップ数

OpenSearchで高速検索のためにメモリー・マップを大量に使用可能にするための設定です。

$ echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
$ sudo sysctl -p

OpenSearchのダウンロードとインストール

Raspberry Piの場合、ARM版deb形式パッケージをダウンロードします。

wget https://artifacts.opensearch.org/releases/bundle/opensearch/3.8.0/opensearch-3.8.0-linux-arm64.deb

デモ設定のインストールを無効化してインストールします。

$ sudo DISABLE_INSTALL_DEMO_CONFIG=true dpkg -i opensearch-3.8.0-linux-arm64.deb

OpenSearchプラグインのインストール

Fess前提となるOpenSearchプラグインをインストールします。

$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-fess:3.8.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-analysis-extension:3.8.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-minhash:3.8.0
$ sudo /usr/share/opensearch/bin/opensearch-plugin install org.codelibs.opensearch:opensearch-configsync:3.8.0

OpenSearchの設定

Fess辞書ファイルを同期、管理するためのディレクトリーの絶対パスを指定します。

$ sudo nano /etc/opensearch/opensearch.yml

/etc/opensearch/opensearch.yml に以下を追記します。

opensearch.yml
configsync.config_path: /etc/opensearch/config/
plugins.security.disabled: true

OpenSearchヒープの設定

最大で100MBのファイルの索引作成を可能にするため、ヒープや文字列フィールドの大きさを拡張します。

$ sudo nano /etc/opensearch/jvm.options

ヒープ・サイズを1gから4gに変更します。

jvm.options
# Xms represents the initial size of total heap space
# Xmx represents the maximum size of total heap space

-Xms4g
-Xms4g

また、以下を追記します。

jvm.options
-Dopensearch.xcontent.string.length.max=104857600

Fessのインストール

FessはDocker版が提供されますが、サムネイル機能を使用するためインストール版を使用します。

Javaの確認

Fessの前提となるJavaがインストールされているか確認します。

$ which java

インストールされていない場合はJava 21をインストールします。

$ sudo apt install -y openjdk-21-jdk

Javaが使用可能であることとバージョンを確認します。

$ which java
/usr/bin/java
$ java --version
openjdk 21.0.12.1 2026-08-18
OpenJDK Runtime Environment (build 21.0.12.1+1-1-deb13u1-Debian)
OpenJDK 64-Bit Server VM (build 21.0.12.1+1-1-deb13u1-Debian, mixed mode, sharing)

Fessのダウンロードとインストール

deb形式パッケージをダウンロードしてインストールします。

$ wget https://github.com/codelibs/fess/releases/download/fess-15.8.0/fess-15.8.0.deb
$ sudo dpkg -i fess-15.8.0.deb

Fessユーザーの設定

Fessユーザーの環境変数を設定します。

$ sudo nano /etc/default/fess

FESS_DICTIONARY_PATHのバスは、/etc/opensearch/opensearch.yml のconfigsync.config_pathと同じ値にします。
大量のファイルを処理するため、ヒープを2gに拡張します。

fess
FESS_DICTIONARY_PATH=/etc/opensearch/config/
FESS_HEAP_SIZE=2g

サービスと登録と有効化

OpenSearchとFessをサービスとして登録します。

$ sudo systemctl daemon-reload
$ sudo systemctl enable opensearch.service
$ sudo systemctl enable fess.service

Fess初期設定

JVM Options for the crawler processセクションを変更します。

$ sudo nano /etc/fess/fess_config.properties

-Xmx を4096mに -XX:MaxMetaspaceSize を512m に変更します。

fess_config.properties
# JVM options for the crawler process.
jvm.crawler.options=\
-Djava.awt.headless=true\n\
-Dfile.encoding=UTF-8\n\
-Djna.nosys=true\n\
-Djdk.io.permissionsUseCanonicalPath=true\n\
-Dhttp.maxConnections=20\n\
-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager\n\
-server\n\
-Xms128m\n\
-Xmx4096m\n\
-XX:MaxMetaspaceSize=512m\n\

また、AI検索機能を有効にするため、rag.chat.enabledを有効化します。

fess_config.properties
# Whether RAG chat feature is enabled.
rag.chat.enabled=true

あわせてLLMサーバーのアドレス、モデル名を追加します。

fess_config.properties
# Ollama URL
rag.llm.ollama.api.url=http://<LLM_SERVER>:<PORT>

# Model
rag.llm.ollama.model=<LLM_MODEL_NAME>

サムネイル作成前提パッケージのインストール

Fessには検索結果画面でファイルのサムネイルを表示する機能があります。この機能を使用するためには外部ツールのインストールが必要です。
Raspberry Pi OSではOfficeファイルのサムネイル作成に必要な unoconv のかわりに libreoffice パッケージを使用します。

$ sudo apt install -y imagemagick librsvg2-bin poppler-utils libreoffice ghostscript fonts-noto-cjk

contentlength.xmlの変更

Fessで索引作成可能なファイルのデフォルト・サイズは、text/htmlが2.5MB、その他のファイルが10MBです。今回は、text/htmlで10MB、その他のサイズで100MBまでの索引作成を可能にするため、contentlenght.xml を変更します。

$ sudo nano /usr/share/fess/app/WEB-INF/classes/crawler/contentlength.xml

変更後の内容は以下のとおりです。

contentlength.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//DBFLUTE//DTD LastaDi 1.0//EN"
        "http://dbflute.org/meta/lastadi10.dtd">
<components namespace="fessCrawler">
        <include path="crawler/container.xml" />

        <component name="contentLengthHelper"
                class="org.codelibs.fess.crawler.helper.ContentLengthHelper" instance="singleton">
                <property name="defaultMaxLength">104857600</property><!-- 100M -->
                <postConstruct name="addMaxLength">
                        <arg>"text/html"</arg>
                        <arg>10485760</arg><!-- 10M -->
                </postConstruct>
        </component>
</components>

起動

サービス起動

OpenSearch、Fessの順に起動します。

$ sudo systemctl start opensearch
$ sudo systemctl start fess

起動確認

Webブラウザーから http://<FESS>:<PORT> にアクセスします。デフォルトのポート番号は 8080 です。
image.png

Nginxのインストール

Fess画面へのアクセスをSSL(ポート番号 443)で可能にするため、Nginxをインストールして構成します。

Nginxのインストール

Nginxをインストールします。

$ sudo apt install -y nginx

SSL設定

mkcert のインストールと自己署名証明書の発行を行います。

$ sudo apt install -y libnss3-tools
$ curl -s https://api.github.com/repos/FiloSottile/mkcert/releases/latest | grep browser_download_url | grep linux-arm64 | cut -d '"' -f 4 | xargs wget -O mkcert
$ chmod +x mkcert
$ sudo mv mkcert /usr/local/bin/
$ sudo mkdir -p /etc/nginx/ssl
$ cd /etc/nginx/ssl/
$ sudo mkcert <HOSTNAME>
$ sudo mkcert -intsall

設定ファイルの作成

FessへのアクセスをNginx経由で行うため、Nginx設定ファイルを作成します。

sudo nano /etc/nginx/sites-available/fess

AI検索画面使用のためには、AI Chat セクション以下の設定が必要になります。

fess
# HTTP -> HTTP Auto Redirect
server {
    listen 80;
    server_name <HOSTNAME>;
    return 301 https://$host$request_uri;
}

# Fess (https://<HOSTNAME>)
server {
    listen 443 ssl;
    http2 on;
    server_name <HOSTNAME>;

    ssl_certificate     /etc/nginx/ssl/<HOSTNAME>.pem;
    ssl_certificate_key /etc/nginx/ssl/<HOSTNAME>-key.pem;

    location / {
        proxy_pass http://127.0.0.1:8080;

        # Base
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Reverse Proxy Forwarding Headers
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port 443;

        # AI Chat (SSE/Streaming)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_buffering off;
        proxy_read_timeout 3600s;
    }
}

設定の有効化とNginxの再起動

Fessのための設定を有効化します。

$ sudo ln -s /etc/nginx/sites-available/<HOSTNAME> /etc/nginx/sites-enabled/
$ sudo rm -f /etc/nginx/sites-enabled/default
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
$ sudo systemctl restart nginx

Nginx経由でのアクセス確認

Webブラウザーから https://<FESS> にアクセスします。
image.png

次のステップ

続いてFessの構成に進みます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?