2022-03-21 13:41:39 +00:00
|
|
|
|
+++
|
|
|
|
|
title = "Main"
|
|
|
|
|
insert_anchor_links = "right"
|
|
|
|
|
description = "Describes the configuration file and shows all default settings."
|
|
|
|
|
weight = 10
|
|
|
|
|
template = "docs.html"
|
|
|
|
|
+++
|
|
|
|
|
|
|
|
|
|
# Configuration
|
|
|
|
|
|
|
|
|
|
Docspell's executables (restserver and joex) can take one argument – a
|
|
|
|
|
configuration file. If that is not given, the defaults are used,
|
|
|
|
|
overriden by environment variables. A config file overrides default
|
|
|
|
|
values, so only values that differ from the defaults are necessary.
|
|
|
|
|
The complete default options and their documentation is at the end of
|
|
|
|
|
this page.
|
|
|
|
|
|
|
|
|
|
Besides the config file, another way is to provide individual settings
|
|
|
|
|
via key-value pairs to the executable by the `-D` option. For example
|
|
|
|
|
to override only `base-url` you could add the argument
|
|
|
|
|
`-Ddocspell.server.base-url=…` to the command. Multiple options are
|
|
|
|
|
possible. For more than few values this is very tedious, obviously, so
|
|
|
|
|
the recommended way is to maintain a config file. If these options
|
|
|
|
|
*and* a file is provded, then any setting given via the `-D…` option
|
|
|
|
|
overrides the same setting from the config file.
|
|
|
|
|
|
|
|
|
|
At last, it is possible to configure docspell via environment
|
|
|
|
|
variables if there is no config file supplied (if a config file *is*
|
|
|
|
|
supplied, it is always preferred). Note that this approach is limited,
|
|
|
|
|
as arrays are not supported. A list of environment variables can be
|
2023-11-12 10:41:37 +00:00
|
|
|
|
found at [here](@/docs/configure/defaults.md#environment-variables). The
|
2022-03-21 13:41:39 +00:00
|
|
|
|
environment variable name follows the corresponding config key - where
|
|
|
|
|
dots are replaced by underscores and dashes are replaced by two
|
|
|
|
|
underscores. For example, the config key `docspell.server.app-name`
|
|
|
|
|
can be defined as env variable `DOCSPELL_SERVER_APP__NAME`.
|
|
|
|
|
|
|
|
|
|
It is also possible to specify environment variables inside a config
|
|
|
|
|
file (to get a mix of both) - please see the [documentation of the
|
|
|
|
|
config library](https://github.com/lightbend/config#standard-behavior)
|
|
|
|
|
for more on this.
|
|
|
|
|
|
|
|
|
|
# File Format
|
|
|
|
|
|
|
|
|
|
The format of the configuration files can be
|
|
|
|
|
[HOCON](https://github.com/lightbend/config/blob/master/HOCON.md#hocon-human-optimized-config-object-notation),
|
|
|
|
|
JSON or what this [config
|
|
|
|
|
library](https://github.com/lightbend/config) understands. The default
|
|
|
|
|
values below are in HOCON format, which is recommended, since it
|
|
|
|
|
allows comments and has some [advanced
|
|
|
|
|
features](https://github.com/lightbend/config#features-of-hocon).
|
|
|
|
|
Please also see their documentation for more details.
|
|
|
|
|
|
|
|
|
|
A short description (please check the links for better understanding):
|
|
|
|
|
The config consists of key-value pairs and can be written in a
|
|
|
|
|
JSON-like format (called HOCON). Keys are organized in trees, and a
|
|
|
|
|
key defines a full path into the tree. There are two ways:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
a.b.c.d=15
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
a {
|
|
|
|
|
b {
|
|
|
|
|
c {
|
|
|
|
|
d = 15
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Both are exactly the same and these forms are both used at the same
|
|
|
|
|
time. Usually the braces approach is used to group some more settings,
|
|
|
|
|
for better readability.
|
|
|
|
|
|
|
|
|
|
Strings that contain "not-so-common" characters should be enclosed in
|
|
|
|
|
quotes. It is possible to define values at the top of the file and
|
|
|
|
|
reuse them on different locations via the `${full.path.to.key}`
|
|
|
|
|
syntax. When using these variables, they *must not* be enclosed in
|
|
|
|
|
quotes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Config Options
|
|
|
|
|
|
|
|
|
|
The configuration of both components uses separate namespaces. The
|
|
|
|
|
configuration for the REST server is below `docspell.server`, while
|
|
|
|
|
the one for joex is below `docspell.joex`.
|
|
|
|
|
|
|
|
|
|
You can therefore use two separate config files or one single file
|
|
|
|
|
containing both namespaces.
|
|
|
|
|
|
|
|
|
|
## App-id
|
|
|
|
|
|
|
|
|
|
The `app-id` is the identifier of the corresponding instance. It *must
|
|
|
|
|
be unique* for all instances. By default the REST server uses `rest1`
|
|
|
|
|
and joex `joex1`. It is recommended to overwrite this setting to have
|
|
|
|
|
an explicit and stable identifier should multiple instances are
|
|
|
|
|
intended.
|
|
|
|
|
|
|
|
|
|
``` bash
|
|
|
|
|
docspell.server.app-id = "rest1"
|
|
|
|
|
docspell.joex.app-id = "joex1"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Other options
|
|
|
|
|
|
|
|
|
|
Please see the menu on the left for details about specific
|
|
|
|
|
configuration options.
|
|
|
|
|
|
|
|
|
|
# JVM Options
|
|
|
|
|
|
|
|
|
|
The start scripts support some options to configure the JVM. One often
|
|
|
|
|
used setting is the maximum heap size of the JVM. By default, java
|
|
|
|
|
determines it based on properties of the current machine. You can
|
|
|
|
|
specify it by given java startup options to the command:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ ./docspell-restserver*/bin/docspell-restserver -J-Xmx1G -- /path/to/server-config.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
This would limit the maximum heap to 1GB. The double slash separates
|
|
|
|
|
internal options and the arguments to the program. Another frequently
|
|
|
|
|
used option is to change the default temp directory. Usually it is
|
|
|
|
|
`/tmp`, but it may be desired to have a dedicated temp directory,
|
|
|
|
|
which can be configured:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ ./docspell-restserver*/bin/docspell-restserver -J-Xmx1G -Djava.io.tmpdir=/path/to/othertemp -- /path/to/server-config.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
The command:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
$ ./docspell-restserver*/bin/docspell-restserver -h
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
gives an overview of supported options.
|
|
|
|
|
|
|
|
|
|
It is recommended to run joex with the G1GC enabled. If you use java8,
|
|
|
|
|
you need to add an option to use G1GC (`-XX:+UseG1GC`), for java11
|
|
|
|
|
this is not necessary (but doesn't hurt either). This could look like
|
|
|
|
|
this:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
./docspell-joex-{{version()}}/bin/docspell-joex -J-Xmx1596M -J-XX:+UseG1GC -- /path/to/joex.conf
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Using these options you can define how much memory the JVM process is
|
|
|
|
|
able to use. This might be necessary to adopt depending on the usage
|
|
|
|
|
scenario and configured text analysis features.
|
|
|
|
|
|
|
|
|
|
Please have a look at the corresponding
|
|
|
|
|
[section](@/docs/configure/file-processing.md#memory-usage).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Logging
|
|
|
|
|
|
2022-04-30 16:26:19 +00:00
|
|
|
|
Docspell logs to stdout. This works well, when managed by systemd or
|
|
|
|
|
similar tools. Logging can be configured in the configuration file or
|
|
|
|
|
via environment variables. There are these settings:
|
2022-03-21 13:41:39 +00:00
|
|
|
|
|
|
|
|
|
- `minimum-level` specifies the log level to control the verbosity.
|
|
|
|
|
Levels are ordered from: *Trace*, *Debug*, *Info*, *Warn* and
|
|
|
|
|
*Error*
|
|
|
|
|
- `format` this defines how the logs are formatted. There are two
|
|
|
|
|
formats for humans: *Plain* and *Fancy*. And two more suited for
|
|
|
|
|
machine consumption: *Json* and *Logfmt*. The *Json* format contains
|
|
|
|
|
all details, while the others may omit some for readability
|
2022-04-30 16:26:19 +00:00
|
|
|
|
- `levels` optional _logger name_ to _level_ mappings to override the
|
|
|
|
|
log level for specific loggers. If not mentioned here, everything is
|
|
|
|
|
logged with `minimum-level`.
|
2022-03-21 13:41:39 +00:00
|
|
|
|
|
2022-04-30 16:26:19 +00:00
|
|
|
|
The default settings for joex and restserver are the same and
|
|
|
|
|
configure a minimum level of `Warn` and override some loggers with
|
|
|
|
|
`Info`.
|