Skip to content

Configuration

Supported configuration options for the server are:

  • An application.yml file in the server folder
  • Environment variables

Environment variables are always derived from the YAML path of a property, with nestings being represented as _ and characters like - being left out. As an example, application.security.default-admin.username can be set by environment variable APPLICATION_SECURITY_DEFAULTADMIN_USERNAME.

INFO

If a configuration option is set as both environment variable and in the file, the environment variable takes precedence, as per Spring Boot externalized configuration rules.

Generally, all principles and possible methods of configuring Java Spring Boot applications apply, although they are not explicitly supported.

Security

This section pertains to management of keys, users & permissions.

Default user

This is the admin user that will be created automatically on first startup of the application. A workspace for this user will be automatically created using the format <first-name> <last-name>'s Workspace.

yaml
application:
  security:
    default-admin:
      username: "admin"
      password: "testington"
      email: "admin@default.internal"
      first-name: "ArdenSuite"
      last-name: "Admin"

API Key

This is a the static API Key that can be used in the X-Api-Key header. API key access can be disabled by setting an empty string (default).

yaml
application:
  security:
    api-key: ''

JWT

This contains the private key used for signing tokens, and expiry times for access and refresh tokens.

DANGER

It is highly recommended the the key be set to another (cryptographically secure) random value before any production use.

yaml
application:
  security:
    jwt:
      secret-key: 3d2a27adb37597867fb8a55c81172a73ec6b305da2972d7c094eefd0d5d5a4bd
      expiry-seconds: 1200 # in s (=20min)
    refresh-token:
      expiry-seconds: 10800 # in s (=3h)

Content

MLM Auto-Import

If enabled, the server will attempt to (re-)import files matching the provided glob patterns, relative to the configured directory, on every startup. MLMs already present in the server (by MLM ID) will be ignored.

yaml
application:
  mlm:
    import:
      enabled: false
      directory: ''
      include:
        - '*.mlm'
        - '**/*.mlm'

Backup Auto-Restore

When enabled, the server will on first startup attempt to import the backup specified in the JSON file. The contents of the JSON file should be of BackupDto, see the backup import operation for details.

yaml
application:
  backup:
    restore:
      enabled: false
      file: "src/main/resources/exported/export.json"

Engine

Configuration related to execution parameters, details of plugin execution and execution logs.

Execution limits

When MLMs call other MLMs, the call stack is only allowed to go nested-limit MLMs deep, otherwise an error will be raised. The entire execution of an MLM (including nested MLMs) is similarly aborted when max-execution-time is reached.

yaml
engine:
  execution:
    nested-limit: 100
    max-execution-time: 10

Execution log

Enable or disable logging of MLM calls for the dashboard entirely (disabled by default) and how long entries are retained if so.

yaml
engine:
  execution:
    log:
      enabled: false
      retention-days: 1

Plugin variable prefix

When values from the Arden Syntax engine are passed between curly braces, they are denoted with a prefix to mark them as a special identifier. This prefix can be configured here, but it is highly recommended to be left alone.

yaml
engine:
  plugin:
    syntax:
      variable-prefix: "$"

Database

The default Spring Boot database settings are used. By default, a file-based H2 database is configured.

yaml
spring:
  datasource:
    driver-class-name: org.hsqldb.jdbc.JDBCDriver
    url: jdbc:hsqldb:file:./data/ardendb;hsqldb.default_table_type=cached;sql.syntax_pgs=true
    username: sa
    password:
  jpa:
    database-platform: org.hibernate.dialect.HSQLDialect

Networking

Port

The HTTP port of the server.

yaml
server:
  port: 8081

CORS

Settings regarding cross-origin resource sharing, especially relevant for access from frontends like the ArdenSuite Frontend. Very permissive by default, allowing access from everywhere.

yaml
cors:
  enabled: true
  allow-credentials: true
  allowed-origins:
    - "*"