# Windows

There are now two ways to do this:

* The fully automated installer made by Attention Solutions: <https://attention.dk/docs/att/doku.php?id=winfylr:start> - needs a paid subscription with Attention Solutions.
* Use fylr directly from the developer Programmfabrik GmbH and download the 3rd party tools by yourself. This is what the rest of this page guides you through:

## Download fylr.exe

* Go to the newest release in <https://docs.fylr.io/releases>
* Download `fylr_v6.`X.Y`_windows_amd64.zip` and unpack.

It contains:

* `fylr.exe` fylr native for Windows amd64.
* `fylr.yml` a starting configuration already adjusted with Windows path syntax and for the following instructions.
* `fylr.example.yml` most configuration parameters. Look here for reference.
* `fylr.default.yml` compiled-in default values. Just as a copy for you to look them up.
* `LICENSE` legal information on who may use fylr.
* A folder with plugins.

## Windows path length

The shorter the path of your fylr installation directory, the less likely your installation will fail processing files due to exceeding the [length limit](https://learn.microsoft.com/en-us/windows/win32/fileio/maximum-file-path-limitation?tabs=registry). So prefer `C:\fylr` over `C:\user\jane doe\Desktop\software-project\fylr-v6.17.0\unpacked`. fylr newer than v6.3.1 will try to use only short internal file names, but every little bit helps. Same for Libre Office installation (more about that below).

## Get the dependencies

Bare bone minimum: Elasticsearch or OpenSearch

### OpenSearch

OpenSearch is our default and recommendation.

We installed OpenSearch as described in <https://opensearch.org/docs/latest/install-and-configure/install-opensearch/windows/>

* Version 2.11 (Version 2.12.0 works from fylr v6.9.0 onwards, make sure you set a strong initial password for admin, the OpenSearch user)
* We disabled security and let it explicitly listen only on localhost, thus protecting it:

```
network.host: 127.0.0.1
plugins.security.disabled: true
```

* We installed the one needed plugin:

```
opensearch-2.11.0> .\bin\opensearch-plugin install analysis-icu
```

### Elasticsearch

Elasticsearch has been the default until 2023. Now we recommend OpenSearch instead.

What we tested:

* Download from <https://www.elastic.co/guide/en/elasticsearch/reference/current/zip-windows.html>
* We recommend Elasticsearch `7.17`.
* If you start a new instance or have problems with ElasticSearch, we recommend OpenSearch, see above.
* Since writing the next lines, we found a <mark style="background-color:red;">problem</mark> with Versions `8.5` and newer, about indexing letters *Q* and *W*, of all things. Thus our recommendation for Elasticsearch `7.17`. The remainder of the text still mentions `8.6.1`, to stay true to what we actually did under Windows.
* Unpack official windows release file elasticsearch-8.6.1-windows-x86\_64.zip

  Other Versions should also be fine. This is true for all the below mentioned tools.
* Disable security with ...

```
xpack.security.enabled: false
```

... in elasticsearch-8.6.1\config\elasticsearch.yml

* Got the analysis-icu plugin from <https://www.elastic.co/guide/en/elasticsearch/plugins/current/analysis-icu.html> for offline installation (it was <https://artifacts.elastic.co/downloads/elasticsearch-plugins/analysis-icu/analysis-icu-8.6.1.zip>)
* Unpacked into `elasticsearch-8.6.1\plugins\analysis-icu\` (no further subfolders).
* Start, for example in a Windows powershell:

```
.\elasticsearch-8.6.1\bin\elasticsearch.bat
```

Elasticsearch then used the default address `http://localhost:9200`, which is also configured in `fylr.yml`.

### Start fylr with minimal dependencies

Edit fylr.yml to not use any 3rd part tools for the moment if you want to test/start with minimal effort:

```
 fylr+:
  [...]
  services+:
  [...]
    execserver+:

      commands:
        fylr:
          prog: fylr.exe
      services:
```

You are now ready to start fylr, although most asset processing tools are still missing: (no previews)

```
.\fylr.exe server -c fylr.yml
```

... in the folder where fylr.exe is.

Output lines with `WRN` can usually be ignored.

Harmless Errors known to appear are e.g.

* `Error occurred in NewIntrospectionRequest` and `Accepting token failed`, when a browser tries to use old credentials.

#### Access the web frontend

Browse <http://localhost>

Default login credentials are:

* **Username**: *root*
* **Password**: *admin*

### More than bare bone minimum

For a full installation it is recommended to install all of the following and un-comment them in `fylr.yml`.

"Un-comment" = turning the comments into configuration.

### PostgreSQL

* We installed 15.2 from <https://www.enterprisedb.com/downloads/postgres-postgresql-downloads>
* We started pgadmin and created a role "fylr" (with LOGIN and INHERIT, the defaults), with password "fylr"; and a database "fylr" owned by role "fylr".
* We un-commented these lines in fylr.yml:

```
    driver: postgres
    dsn: "host=localhost port=5432 user=fylr password=fylr dbname=fylr sslmode=disable"
```

* And we disabled the lines configuring sqlite, by turning them into comments:

```
    #driver: sqlite3
    #dsn: "data\\sqlite.db"
```

* For a consistent state we also did the next step: cleanup.

#### cleanup

If you want to go back to a fresh state between two test runs:

* Stop fylr.exe and the indexer (opensearch or elasticsearch). Optionally check that java / openjdk is stopped alongside elasticsearch.
* Remove the directory `data` and elasticsearch's `data/*` .
* Start elasticsearch as shown at the beginning.
* If you use PostgreSQL, remove and recreate the database.

### pdf tools

* We downloaded [Release-23.08.0-0.zip](https://github.com/oschwartz10612/poppler-windows/releases/download/v23.08.0-0/Release-23.08.0-0.zip) from [https://github.com/oschwartz10612/poppler-windows](https://github.com/oschwartz10612/poppler-windows/releases/tag/v23.08.0-0) (*not* xpdf-tools from <https://www.xpdfreader.com>)
* We unpacked its contents and configured the path to pdftotext.exe, pdftoppm.exe and pdfinfo.exe in fylr.yml. Alternatively, we tested successfully to add the containing directory of those tools to the PATH.

### magick.exe and convert.exe and composite.exe

* We downloaded `ImageMagick-7.1.0-61-portable-Q16-HDRI-x64.zip` from <https://imagemagick.org/script/download.php#windows>
* We put the three mentioned tools from the download into `C:\fylr\utils`.

Hint from the [download page](https://imagemagick.org/script/download.php#windows):

> If you have any problems, you likely need vcomp120.dll. To install it, download Visual C++ Redistributable Package(<https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads>).

### Exiftool.exe

We downloaded: Windows Executable: exiftool-12.56.zip on <http://exiftool.sourceforge.net>

We have put exiftool(-k).exe from the download into `C:\fylr\utils`.

We renamed it to exiftool.exe as recommended on exiftool.sourceforge.net.

### Ffmpeg.exe and ffprobe.exe

We downloaded ffmpeg-n5.1.2-12-g7268323193-win64-gpl-5.1.zip from <https://github.com/BtbN/FFmpeg-Builds/releases>

We suggest you avoid the LGPL version as testing showed it has less features (x264 and x265).

We have put ffmpeg.exe and ffprobe.exe into `C:\fylr\utils`.

### Node

We downloaded node-v16.17.0-win-x64.7z from <https://nodejs.org/dist/v16.17.0/>

We put just node.exe into `C:\fylr\utils`.

### Python

We donwloaded "Windows embeddable package (64-bit)" at <https://www.python.org/downloads/windows/> (explained [here](https://docs.python.org/3/using/windows.html#windows-embeddable))

We unpacked the whole package as the folder "python3" inside `C:\fylr\utils`.

### Java

For extracting information from assets, fylr needs a "java" command. We made sure to have java installed and that it can be started by the command `java` (for that, it has to be in the system environment variable PATH, which already was the case after java installation).

### Saxon

This replaces *xsltproc* in fylr v6.19.

We downloaded **SaxonJ-HE 12.5** from <https://www.saxonica.com/download/java.xml>

* The unpacked file was `C:\fylr\utils\saxon\saxon-he-12.5.jar` .

```
fylr+:
  services+:
    execserver+:
      commands:
        saxon:
          prog: java
          args:
            - "-jar"
            - "C:\\fylr\\utils\\saxon\\saxon-he-12.5.jar"
```

### Ghostscript

We downloaded `Ghostscript 10.05.0 for Windows (64 bit)` from <https://ghostscript.com/releases/gsdnld.html>

We installed to `C:\Program Files\gs\gs10.05.0` .

The `bin` directory was added automatically to the system `%PATH%` by the Ghostscript installer.

We then copied `gswin64c.exe` to `gs.exe` so that other programs are able to find it in `%PATH%`.

```
PS C:\Program Files\gs\gs10.05.0\bin> dir
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----    Mi, 12.03.2025     13:58          93696 gs.exe
-a----    Mi, 12.03.2025     13:58          93696 gswin64c.exe
```

We also added to the system path: `C:\Program Files\gs\gs10.05.0\lib`.

The latter is needed for the generation of previews for `.eps`-files via `ps2pdf` and [inkscape](#inkscape).

### Libreoffice

We installed LibreOffice ([ https://de.libreoffice.org/donate/dl/win-x86\_64/24.8.4/de/LibreOffice\_24.8.4\_Win\_x86-64.msi ](https://de.libreoffice.org/donate/dl/win-x86_64/24.8.4/de/LibreOffice_24.8.4_Win_x86-64.msi))

and configured in fylr.yml:

```
fylr+:
  services+:
    execserver+:
      commands:
        soffice:
          prog: "C:\\Program Files\\LibreOffice\\program\\soffice.exe"
```

\
As an alternative we successfully tested `LibreOfficePortable_7.4.5_MultilingualStandard.paf.exe` from <https://www.libreoffice.org/download/portable-versions/> to `C:\LibreOfficePortable`.

Fair warning: If you make your installation path too long, libre office will not work.

Example for too long: `C:\Users\Klaus Thorn\Desktop\pf\fylr_v6.2.4_windows_amd64\utils\LibreOfficePortable\`.

We then configured the path to `soffice.exe` in `fylr.yml`.

### Inkscape

We installed Inkscape 1.4 via its default Installer.

Version 1.4 is needed for the generation of previews for `.eps`-files via `ps2pdf` and inkscape.

We added Inkscape's `bin` directory to the Windows System `%PATH%` like this:

1. In the Windows Start Menu, we typed `env`, then selected `Edit the system environment variables`
2. We clicked the `Environment Variables...` button
3. In the lower section titled `System variables` , we selected the line starting with `Path`.
4. We clicked `Edit...`
5. In the new window, we clicked `New` and pasted `C:\Program Files\Inkscape\bin` .
6. We clicked `OK`.
7. We closed and opened a new window for `fylr.exe` so that the new `%PATH%` is known to the window and thus to fylr.

We tested Inkscape integration by uploading a svg file into fylr and check whether a preview is generated.

### tika

We downloaded from <https://tika.apache.org/download.html> the jar file `tika-app-2.9.2.jar`.

We configured in fylr.yml:

```
fylr+:
  services+:
    execserver+:
      commands:
        tika:
          prog: java
          args:
            - "-jar"
            - "C:\\fylr\\utils\\tika-app-2.9.2.jar"
```

### tesseract

From <https://github.com/UB-Mannheim/tesseract/wiki> we downloaded and started the installer `tesseract-ocr-w64-setup-5.5.0.20241111.exe` (64 bit)

* In the installer dialogs we chose all languages and script data
* We installed to `C:\fylr\utils\tesseract`
* We configured in `fylr.yml`:

```
fylr+:
  services+:
    execserver+:
      commands:
        tesseract:
          prog: "C:\\fylr\\utils\\tesseract\\tesseract.exe"
```

### mupdf tools

We downloaded `mupdf-1.25.2-windows.zip` from <https://mupdf.com/releases> and unpacked it into `C:\fylr\utils\mupdf\` .

In `fylr.yml` we configured:

```
fylr+:
  services+:
    execserver+:
      commands:
        mutool:
          prog: "C:\\fylr\\utils\\mupdf\\mutool.exe"
```

### dot

from <https://www.graphviz.org/download/>

### calibre

from <https://calibre-ebook.com/download_windows>

### libvips

Optional but recommended.

From [https://www.libvips.org](https://www.libvips.org/) we followed `Download` and `Windows binaries` to then download [vips-dev-w64-all-8.17.1.zip](https://github.com/libvips/build-win64-mxe/releases/download/v8.17.1/vips-dev-w64-all-8.17.1.zip). (The newest version at the time)

We unpacked this zip file to `C:\fylr\utils\vips-dev-8.17`.

In `fylr.yml` :

<pre><code><strong>fylr+:
</strong>  services+:
    execserver+:
      commands:
        vips:
          prog: "C:\\fylr\\utils\\vips-dev-8.17\\bin\\vips.exe"
</code></pre>

### chrome

**Optional**. Only needed for the plugin called `server-pdf` in the plugin manager. this plugin is not packaged with fylr by default. We mention it here to show the config under Windows as an example.

* If you have at least version 1.1.0 of the plugin: <https://github.com/programmfabrik/fylr-plugin-server-pdf/releases/tag/v1.1.0> it is ready for fylr under Windows.
* Install the browser **Chrome**
* configure the location of chrome in `fylr.yml`:

```
fylr+:
  env:
    SERVER_PDF_CHROME: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
```

To update the plugin automatically, use this URL: <https://github.com/programmfabrik/fylr-plugin-server-pdf/releases/latest/download/fylr-plugin-server-pdf.zip>

## Configure the tools in fylr.yml

Here is how to configure all these tools in fylr.yml:

* ***before***, the tools in `fylr.yml` look like this (minimal, no 3rd party tools):

```
fylr+:
  [...]
  services+:
  [...]
    execserver+:

      commands:
        fylr:
          prog: fylr.exe
      services:
      
```

* ***after*** we have added the tools: (remember to instead use paths valid on *your* installation)

<pre><code><strong>fylr+:
</strong>  env:
    SERVER_PDF_CHROME: "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
<strong>  [...]
</strong><strong>  services+:
</strong><strong>  [...]
</strong>    execserver+:
      commands:
        fylr:
          prog: fylr.exe
        # ffmpegthumbnailer: not under Windows. ffmpeg is used instead as a fallback
        soffice:
          prog: "C:\\LibreOfficePortable\\LibreOfficePortable.exe"
        magick:
          prog: "C:\\fylr\\utils\\magick.exe"
        exiftool:
          prog: "C:\\fylr\\utils\\exiftool.exe"
        ffmpeg:
          prog: "C:\\fylr\\utils\\ffmpeg.exe"
        ffprobe:
          prog: "C:\\fylr\\utils\\ffprobe.exe"
        node:
          prog: "C:\\fylr\\utils\\node.exe"
        python3:
          #prog: "C:\\fylr\\utils\\python3\\python.exe"
          # is searched in PATH variable:
          prog: "python.exe"
        pdftotext:
          prog: "C:\\fylr\\utils\\poppler-pdf\\Library\\bin\\pdftotext.exe"
<strong>        pdfinfo:
</strong>          prog: "C:\\fylr\\utils\\poppler-pdf\\Library\\bin\\pdfinfo.exe"
        java:
          prog: java.exe
        inkscape:
          prog: inkscape.exe
        saxon:
          prog: java
          args:
            - "-jar"
            - "C:\\fylr\\utils\\saxon\\saxon-he-12.5.jar"
        dot:
          prog: "C:\\fylr\\utils\\Graphviz\\bin\\dot.exe"
        tika:
          prog: java
          args:
            - "-jar"
            - "C:\\fylr\\utils\\tika-app-2.9.2.jar"
        tesseract:
          prog: "C:\\fylr\\utils\\tesseract\\tesseract.exe"
        mutool:
          prog: "C:\\fylr\\utils\\mupdf\\mutool.exe"
        ebook-meta:
          prog: "C:\\fylr\\utils\\Calibre2\\ebook-meta.exe"
        ebook-convert:
          prog: "C:\\fylr\\utils\\Calibre2\\ebook-convert.exe"
</code></pre>

Check that each indentation level is **two** spaces. (No tab characters, just space characters).

***

## Start fylr as a service

After testing, you may want to switch to

```
fylr.exe server -c fylr.yml --service install
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.fylr.io/for-system-administrators/installation/windows.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
