selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

FSCrawler logo

Self-host FSCrawler

fscrawler-3.0

File system indexer for Elasticsearch with OCR and REST API

BetaOpen SourceApache-2.0
Updatedlast week
LanguageJava
Setup difficultyEasy
Stars
1 455
Port
8080 (REST API service)
Requires
Elasticsearch, Java
Docker
dadoonet/fscrawler
Install with Docker

What is FSCrawler?

A self-hosted file system crawler for Elasticsearch that converts binary documents including PDFs and Office files into searchable content. The application monitors local or remote directories, detects new and modified files, supports OCR processing via Tesseract, and exposes a REST endpoint for uploading documents.

FSCrawler alternatives

Should you self-host FSCrawler?

FSCrawler scores 27/100 on selfhost.directory (how scoring works) and ranks #46 of 46 in Document Management. It has 1 455 GitHub stars.

It shipped 4 stable releases in the past year. The latest, fscrawler-3.0, came out on 26 August 2026.

An official Docker image is available. It is Apache-2.0-licensed and written mostly in Java.

Its closest alternative on selfhost.directory is Reactive Resume (87/100, 45 095 stars). It scores higher overall, so compare the two before you pick. See FSCrawler vs Reactive Resume side by side.

Features

  • Local file system crawling
  • Remote file system over SSH/FTP
  • REST interface
  • Vision Language Model OCRAdded in version 3.0

FSCrawler README

File System Crawler for Elasticsearch

Welcome to FSCrawler for Elasticsearch

This crawler helps to index binary documents such as PDF, Open Office, MS Office.

FSCrawler Explained - Generated with Gemini

Main features:

How to install FSCrawler

Install FSCrawler with Docker

Environment variables
FSCRAWLER_ELASTICSEARCH_URLS, FSCRAWLER_ELASTICSEARCH_API_KEY, FS_JAVA_OPTS, FSCRAWLER_KIBANA_URL, FSCRAWLER_REST_URL
docker pull dadoonet/fscrawler
docker run -it --rm \
  --add-host=host.docker.internal:host-gateway \
  -v ~/.fscrawler:/root/.fscrawler \
  -v $(pwd)/resumes:/tmp/es:ro \
  -e FSCRAWLER_ELASTICSEARCH_URLS=http://host.docker.internal:9200 \
  -e FSCRAWLER_ELASTICSEARCH_API_KEY="${ES_LOCAL_API_KEY}" \
  -e FS_JAVA_OPTS="-DLOG_LEVEL=debug" \
  dadoonet/fscrawler

How to configure FSCrawler

  • fs.tika_config_pathPath to custom Tika configuration JSON for VLM OCR integration
  • fs.ocr.output_typeSet OCR output type (txt or hocr)

    values: txt | hocr

  • fs.ocr.pdf_strategyautoOCR PDF strategy: auto|no_cr|ocr_only|ocr_and_text

    values: auto|no_ocr|ocr_only|ocr_and_text

  • fs.ocr.languageengLanguage for OCR (supports multiple languages with + separator)
  • fs.ocr.pathPath to tesseract binary executable

FSCrawler releases & version history

More in Document Management

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…