From Source (bare metal)
Build the fylr binary from source and run it directly on a host (without Docker) — the build toolchain, the datastores, and the third-party tools the execserver needs.
This page covers building fylr from source and running it directly on a host, without Docker. For the supported turnkey paths see Linux (docker-compose), Windows or Kubernetes (Helm). The Windows page's per-tool config snippets are a useful companion for wiring up the third-party tools on any bare host.
1. Build the binary
Requirements
Go 1.26 (see
go.mod).git — the web frontend is a submodule.
Node.js + npm and sass — to build the embedded web frontend.
A C toolchain — the default build keeps cgo for the native SQLite driver.
Build
git clone https://github.com/programmfabrik/fylr.git && cd fylr
git submodule update --init --recursive # pull the web frontend submodule
make all # generate + build frontend + build ./fylrmake all runs three steps: generate (produces the generated errors.go and CSS — a plain go build will not compile without it), webfrontend (builds the SPA that is embedded into the binary via go:embed), and build (the Go binary). Every Go invocation requires GOEXPERIMENT=jsonv2, which the Makefile sets for you. The result is ./fylr.
Granular / development targets:
make generate
regenerate errors.go + CSS (run once on a fresh checkout)
make webfrontend-ensure
init the submodule and build the frontend if it is missing
make build
just the Go binary (generate + frontend must already exist)
make server
config + frontend + generate + build + run
make server-fast
same as server but skips generate
The web frontend submodule must be initialized and built before compiling — go:embed embeds resources/easydb-webfrontend/build, so that directory has to exist at compile time. make all / make webfrontend-ensure guarantee this.
2. Run
The default login is root / admin. Configure the datastores in fylr.yml (or through FYLR_* environment variables; multiple -c files merge).
Datastores
fylr needs a database and a search index. Recommended: PostgreSQL 18 and OpenSearch 3 (the versions the install team tests against).
Install the
analysis-icuplugin in OpenSearch (index creation fails without it) and setvm.max_map_count=262144on the host.For a single-node dev instance you can use SQLite instead (
driver: sqlite3, a filedsn).
With just these two, fylr boots and serves the frontend; asset previews and metadata extraction need the third-party tools below.
3. Third-party tools (the execserver)
The execserver shells out to external programs for previews, metadata and plugins. On a bare host each must resolve on $PATH (or be pointed at via fylr.services.execserver.commands / a FYLR_CMD_<PROG> env var). Each execserver service runs a startupCheck that pins the expected tool version, so a present-but-wrong-version tool still fails.
The full set (matching the official Docker image — Debian package names):
Extra Python modules used by some plugins (python3-requests, python3-requests-oauthlib, python3-opencv, python3-cssselect, python3-tinycss2, …) are installed with pip3.
See also
Installation — the supported install methods and recommended software versions.
Windows — per-tool download links and
execserver.commandssnippets.Exec server — how fylr runs these tools.
Configuration —
fylr.ymlin depth.
Last updated