Configuration.

Configuration

While Jelu is provided with sensible defaults you might want to tune things a bit.

It is possible to provide configuration via environment varibles or via an application.yml file.

If you are running the java version put the application.yml file next to the jar.

If you are running the docker version either provide environment variables or put an application.yml file inside the folder you mounted on /config.

Jelu specific configuration

Env variablePropertyUsage
JELU_DATABASE_PATHjelu.database.pathPath to a folder where the database jelu.db will be created
JELU_FILES_IMAGESjelu.files.imagesPath to a folder where the book covers and authors pictures will be stored
JELU_FILES_IMPORTSjelu.files.importsPath to a folder where the csv imports will be stored
JELU_METADATA_CALIBRE_PATHjelu.metadata.calibre.pathPath to the calibre fetch ebook metadata binary; eg : /usr/bin/fetch-ebook-metadata
JELU_CORS_ALLOWED-ORIGINSjelu.cors.allowed-originsa list of hosts that should be accepted see Installation java for examples
JELU_SESSION_DURATIONjelu.session.durationDuration of the frontend session in seconds, default is 604800 which is 7 days

Spring herited configuration

Jelu is developed using the Spring framework and Spring boot, so all config from spring and spring boot is available.

Here are some configuration keys that may be useful :

Env variablePropertyUsage
SERVER_PORTserver.portThe port used by the API and the web frontend, default is 11111
SPRING_DATASOURCE_USERNAMEspring.datasource.usernameThe username of the jelu.db database, default is jelu_user
SPRING_DATASOURCE_PASSWORDspring.datasource.passwordThe password of the jelu.db database, default is mypass1234

configuring proxy authentication

Danger

  • This is for advanced users, use this only if you know what you are doing
Env variablePropertyUsage
JELU_AUTH_LDAP_ENABLEDjelu.auth.ldap.enabledActivate or not the ldap authent (turn this off if you don’t have a ldap server)
JELU_AUTH_PROXY_ENABLEDjelu.auth.proxy.enabledActivate or not proxy authentication
JELU_AUTH_PROXY_ADMINNAMEjelu.auth.proxy.adminNameName of the admin user (see below)
JELU_AUTH_PROXY_HEADERjelu.auth.proxy.headerHeader which stores the proxy authentication username, defaults to X-Authenticated-User if this configuration entry is not set

In yaml this looks like that :

jelu:
auth:
proxy:
enabled: true
adminName: "adminuser"
header: X-Personal-User
ldap:
enabled: false

How does this works :

You typically use this when you want your reverse proxy to handle the authentication part.

When a request hits your reverse proxy, it redirects the user to an authentication mechanism and sets a header containing the user name.

When Jelu receives a request with the header defined in config (or the default one), it first searches in its database to see if a user with this name exists.

If yes, the session is started with this user.

If no, Jelu automatically creates an user with the name.

If the user name is the same as the adminName from the configuration, then the user is created with admin rights.

Danger

  • This allows people to bypass security if anyone finds a way to reach your instance without going through your reverse proxy.

Adding other metadata providers

See the Metadata page.

For example, it is possible to use Google book API as a metadata provider.

Tip

  • You must obtain an API key from Google to use the Google API provider
  • This provider will only search if an ISBN is provided

Once you have an API key you can configure it like this :

jelu:
metadataProviders:
- is-enabled: true
apiKey: "YOUR-API-KEY-HERE"
name: "google"

Then restart Jelu.

There is also a debug plugin (which does nothing except printing the parameters in the logs)

The yaml for plugins configuration is shown below :

jelu:
metadataProviders:
- is-enabled: true
apiKey: ""
order: -100000
name: "jelu-debug"
- is-enabled: true
apiKey: "YOUR_API_KEY_HERE"
order: -10
name: "google"
- name: "inventaireio"
is-enabled: true
order: 200000
config: "fr"
metadata:
calibre:
path: /usr/bin/fetch-ebook-metadata
order: 50000

Tip

The google plugin, the inventaire.io plugin and the jelu-debug plugin names must be the same as in the config above.

If not set the default order priority of the calibre plugin is 1000.

For the other plugins the default order is -1000.

The inventaire.io plugin accepts a config key.

This key is used to select your preferred language. When several languages are available in the inventaire.io API (for book titles, tags etc…) Jelu will first try to get your preferred language, if it does not exist it will try to get the english version as a fallback.

The accepted values are 2 or 3 letters ISO language codes.

Here is a sample of availables values from the inventaire.io API :

"pt","fr","en","es","ca","it","et","de","nn","ja","cs","fa","bg","mzn","nl","da","sv","zh","ckb","nb","sl","fi","hu","pl","azb","eu","br","gl","uk","ast","ru","ar","pt-br","cy","sq","arz","pap","ka","tr"
Jelu, site template from spacebook