Overview
Discover what makes Fess powerful
Fess is a Java‑based, enterprise‑grade search server that builds on the OpenSearch engine while abstracting away most of its operational complexity. At runtime it exposes a RESTful API, a configurable web UI, and an administration console that can be used to define crawling jobs, index pipelines, security policies, and search widgets. The core of Fess is a tightly coupled crawler engine that can ingest content from web sites, file systems, Windows shares, and a variety of data stores (CSV, relational databases, Atlassian products, Box, etc.). This ingestion layer is pluggable and can be extended with custom extractors (OCR, NLP) or transformation pipelines written in Java.
Language & Runtime
Search Engine
Frameworks
Data Store
Overview
Fess is a Java‑based, enterprise‑grade search server that builds on the OpenSearch engine while abstracting away most of its operational complexity. At runtime it exposes a RESTful API, a configurable web UI, and an administration console that can be used to define crawling jobs, index pipelines, security policies, and search widgets. The core of Fess is a tightly coupled crawler engine that can ingest content from web sites, file systems, Windows shares, and a variety of data stores (CSV, relational databases, Atlassian products, Box, etc.). This ingestion layer is pluggable and can be extended with custom extractors (OCR, NLP) or transformation pipelines written in Java.
Architecture
- Language & Runtime: Java 17+, fully platform‑independent.
- Search Engine: OpenSearch (forked from Elasticsearch) – the underlying index, query planner, and cluster manager.
- Frameworks: Spring Boot for the web layer, Thymeleaf for UI rendering, and a modular OSGi‑style plugin system for extensibility.
- Data Store: OpenSearch cluster (single node or multi‑node), optional JDBC for metadata, and a lightweight embedded database (H2) for configuration.
- Containerization: Official Docker images on GitHub Container Registry; a ready‑made
docker-compose.ymlsupports multi‑service deployments (Fess, OpenSearch, Elasticsearch‑compatible node). - Security: Supports BASIC/DIGEST/NTLM/FORM authentication, LDAP/Active Directory, SAML/SOAP SSO, and role‑based access control for both the UI and REST API.
Core Capabilities
| Feature | Description |
|---|---|
| Crawler | Configurable web, file, and data‑store crawlers with support for HTTP auth, custom headers, path mapping, and scheduling. |
| Indexing Pipeline | Pre‑processing hooks (text extraction, OCR, metadata enrichment) and field mapping customization via YAML/JSON. |
| Search API | Full‑text search, faceted navigation, highlighting, auto‑complete, and suggestion endpoints; query DSL compatible with OpenSearch. |
| Admin UI | Drag‑and‑drop configuration, real‑time monitoring of crawler jobs, cluster health dashboards, and API key management. |
| Extensibility | Plugin SDK (Java SPI) for custom crawlers, extractors, and response handlers; webhooks for event notifications. |
| Embedding | JavaScript widgets (search box, results list) that can be dropped into existing web pages; API for site search integration. |
Deployment & Infrastructure
Fess is designed for self‑hosting, allowing developers to keep data on-premises or within a private cloud. A single-node Docker container is sufficient for development and small deployments; production clusters can be scaled horizontally by adding OpenSearch nodes behind a load balancer. The Docker image includes all dependencies, so there is no need for manual Java or OpenSearch installation. For environments that require high availability, the docker-compose setup can be extended with Elasticsearch or OpenSearch clusters and Zookeeper for coordination. The application’s configuration is stored in a relational database (default H2), which can be swapped out for PostgreSQL or MySQL without code changes.
Integration & Extensibility
Developers can extend Fess through its SPI plugin system. A typical workflow involves implementing the CrawlerPlugin, ExtractorPlugin, or ResponseHandlerPlugin interfaces and packaging the code as a JAR placed in the plugins/ directory. The Admin UI exposes plugin configuration, and plugins can register custom REST endpoints or scheduled tasks. Fess also offers webhooks for events such as document ingestion completion, which can trigger downstream processes (e.g., notifying a CI pipeline). The search API is fully compatible with OpenSearch’s REST interface, enabling integration with existing analytics or monitoring tools.
Developer Experience
- Configuration: YAML/JSON files for crawler and index settings; UI wizard for common tasks.
- Documentation: Comprehensive online docs (installation, admin guide, API reference) with code examples and best‑practice sections.
- Community: Active GitHub repository, discussion forum, and a Slack channel for real‑time support.
- Licensing: Apache 2.0, allowing commercial use without royalties or source disclosure.
Use Cases
- Enterprise Knowledge Base – Crawl internal wiki, SharePoint, and file shares; expose a secure search portal with SSO.
- Regulatory Compliance – Index PDF and Office documents, apply OCR for scanned files, and audit search logs via the admin UI.
- Site Search – Embed Fess widgets into a corporate intranet or public website to replace paid search services.
- DevOps – Use Fess’s REST API to index logs, configuration files, and CI artifacts for quick troubleshooting.
- Data Lake – Ingest CSVs and relational tables, enrich with metadata, and expose a unified search layer across heterogeneous sources.
Advantages
- Performance: Leverages OpenSearch’s distributed architecture while providing a lightweight wrapper that reduces overhead.
- Flexibility: Full control over crawling, indexing, and security policies; no vendor lock‑in.
- Ease of Use: GUI admin console eliminates the need for deep OpenSearch knowledge; Docker images simplify deployment.
- Cost‑Effective: Completely free under Apache 2.0; no licensing fees for self
Open SourceReady to get started?
Join the community and start self-hosting Fess today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Miniflux
Minimalist feed reader for privacy and speed
MODX Revolution
Fast, secure, flexible open‑source CMS for any web project
Luanti
Open‑source voxel engine for building, exploring, and modding
S-Cart
Free Laravel-powered eCommerce platform
Dawarich
Track, map, and remember your location history
HOMER 10
Carrier‑grade VoIP & RTC observability platform
