Skip to content

Configuration

Configuration Options

The FDDB Exporter application is a Spring Boot 4 application. It is pre-configured with a basic configuration embedded in the application. However, some properties need to be configured to make the application work for your use case and environment. The easiest way to do this is via environment variables.

For further methods of configuring Spring Boot applications, please refer to the official documentation.

Environment Variables

This page lists all available environment variables and their default values. Usually, you only need to change the username and password for the FDDB connection and the settings for your preferred database connection.

  • For more information about how to configure the Docker image, please refer to the Docker details.
  • For more information about how to configure the Helm Chart, please refer to the Helm details.

A note on the hyphens

The FDDB-EXPORTER_* spelling used on this page works wherever the variable is set as data — a Docker -e flag, a docker-compose.yml environment: block, a Kubernetes env var, an IDE run configuration:

bash
docker run -e 'FDDB-EXPORTER_MCP_WRITE-TOOLS-ENABLED=true' ghcr.io/itobey/fddb-exporter

It does not work with a POSIX shell's export, which rejects hyphens in a variable name. In a shell script use the all-underscore form instead — Spring Boot's relaxed binding accepts either, and this applies to every FDDB-EXPORTER_* variable on this page:

bash
export FDDB_EXPORTER_MCP_WRITE_TOOLS_ENABLED=true

FDBB Configuration

The application requires a valid FDDB.info account to work. The following environment variables are used to configure the FDDB connection.

VariableDefaultDescription
FDDB-EXPORTER_FDDB_USERNAME-Your FDDB.info username or email
FDDB-EXPORTER_FDDB_PASSWORD-Your FDDB.info password
FDDB-EXPORTER_FDDB_URLhttps://fddb.infoFDDB website URL

Export Configuration

For more information about the scheduler and how the export works, see Export details.

VariableDefaultDescription
FDDB-EXPORTER_FDDB_MIN-DAYS-BACK1Min limit of days back export for REST API
FDDB-EXPORTER_FDDB_MAX-DAYS-BACK365Max limit of days back export for REST API
FDDB-EXPORTER_SCHEDULER_ENABLEDtrueEnable/disable the daily export scheduler
FDDB-EXPORTER_SCHEDULER_CRON0 0 3 * * *Scheduler cron expression (default: 3 AM daily) (Spring cron)

The cron expression is a Spring expression and has six fields, the first being seconds. A five-field Unix expression is rejected at startup. /actuator/scheduledtasks lists the schedules actually in use.

Timezone

FDDB Exporter keys every entry on its diary date and stores it as midnight of that date in the configured timezone, so the timezone is semantically relevant rather than cosmetic — see time and date. A container defaults to UTC, so set this to your own timezone.

VariableDefaultDescription
TZUTCTimezone of the container, e.g. Europe/Berlin. The Helm chart calls this value timezone

Changing TZ does not rewrite entries that already exist. If days look shifted by one, see Troubleshooting.

MongoDB Configuration

MongoDB is used by default as persistence for the application. The following environment variables are used to configure the MongoDB connection. You can disable MongoDB persistence by setting FDDB-EXPORTER_PERSISTENCE_MONGODB_ENABLED to false. However, in this case, InfluxDB is necessary as persistence. For more information about persistence, see Persistence details.

VariableDefaultDescription
FDDB-EXPORTER_PERSISTENCE_MONGODB_ENABLEDtrueUse MongoDB as persistence
SPRING_MONGODB_HOSTlocalhostMongoDB host
SPRING_MONGODB_PORT27017MongoDB port
SPRING_MONGODB_DATABASEfddbMongoDB database name
SPRING_MONGODB_USERNAMEmongodb_fddb_userMongoDB username
SPRING_MONGODB_PASSWORDmongodb_fddb_passwordMongoDB password

Renamed in 2.2.0

Spring Boot 4 moved these out of Spring Data, so SPRING_DATA_MONGODB_* became SPRING_MONGODB_*. The old spelling is silently ignored, which means the application falls back to localhost instead of complaining.

InfluxDB Configuration

InfluxDB is disabled by default. The following environment variables are used to configure the InfluxDB connection. You can enable InfluxDB persistence by setting FDDB-EXPORTER_PERSISTENCE_INFLUXDB_ENABLED to true. The token needs to have permissions to write to the specified bucket. The application will only work with InfluxDB 2.x. For more information about persistence, see Persistence details.

VariableDefaultDescription
FDDB-EXPORTER_PERSISTENCE_INFLUXDB_ENABLEDfalseUse InfluxDB as persistence
FDDB-EXPORTER_INFLUXDB_URLhttp://localhost:8086URL to InfluxDB
FDDB-EXPORTER_INFLUXDB_ORGprimaryInfluxDB Org
FDDB-EXPORTER_INFLUXDB_TOKENtokenToken for authentication in InfluxDB
FDDB-EXPORTER_INFLUXDB_BUCKETfddb-exporterInfluxDB bucket

At least one of the two persistence layers has to be enabled. With both disabled, the application logs an error and stops itself at startup rather than running with nowhere to write.

Notification Configuration

A Telegram message is sent when the scheduled export cannot parse a day. Notifications are enabled by default but nothing is sent until a token and a chat id are configured. See Notifications for what triggers a message and how to obtain the two values.

VariableDefaultDescription
FDDB-EXPORTER_NOTIFICATION_ENABLEDtrueSend a Telegram message when a scheduled export fails to parse
FDDB-EXPORTER_NOTIFICATION_TELEGRAM_TOKEN-Bot token from BotFather
FDDB-EXPORTER_NOTIFICATION_TELEGRAM_CHATID-Id of the chat to send messages to

MCP Server Configuration 2.3.0+

The MCP server lets an AI assistant query your diary in natural language. It is disabled by default and requires MongoDB persistence. For what it exposes and how to connect a client, see MCP Server.

VariableDefaultDescription
FDDB-EXPORTER_MCP_ENABLEDfalseEnable the MCP server endpoint at /mcp, with the read-only tools
FDDB-EXPORTER_MCP_WRITE-TOOLS-ENABLEDfalseAdditionally expose the export tools, which scrape FDDB and write to the database

Both flags are read at startup, so changing either needs a restart. Mind the hyphens if you set them from a shell script.

Web UI Configuration

VariableDefaultDescription
FDDB-EXPORTER_UI_FDDB-LINK-PREFIXhttps://fddb.infoBase URL the Web UI prefixes to product links

Products are stored with the site-relative link FDDB itself uses, so this is what turns them into a URL you can click.

Health and Probes

The health endpoint is exposed at /actuator/health, with liveness and readiness groups for Kubernetes. The defaults are usually fine; they are listed here because they matter to anyone writing probe configuration.

VariableDefaultDescription
MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDEhealth, scheduledtasksWhich actuator endpoints are exposed
MANAGEMENT_ENDPOINT_HEALTH_SHOW-DETAILSalwaysWhether health details are in the response

Three custom indicators contribute to the health response: fddb-login-check (does the fddb.info login still work — it performs a real request), plus mongodb and influxdb when the respective store is enabled.

fddb-login-check is in neither probe group 2.3.1+

Both liveness and readiness exclude it, so a failed fddb.info login does not restart the container and does not take it out of the Service — wrong credentials are a configuration problem, not a lifecycle event, and the check is a real request to a third party that should not gate the pod. /actuator/health still reports it. Before 2.3.1 the check was part of the liveness group and wrong credentials caused a restart loop; see Troubleshooting.

Note that the health endpoint is not authenticated, like everything else the application serves — see Securing your instance.

Logging Configuration

VariableDefaultDescription
LOGGING_LEVEL_ROOTinfoApplication log level

debug adds the scheduled run and the health checks, trace the individual export steps.

Encrypting credentials

Environment variables are plain text, and this application needs several credentials — your FDDB password above all. Rather than passing them in the clear, the application supports Jasypt encrypted properties: any property value written as ENC(...) is decrypted at startup.

  1. Encrypt a value, using the Maven plugin that ships with the project:

    bash
    mvn jasypt:encrypt-value -Djasypt.encryptor.password=your-master-password -Djasypt.plugin.value=your-fddb-password
  2. Put the result into your configuration wrapped in ENC(...):

    yaml
    fddb-exporter:
      fddb:
        password: ENC(kMS9Zx8u2Fh1...)
  3. Supply the master password at runtime, and only that one:

    bash
    docker run -e 'JASYPT_ENCRYPTOR_PASSWORD=your-master-password' ghcr.io/itobey/fddb-exporter

This moves the problem rather than removing it — the master password still has to reach the application somehow — but it means the config file itself, and anything that reads it, no longer carries usable credentials. If you deploy with the Helm chart, its secretRef support covers the same ground with Kubernetes secrets and is the more natural fit there.

For the wider question of who can reach your instance at all, see Securing your instance.

Released under the MIT + Commons Clause License.