Clarification on Fess config files: system.properties vs fess_config.properties

Hi everyone,

I am currently deploying Fess using a custom Helm chart. My goal is to configure as much of the system as possible via configuration files rather than the Admin UI, ensuring my setup remains fully declarative and persistent.

However, I am finding some conflicting information in the documentation regarding where specific settings belong. For example, LDAP configurations seem to be referenced in both system.properties and fess_config.properties.

Could someone clarify:

  1. What is the general rule of thumb for which settings belong in system.properties vs fess_config.properties?

  2. If I want to manage my deployment strictly via files, what are the exact files I need to mount, and to which paths inside the container? (I am currently assuming /opt/fess/app/WEB-INF/conf/, but want to be sure).

Any guidance on best practices for configuring Fess would be greatly appreciated.

Thank you!

The simplest way to think about the two files:

  • fess_config.properties — static, system-level settings loaded once at startup. Not editable from the Admin UI (you can override values at boot, but not change them at runtime). This is the baseline “wiring” of the instance (search-engine endpoint/credentials, cipher keys, index/field definitions, crawler defaults, etc.).
  • system.properties — the store behind the Admin → General page. These can be changed online from the screen without a restart.

Quick guideline: if a setting appears on the Admin → General page, it lives in system.properties and is runtime-editable. Everything else is fess_config.properties and is fixed at startup.

That’s also why LDAP shows up in both: fess_config.properties holds the LDAP defaults, while the connection/bind values you enter in the General page are persisted to system.properties.

For Docker / Helm (declarative setup):

1 Like