Skip to content

docs(15.9): document every fess-setup command and fix the ZIP first-run steps - #537

Merged
marevol merged 1 commit into
mainfrom
docs/fess-setup-first-run
Sep 15, 2026
Merged

marevol merged 1 commit into
mainfrom
docs/fess-setup-first-run

Conversation

@marevol

@marevol marevol commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Found while verifying 15.9.0. A reader who follows the 15.9 install guide for the ZIP does not reach a running Fess, and most of bin/fess-setup is not documented anywhere.

Requires codelibs/fess#3447 and codelibs/fess#3448; merge those first. The parts that describe their behaviour are marked [#3447] and [#3448] below; everything else is already true on main. Can be merged independently of #536: in install/upgrade.rst this only adds a paragraph inside the "embedded OpenSearch removed" section, and the two branches merge without conflicts.

What is wrong in the 15.9 tree

  • install/install-linux.rst tells readers to add the plugins to an existing OpenSearch with bin/fess-setup install plugins --opensearch-home .... That exits 1 with error: unknown component: plugins; since feat(setup): install and remove Fess plugins from the command line fess#3413 the command is install opensearch-plugins. The same line is in all seven languages.
  • The fess-setup tip says the command performs the manual steps, but install opensearch wrote only configsync.config_path. The OpenSearch it installed kept the security plugin enabled and did not start (No SSL configuration found), and Fess could not create its indices because FESS_DICTIONARY_PATH stayed unset. fix(setup): make the OpenSearch installed by fess-setup usable without manual edits fess#3447 adds plugins.security.disabled: true and lets bin/fess.in.sh / bin\fess.in.bat find the dictionary directory, so the tip and "Configure Fess" have to say what is now automatic and when the variable still has to be set by hand.
  • The "Before (default state)" excerpt of bin/fess.in.sh is the 15.8 file, with a commented-out SEARCH_ENGINE_HTTP_URL to uncomment. In 15.9 that line is active: SEARCH_ENGINE_HTTP_URL=${SEARCH_ENGINE_HTTP_URL:-http://localhost:9200}. The Windows excerpt still names %SEARCH_ENGINE_HOME%, which 15.9 removed.
  • Seven of the ten fess-setup commands appear nowhere in the documentation: check, install opensearch-plugins, list, list installed, list plugins, remove plugin and upgrade plugins.
  • install/install.rst sends macOS ZIP users to the Linux page, which does not say that install opensearch exits with an error on macOS because OpenSearch publishes no macOS build.
  • Nothing says OpenSearch must run as a regular user. A start as root is refused (can not run opensearch as root) but leaves config/opensearch.keystore owned by root, so the next start as a regular user fails with AccessDeniedException.
  • The upgrade note on the removed embedded OpenSearch names SEARCH_ENGINE_HTTP_URL but not FESS_DICTIONARY_PATH.
  • ko only: admin/fileconfig-guide.rst does not say how to install fess-storage-s3 and fess-storage-gcs, and admin/storage-guide.rst does not mention fess-storage-gcs.

Changes

All in the 15.9 tree, in all seven languages unless noted.

  • install/fess-setup.rst (new, added to the install toctree): a reference for every command, taken from the usage text and option parsing in FessSetup.java, Diagnostics.java and fess-setup.properties. It covers the exit codes (0, 1, 2); install opensearch, including what it appends to opensearch.yml, when it leaves a setting out, re-running it, --dest, --version, the refusal on macOS and a warning about plugins.security.disabled: true [#3447]; install opensearch-plugins; install nodejs; install plugin, list plugins, list installed, upgrade plugins, remove plugin and --repository; list; and check, including what it checks, where the engine URL comes from, --playwright and its exit code.
  • install/install-linux.rst, ZIP section:
    • A note that OpenSearch, and bin/fess-setup with it, has to run as a regular user.
    • The tip names install opensearch-plugins, says what install opensearch adds to opensearch.yml, that the Fess ZIP must be extracted first, and that bin/fess.in.sh then sets FESS_DICTIONARY_PATH [#3447].
    • A macOS note: Homebrew plus install opensearch-plugins, or Docker.
    • "Configure Fess" says when nothing needs to change [#3447] and lists the cases that still need FESS_DICTIONARY_PATH: OpenSearch installed another way or with --dest elsewhere, more than one OpenSearch under opensearch/, or OpenSearch on another host or port. The excerpt is the 15.9 bin/fess.in.sh, and the notes cover the exported variables.
    • "Verify Installation" mentions bin/fess-setup check.
  • install/install-windows.rst: the same tip changes for bin\fess-setup and bin\fess.in.bat [#3447], when "Configure Fess" can be skipped, the 15.9 default of the commented fess.dictionary.path line (C:/opensearch/config/dictionary, as in #3447), and why the path needs /: Fess substitutes it into the index settings, where a backslash is lost.
  • install/run.rst: where install opensearch puts OpenSearch, and the root refusal with the chown to recover from it.
  • install/troubleshooting.rst: the startup message when no search engine answers, which now names bin/fess-setup install opensearch [#3448].
  • install/upgrade.rst: in "Removal of the embedded OpenSearch" only, a paragraph saying that FESS_DICTIONARY_PATH has to match configsync.config_path, when the 15.9 launcher sets it [#3447], and where to set it otherwise.
  • install/install.rst: install opensearch is for Linux and Windows, with pointers to the macOS note and the new page.
  • admin/plugin-guide.rst: one paragraph on list plugins, list installed, upgrade plugins and remove plugin, with a link to the new page.
  • ko only: the install commands for fess-storage-s3 and fess-storage-gcs in admin/fileconfig-guide.rst, and fess-storage-gcs in admin/storage-guide.rst.

quick-start.rst is not changed. It sits outside the version trees and still describes 15.8, whose ZIP bundles OpenSearch, so its ZIP steps belong to the release switch.

Verification

  • python3 tools/check_headings.py on the 15.8 and 15.9 trees: passes.
  • python3 -m unittest discover -s tools -p 'test_*.py': 79 tests OK. tools/update_eol.py --check and tools/gen_properties_doc.py --check: pass.
  • A Sphinx dummy build of each language's 15.9 tree, compared with main: no new warnings in any language, and the new page is built. The same comparison reports an unterminated inline literal and an unknown :doc: target when they are planted in the new page.
  • In the doctrees of that build, what this change adds to each page (sections, literal blocks, admonitions, lists and list items, table rows, :doc: references) is the same in all seven languages.
  • git merge-tree of this branch with docs(15.9): upgrade guide covers stored Groovy jobs, carried-over config and plugin upgrades #536: no conflicts.
  • Commands, options, exit codes and messages were checked against FessSetup.java, Diagnostics.java, fess-setup.properties, bin/fess.in.sh and bin\fess.in.bat on codelibs/fess main and on the branches of #3447 and #3448. On a 15.9.0-SNAPSHOT ZIP, bin/fess-setup was run with no arguments (usage, exit 2), with list (exit 0), list installed (exit 0), install plugins --opensearch-home ... (unknown component: plugins, exit 1), install opensearch-plugins without --opensearch-home (exit 2), remove plugin without a name (exit 2), and install opensearch on macOS (Homebrew and Docker hint, exit 1).

The non-English wording has not been reviewed by native speakers.

…un steps

Found while verifying 15.9.0. A reader who follows the 15.9 install guide for
the ZIP does not reach a running Fess, and most of bin/fess-setup is not
documented anywhere.

Requires codelibs/fess#3447 and codelibs/fess#3448; merge those first.

- install/install-linux.rst named "bin/fess-setup install plugins
  --opensearch-home", which exits 1 with "unknown component: plugins"; the
  command is "install opensearch-plugins" (codelibs/fess#3413).
- The fess-setup tip claimed to perform the manual steps, but the OpenSearch
  it installed kept the security plugin enabled and FESS_DICTIONARY_PATH stayed
  unset. codelibs/fess#3447 adds plugins.security.disabled: true and lets
  bin/fess.in.sh and bin\fess.in.bat find the dictionary directory, so the tip
  and "Configure Fess" now say what is automatic and when the variable still
  has to be set by hand.
- The "Before (default state)" excerpts were the 15.8 launchers.
- Seven of the ten fess-setup commands were undocumented.
- macOS ZIP users were not told that install opensearch refuses to run there.
- Nothing said OpenSearch must run as a regular user, or how to recover the
  root-owned keystore a refused root start leaves behind.
- The upgrade note on the removed embedded OpenSearch did not mention
  FESS_DICTIONARY_PATH.

Changes, in the 15.9 tree of all seven languages:

- install/fess-setup.rst (new, in the install toctree): every command, its
  options and exit codes, from FessSetup.java and Diagnostics.java.
- install/install-linux.rst and install-windows.rst: non-root note, corrected
  tip, macOS note, 15.9 "Configure Fess" with the cases that still need
  FESS_DICTIONARY_PATH, the 15.9 launcher excerpts, why Windows paths need "/",
  and "bin/fess-setup check".
- install/run.rst: where install opensearch puts OpenSearch, the root refusal
  and the chown that recovers from it.
- install/troubleshooting.rst: the startup message when no engine answers,
  which names bin/fess-setup install opensearch (codelibs/fess#3448).
- install/upgrade.rst: in the embedded OpenSearch section only, a paragraph on
  FESS_DICTIONARY_PATH.
- install/install.rst and admin/plugin-guide.rst: pointers to the new page.
- ko only: install commands for fess-storage-s3 and fess-storage-gcs in
  admin/fileconfig-guide.rst, and fess-storage-gcs in admin/storage-guide.rst.

quick-start.rst is unchanged: it is outside the version trees and still
describes 15.8.
@marevol marevol self-assigned this Sep 15, 2026
@marevol
marevol merged commit 3a8dd3e into main Sep 15, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant