This page describes the procedures for starting, stopping, and initial setup of the Fess server.
Important
Before starting Fess, you must start OpenSearch. If OpenSearch is not running, Fess will not function correctly.
Startup Methods
The startup procedure varies depending on the installation method.
ZIP Version
Start OpenSearch
To start in the background:
Note
bin/fess-setup install opensearch puts OpenSearch in opensearch/opensearch-3.9.0 in the Fess directory.
Important
Start OpenSearch as a regular user. It refuses to run as root and exits with can not run opensearch as root. The refused start still leaves files such as config/opensearch.keystore owned by root, and the next start as a regular user then fails with AccessDeniedException. Give the OpenSearch directory back to that user before starting it again, for example:
Start Fess
To start in the background:
Note
Startup may take several minutes. You can check the startup status in the log files in logs/: fess.log holds the messages of Fess itself, and server_0.log those of the embedded Tomcat, including the startup-completion message.
ZIP Version (Windows)
Start OpenSearch
Open the OpenSearch installation directory
Double-click
opensearch.batin thebinfolder
Or from Command Prompt:
Start Fess
Open the Fess installation directory
Double-click
fess.batin thebinfolder
Or from Command Prompt:
RPM/DEB Version (chkconfig)
Start OpenSearch:
Start Fess:
Check startup status:
RPM/DEB Version (systemd)
Start OpenSearch:
Start Fess:
Check startup status:
Enable automatic startup:
Docker Version
Note
compose.yaml and compose-opensearch3.yaml are not included with Fess itself. They are provided by the docker-fess project (https://github.com/codelibs/docker-fess); obtain the repository and run the following commands inside the compose directory.
Start using Docker Compose:
Check startup status:
Check logs:
Verify Startup
Verify that Fess has started successfully.
Health Check
Access the following URL using a browser or curl command:
If started successfully, the Fess search screen will be displayed.
Check from command line:
If HTTP/1.1 200 OK is returned, it has started successfully.
Check Logs
Check the startup logs to ensure there are no errors.
ZIP version:
RPM/DEB version:
Or use journalctl:
Docker version:
Tip
When startup completes successfully, a startup-completion message like the following is written to server_0.log in the log directory (logs/ of the ZIP version, /var/log/fess/ of the RPM/DEB version). It is not shown on the console and is not written to fess.log:
Access via Browser
Access the following URLs to verify the web interface.
Search Screen
The Fess search screen will be displayed. In the initial state, no search results will be displayed because no crawl configuration has been performed.
The search screen is bootstrap, the static theme bundled with Fess. To change how it looks, install another theme from “System” > “Theme” in the admin screen or with bin/fess-setup install theme <name> (see fess-setup Command), or copy the bundled theme and change the copy (see Customizing the Bundled Theme).
Admin Screen
URL: http://localhost:8080/admin
Default administrator account:
Username:
adminPassword:
admin
Warning
Important Security Notice
You must change the default password. Especially in production environments, it is strongly recommended to change the password immediately after the first login.
Initial Setup
After logging into the admin screen, perform the following initial configuration.
Step 1: Change Administrator Password
Log in to the admin screen (http://localhost:8080/admin)
Click “User” → “User” from the left menu
Click the
adminuserEnter a new password in the [Password] field
Re-enter the same password in the [Password (Confirm)] field
Click the [Update] button
Important
Passwords should meet the following criteria:
8 characters or more (the required minimum length set by
password.min.length)Combination of uppercase letters, lowercase letters, numbers, and symbols
Not easily guessed
By default, only the minimum length (8 characters) is required; a combination of character types is not enforced. Character-type requirements can be enabled with settings such as password.require.uppercase.
Step 2: Create Crawl Configuration
Create a configuration to crawl target sites or file systems.
Click “Crawler” → “Web” from the left menu
Click the “New” button
Enter required information:
Name: Name of the crawl configuration (e.g., Company Website)
URL: Target URL for crawling (e.g., https://www.example.com/). To specify multiple URLs, enter one URL per line
Max Access Count: Maximum number of documents to crawl (optional)
Interval: Wait time between accesses (milliseconds; default:
10000)
Note
Other items (such as user agent, number of threads, and depth) use their default values when left blank.
Click the “Create” button
Step 3: Execute Crawl
Click “System” → “Scheduler” from the left menu
Open the [Default Crawler] job and click the “Start Now” button
Wait for the crawl to complete (progress can be checked on the dashboard)
Step 4: Verify Search
Access the search screen (http://localhost:8080/)
Enter a search keyword
Verify that search results are displayed
Note
Crawling may take time. For large-scale sites, it may take from several hours to several days.
Other Recommended Settings
For production environments, consider the following settings.
Main Settings via Environment Variables
Settings such as the port number, JVM heap size, and the OpenSearch connection URL can be changed via environment variables. Edit bin/fess.in.sh for the ZIP edition, /etc/sysconfig/fess for the RPM edition, and /etc/default/fess for the DEB edition. A restart of Fess is required after making changes.
| Environment Variable | Default | Description |
|---|---|---|
FESS_PORT | 8080 | The HTTP port that Fess listens on. |
FESS_HEAP_SIZE | (unset) | JVM heap size. Sets the same value for the minimum and maximum. When unset, a minimum of 256m and a maximum of 2g are used (the Windows ZIP edition uses a maximum of 1g); the RPM/DEB edition uses 512m. |
SEARCH_ENGINE_HTTP_URL | http://localhost:9200 | URL of the OpenSearch to connect to. For the ZIP distribution, bin/fess.in.sh sets this by default. Export the variable, or edit bin/fess.in.sh, when OpenSearch runs on a different port or host. The RPM/DEB edition sets it in the package environment file. |
FESS_LOG_LEVEL | warn | Log level of Fess. |
FESS_HEAP_NEWSIZE | (unset) | Size of the young generation of the JVM heap (-Xmn), such as 256m. When unset, the JVM decides. |
FESS_TEMP_PATH | temp in the Fess directory (RPM/DEB edition: /var/tmp/fess) | Directory for temporary files, including the working directory of the embedded Tomcat. The user that runs Fess must be able to write to it. |
FESS_CONF_PATH | (unset) (RPM/DEB edition: /etc/fess) | Directory that holds the configuration files. bin/fess places it at the front of the class path and passes it to Fess as -Dfess.conf.path. For files such as tomcat_config.properties in lib/classes, the one in this directory takes priority. However, in the ZIP edition the web application reads the files in app/WEB-INF/classes first, so a fess_config.properties placed in this directory does not override the values of the fess_config.properties in app/WEB-INF/classes (child processes such as the crawler read this directory before WEB-INF/classes). In the ZIP edition, edit the file in app/WEB-INF/classes to change fess_config.properties. The RPM/DEB edition does not put a fess_config.properties in app/WEB-INF/classes and uses only the one in /etc/fess. |
FESS_USE_IPV4 | (unset) | With any non-empty value, the JVM uses the IPv4 stack only (-Djava.net.preferIPv4Stack=true). |
FESS_USE_GC_LOGGING | (unset) | With any non-empty value, the JVM writes its garbage collection log to gc-fess.log in the log directory (up to 5 files of 64 MB). |
Note
The environment variables that the Windows ZIP edition’s bin\fess.in.bat reads are FESS_HEAP_SIZE, FESS_HEAP_NEWSIZE, FESS_USE_IPV4 and FESS_USE_GC_LOGGING from the table above, and the following ones that are not in the table.
FESS_MIN_MEM,FESS_MAX_MEM: Specify the minimum and maximum heap sizes individually (ignored whenFESS_HEAP_SIZEis set).FESS_DIRECT_SIZE: Upper limit of direct memory (-XX:MaxDirectMemorySize).FESS_DICTIONARY_PATH: Theconfig\dictionarydirectory of OpenSearch.FESS_PROXY_HOST,FESS_PROXY_PORT,FESS_NON_PROXY_HOSTS: Proxy settings.FESS_JAVA_OPTS:fess.in.batappends these JVM options after the values already set.PLAYWRIGHT_NODEJS_PATH: The Node.js executable used by the Playwright plugin.JAVA_HOME: Required.
FESS_PORT, FESS_LOG_LEVEL, FESS_TEMP_PATH, FESS_CONF_PATH and SEARCH_ENGINE_HTTP_URL are not read. These values are written directly in the file, so edit bin\fess.in.bat directly to change them.
Configure Mail Server
To receive failure notifications and similar messages by email, configure the SMTP server and the notification recipient address.
In
fess_env_web.propertiesandfess_env_crawler.properties, specify the SMTP server host and port inmail.smtp.server.main.host.and.port(default:localhost:25). The files are inapp/WEB-INF/classes/for the ZIP package and in/etc/fess/for the RPM/DEB packages. The Fess web process reads the first, and the crawler, which sends the crawl completion mail, reads the second;fess_env.propertiesis not used. A restart of Fess is required after the change.In the admin UI, click [System] → [General] in the left menu.
Enter the recipient email address in the [Notification Mail] field.
Click the [Update] button.
You can verify that mail is sent correctly with the [Send Test Mail] button.
Configure Time Zone
Fess uses the server’s (OS / JVM) time zone. There is no setting to change the time zone in the admin UI. To change it, change the OS time zone setting, or add the JVM option -Duser.timezone=Asia/Tokyo to FESS_JAVA_OPTS in bin/fess.in.sh (on Windows, bin\fess.in.bat).
Adjust Log Level
In production, you can adjust the log level to reduce disk usage.
The overall log level of Fess can be changed with the FESS_LOG_LEVEL environment variable (default: warn). To control individual loggers in detail, edit the config file app/WEB-INF/classes/log4j2.xml. Crawling, suggest, and thumbnail generation run as separate processes, so configure their log levels individually in app/WEB-INF/env/{crawler,suggest,thumbnail}/resources/log4j2.xml.
See Fess Administrator Guide for details.
Shutdown Methods
ZIP Version
Stop Fess
Kill the process:
Or, stop from the console with Ctrl+C (if running in the foreground).
Stop OpenSearch:
RPM/DEB Version (chkconfig)
Stop Fess:
Stop OpenSearch:
RPM/DEB Version (systemd)
Stop Fess:
Stop OpenSearch:
Docker Version
Stop containers:
Stop and remove containers:
Warning
To also delete volumes with the down command, add the -v option. In this case, all data will be deleted, so use with caution.
Restart Methods
ZIP Version
Stop and then start.
RPM/DEB Version
chkconfig:
systemd:
Docker Version
Troubleshooting
Won’t Start
Verify OpenSearch is running
If OpenSearch is not running, start OpenSearch first.
Check for port conflicts
Where net-tools is installed,
sudo netstat -tuln | grep 8080shows the same information.If port 8080 is already in use, change the port number.
ZIP edition: change
FESS_PORTinbin/fess.in.shZIP edition (Windows): edit
-Dfess.port=8080directly inbin\fess.in.batRPM edition: change
FESS_PORTin/etc/sysconfig/fessDEB edition: change
FESS_PORTin/etc/default/fess
Check logs
Identify the problem from error messages.
Verify Java version
Verify that Java 21 or later is installed.
For detailed troubleshooting, refer to Troubleshooting.
Next Steps
After Fess has started successfully, refer to the following documentation to begin operation:
Fess Administrator Guide - Details on crawl configuration, search settings, and system settings
Security Configuration - Security configuration for production environments
Troubleshooting - Common problems and solutions
Upgrade Procedure - Version upgrade procedures
Uninstallation Procedure - Uninstall procedures