This page describes the installation procedure for Fess on Linux environments. It covers the ZIP, RPM, and DEB package formats.
Note
Fess does not bundle a search engine. An OpenSearch server is required, and the steps below set one up.
Prerequisites
The system requirements described in System Requirements are met
Java 21 is installed
OpenSearch 3.8.0 is available for use (or is newly installed)
Choosing an Installation Method
For Linux environments, you can choose from the following installation methods:
| Method | Recommended Environments | Features |
|---|---|---|
| ZIP | Development environments, environments requiring customization | Can be extracted to any directory |
| RPM | RHEL, CentOS, Fedora systems | Service management via systemd possible |
| DEB | Debian, Ubuntu systems | Service management via systemd possible |
System Configuration for Running OpenSearch
To run OpenSearch stably on Linux, configure the following kernel parameters and resource limits. These are mainly required for the TAR.GZ version (when installing OpenSearch manually). For the RPM / DEB versions, the OpenSearch and Fess packages configure settings such as the file descriptor limit via systemd, but since vm.max_map_count is a host-level kernel setting, be sure to check it regardless of which installation method you use.
Maximum Map Count for Virtual Memory
Because OpenSearch uses a large number of memory maps, set vm.max_map_count to 262144 or higher.
To set this temporarily:
To set this persistently:
File Descriptor Limit
When running OpenSearch manually (TAR.GZ version), set the file descriptor limit for the user running OpenSearch to 65535 or higher.
Add the following to /etc/security/limits.conf (replace opensearch with the username that runs OpenSearch):
Note
For the RPM / DEB versions, this setting is not necessary because the file descriptor limit is configured in the systemd service definition.
Installation with ZIP Version
Step 1: Install OpenSearch
Important
Install and run OpenSearch as a regular user, not as root: OpenSearch refuses to start as root. Run bin/fess-setup below as that user as well, so that the files it extracts belong to that user. See Startup, Shutdown, and Initial Setup if a start as root has already been refused.
Tip
bin/fess-setup, included with Fess, performs steps 1 to 3 below in one command. It downloads and extracts OpenSearch into opensearch/ in the Fess directory, installs the required plugins, and adds configsync.config_path and plugins.security.disabled: true to its config/opensearch.yml. Extract the Fess ZIP first, as described in Step 2.
bin/fess.in.sh finds an OpenSearch installed this way and sets FESS_DICTIONARY_PATH on its own, so “Configure Fess” in Step 2 needs no change as long as OpenSearch runs on the same host. The command prints the settings it added and whether bin/fess.in.sh finds the installation. Read the warning in step 3 before OpenSearch listens on any address other than localhost.
Follow the steps below to work through them individually, or when using an OpenSearch you already have. To install only the plugins into an existing OpenSearch, use bin/fess-setup install opensearch-plugins --opensearch-home /path/to/opensearch. See fess-setup Command for all commands.
Note
OpenSearch publishes no macOS build, so on macOS bin/fess-setup install opensearch exits with an error. Install OpenSearch with Homebrew and add the plugins with bin/fess-setup install opensearch-plugins, or use Docker Installation (Detailed Guide) instead:
Then configure that OpenSearch as in step 3, and set FESS_DICTIONARY_PATH as described in “Configure Fess” in Step 2.
Download OpenSearch
Download the TAR.GZ version from Download OpenSearch.
Note
This example uses OpenSearch 3.8.0. Fess 15.9 supports OpenSearch 3.8.0.
Install OpenSearch Plugins
Install the plugins required by Fess.
Important
Plugin versions must match the OpenSearch version. In the example above, all are specified as 3.8.0.
Configure OpenSearch
Add the following settings to
config/opensearch.yml.Warning
Important Security Notice
Use
plugins.security.disabled: trueonly in development or test environments. In production environments, enable the OpenSearch security plugin and configure appropriate authentication and authorization. When enabling the security plugin on OpenSearch 2.12 or later, you must set the administrator password (environment variableOPENSEARCH_INITIAL_ADMIN_PASSWORD) at the first startup. For details, refer to Security Configuration.Tip
Adjust other settings, such as the cluster name and network settings, according to your environment. Example configuration:
Tip
The OpenSearch heap size is configured with
-Xms/-Xmxinconfig/jvm.options. As a guideline, use no more than half of the available physical memory and less than 32GB, and it is recommended to specify the same value for-Xmsand-Xmx.
Step 2: Install Fess
Download and Extract Fess
Download the ZIP version from the download site.
Configure Fess
The connection information to OpenSearch is in
bin/fess.in.sh. With an OpenSearch thatbin/fess-setup install opensearchinstalled intoopensearch/in the Fess directory and that runs on the same host, this file needs no change:SEARCH_ENGINE_HTTP_URLdefaults tohttp://localhost:9200, andFESS_DICTIONARY_PATHis set to theconfig/dictionarydirectory of that OpenSearch.Edit
bin/fess.in.shin any of the following cases:OpenSearch was installed another way, such as by steps 1 to 3 above or with Homebrew, or with
--destoutside the Fess directory.opensearch/in the Fess directory holds more than one OpenSearch installed bybin/fess-setup, for example two versions.bin/fess.in.shcannot tell which one is in use, so it prints a warning and leavesFESS_DICTIONARY_PATHunset.OpenSearch runs on another host or port.
Near the top of the file, remove the leading
#from theFESS_DICTIONARY_PATHline and set the path, and change the URL in theSEARCH_ENGINE_HTTP_URLline if needed.Before (default state, comment lines omitted):
After:
Note
Set
FESS_DICTIONARY_PATHto the same path specified forconfigsync.config_pathin OpenSearch’sopensearch.yml. Without it, Fess cannot create its indices and does not start.If OpenSearch is running on a different host, change the URL in the
SEARCH_ENGINE_HTTP_URLline to that host. Example:SEARCH_ENGINE_HTTP_URL=${SEARCH_ENGINE_HTTP_URL:-http://192.168.1.100:9200}.FESS_DICTIONARY_PATHis then theconfigsync.config_pathof that server.Instead of editing the file, both variables can be exported in the environment Fess is started from. An exported
SEARCH_ENGINE_HTTP_URLtakes precedence over the URL in the file, and an exportedFESS_DICTIONARY_PATHis used as long as its line in the file stays commented out.Rather than adding a new
SEARCH_ENGINE_HTTP_URL=...line, edit the existing one.
Tip
To change the Fess heap size, edit
FESS_MIN_MEM(default:256m) andFESS_MAX_MEM(default:2g) inbin/fess.in.sh, or set the environment variableFESS_HEAP_SIZE.Verify Installation
Verify that the configuration file has been edited correctly:
Once OpenSearch is running,
bin/fess-setup checkreports whether it is reachable, whether it has the plugins Fess requires, and whetherconfigsyncresponds. It exits with code0when no check failed. Pass--urlwhen OpenSearch is not athttp://localhost:9200.
Step 3: Startup
For startup procedures, refer to Startup, Shutdown, and Initial Setup.
Installation with RPM Version
The RPM version is used on RPM-based Linux distributions such as Red Hat Enterprise Linux, CentOS, and Fedora.
Step 1: Install OpenSearch
Download and Install OpenSearch RPM
Download the RPM package from Download OpenSearch and install it.
Alternatively, you can add a repository and install from it. For details, refer to Installing OpenSearch.
Install OpenSearch Plugins
Configure OpenSearch
Add the following settings to
/etc/opensearch/opensearch.yml.Settings to add:
Warning
Do not use
plugins.security.disabled: truein production environments. Refer to Security Configuration for appropriate security configuration.
Step 2: Install Fess
Install Fess RPM
Download the RPM package from the download site and install it.
Configure Fess
For the RPM version, edit the environment variable configuration file
/etc/sysconfig/fess. This file is preserved across package upgrades (do not edit/usr/share/fess/bin/fess.in.shdirectly, since it is overwritten during upgrades).Configure the connection information to OpenSearch. The default values are as follows. Change them as needed:
Note
Set
FESS_DICTIONARY_PATHto the same path asconfigsync.config_pathinopensearch.yml.Register and Enable the Service
Enable the services using systemd (systemd is the standard on RHEL 8 and later, and CentOS 8 and later):
Note
Because the Fess service depends on the OpenSearch service, OpenSearch must be started first.
Note
On legacy environments that do not use systemd, you can register Fess with
chkconfig:
Step 3: Startup
For startup procedures, refer to Startup, Shutdown, and Initial Setup.
Installation with DEB Version
The DEB version is used on DEB-based Linux distributions such as Debian and Ubuntu.
Step 1: Install OpenSearch
Download and Install OpenSearch DEB
Download the DEB package from Download OpenSearch and install it.
Alternatively, you can add a repository and install from it. For details, refer to Installing OpenSearch.
Install OpenSearch Plugins
Configure OpenSearch
Add the following settings to
/etc/opensearch/opensearch.yml.Settings to add:
Warning
Do not use
plugins.security.disabled: truein production environments. Refer to Security Configuration for appropriate security configuration.
Step 2: Install Fess
Install Fess DEB
Download the DEB package from the download site and install it.
Configure Fess
For the DEB version, edit the environment variable configuration file
/etc/default/fess. This file is preserved across package upgrades (do not edit/usr/share/fess/bin/fess.in.shdirectly, since it is overwritten during upgrades).Configure the connection information to OpenSearch. The default values are as follows. Change them as needed:
Note
Set
FESS_DICTIONARY_PATHto the same path asconfigsync.config_pathinopensearch.yml.Register and Enable the Service
Enable the services using systemd:
Note
Because the Fess service depends on the OpenSearch service, OpenSearch must be started first.
Step 3: Startup
For startup procedures, refer to Startup, Shutdown, and Initial Setup.
Post-Installation Verification
After the installation is complete, verify the following:
Verify Configuration Files
OpenSearch configuration file (opensearch.yml)
Fess configuration file
ZIP version:
bin/fess.in.shRPM version:
/etc/sysconfig/fessDEB version:
/etc/default/fess
Directory Permissions
Verify that the directories specified in the configuration (
configsync.config_path/FESS_DICTIONARY_PATH) exist and have appropriate permissions set.For the ZIP version:
For the RPM/DEB versions:
Verify Kernel Parameters
Verify that the value is
262144or higher.Verify Java Version
Verify that Java 21 or later is installed.
Next Steps
After installation is complete, refer to the following documentation:
Startup, Shutdown, and Initial Setup - Starting Fess and initial setup
Security Configuration - Security configuration for production environments
Troubleshooting - Troubleshooting
Frequently Asked Questions
Q: Will other versions of OpenSearch work?
A: Fess depends on a specific version of OpenSearch. To ensure plugin compatibility, it is strongly recommended to use the recommended version (3.8.0). If you use a different version, you must also adjust the plugin versions appropriately.
Q: How do I configure OpenSearch as a cluster?
A: Refer to the official OpenSearch documentation Cluster formation. For a cluster configuration, you must remove the discovery.type: single-node setting and add appropriate cluster settings.