References
Settings
The following table lists all configuration settings available in Structr. You can view and modify these settings in the Configuration Interface, which opens in a separate browser tab when you click the wrench icon in the Admin UI header bar. The Configuration Interface requires authentication with the superuser name and password from structr.conf. Alternatively, you can edit the structr.conf file directly and restart the server.
Note: The configuration file uses Java
.propertiesformat and follows its escaping rules; certain characters are escaped when saved (e.g. the valueDOMAIN\useris stored asDOMAIN\\\\userand used by the application asDOMAIN\user).
Advanced Settings
| Name | Description | |
|---|---|---|
dateproperty.defaultformat |
Default ISO8601 date format pattern. Used when serializing date properties and regular date objects and can be overridden for each schema property of type Date. | Show detailsHide details |
geocoding.apikey |
Geocoding configuration | |
geocoding.language |
Geocoding configuration | |
geocoding.provider |
Geocoding configuration | |
json.lenient |
Whether to use lenient serialization, e.g. allow to serialize NaN, -Infinity, Infinity instead of just returning null. Note: as long as Javascript doesn’t support NaN etc., most of the UI will be broken | |
json.reductiondepth |
For restricted views (ui, custom, all), only a limited amount of attributes (id, type, name) are rendered for nested objects after this depth. The default is 0, meaning that on the root depth (0), all attributes are rendered and reduction starts at depth 1.
Can be overridden on a per-request basis by using the request parameter _outputReductionDepth |
|
json.redundancyreduction |
If enabled, nested nodes (which were already rendered in the current output) are rendered with limited set of attribute (id, type, name). | |
zoneddatetimeproperty.format.override |
Optional format pattern for ZonedDateTime properties and objects. Can be overridden for each schema property of type ZonedDateTime. If left empty, the default (and recommended) DateTimeFormatter.ISO_ZONED_DATE_TIME format will be used. Setting is being validated on write and only values that serialize/parse correctly will be accepted. | Show detailsHide details |
Markdown Rendering Hint: Children of Topic(Advanced Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Application Configuration Settings
| Name | Description | |
|---|---|---|
application.changelog.enabled |
Turns on logging of changes to nodes and relationships | |
application.changelog.user_centric.enabled |
Turns on user-centric logging of what a user changed/created/deleted | |
application.encryption.secret |
Sets the global secret for encrypted string properties. Using this configuration setting is one of several possible ways to set the secret. Using the set_encryption_key() function is a way to set the encryption key without persisting it on disk. |
|
application.feeditem.indexing.remote |
Whether indexing for type FeedItem will index the target URL of the FeedItem or the description | |
application.feeditemcontent.indexing.enabled |
Whether indexing is enabled for type FeedItemContent | |
application.feeditemcontent.indexing.limit |
Maximum number of words to be indexed per FeedItemContent. | |
application.feeditemcontent.indexing.maxlength |
Maximum length of words to be indexed for FeedItemContent | |
application.feeditemcontent.indexing.minlength |
Minimum length of words to be indexed for FeedItemContent | |
application.filesystem.checksums.default |
List of additional checksums to be calculated on file creation by default. (File.checksum is always popuplated with an xxHash)
|
|
application.filesystem.enabled |
If enabled, Structr will create a separate home directory for each user. The home directory of authenticated users will override the default upload folder setting. See Filesystem for more information. | |
application.filesystem.indexing.enabled |
Whether indexing is enabled globally (can be controlled separately for each file) | |
application.filesystem.indexing.maxsize |
Maximum size (MB) of a file to be indexed | |
application.filesystem.unique.insertionposition |
Defines the insertion position of the uniqueness criterion (currently a timestamp).
|
|
application.filesystem.unique.paths |
If enabled, Structr will not allow files/folders of the same name in the same folder and automatically rename the file. | |
application.httphelper.charset |
Default charset for outbound connections | |
application.httphelper.hostname.verification |
Controls hostname verification for outbound HTTPS calls that pass validateCertificates=false. STRICT (default) keeps the JVM default hostname verifier active even when certificate-chain validation has been disabled, so a certificate still has to match the host it is presented for. LENIENT disables hostname verification as well (legacy behaviour). Calls made with validateCertificates=true are unaffected. |
|
application.httphelper.timeouts.connect |
Timeout for outbound connections in seconds to wait until a connection is established. A timeout value of zero is interpreted as an infinite timeout. | |
application.httphelper.timeouts.connectionrequest |
Timeout for outbound connections in seconds to wait when requesting a connection from the connection manager. A timeout value of zero is interpreted as an infinite timeout. | |
application.httphelper.timeouts.socket |
Socket timeout for outbound connections in seconds to wait for data or, put differently, a maximum inactivity period between two consecutive data packets. A timeout value of zero is interpreted as an infinite timeout. | |
application.httphelper.urlwhitelist |
A comma-separated list of URL patterns that can be used in HTTP request scripting functions (GET, PUT, POST etc.). If this value is anything other than *, whitelisting is applied to all outgoing requests. | |
application.httphelper.useragent |
User agent string for outbound connections | |
application.localization.fallbacklocale |
The default locale used, if no localization is found and using a fallback is active. | |
application.localization.logmissing |
Turns on logging for requested but non-existing localizations. | |
application.localization.usefallbacklocale |
Turns on usage of fallback locale if for the current locale no localization is found | |
application.migration.mode |
How the migrations at startup treat the database. apply (default) migrates for real, which is what a supervised service has to do: an instance that refuses to start is restarted by systemd, Docker and Kubernetes alike. dry-run runs every step, logs what it would change, rolls the change back and then STOPS startup with exit status 4: a rolled back schema migration leaves the compiled schema in memory out of step with the database, so the instance must not go on to serve anything. It is a diagnostic to be run deliberately, and the service stays down until the mode is changed. Each step is rolled back on its own, so a dry run never holds more in one transaction than that step would have committed by itself. off skips the migrations entirely and starts the instance against the database as it is, which is only useful when a migration itself is the problem: the application may not work correctly against unmigrated data. |
|
application.proxy.mode |
Sets the mode of the proxy servlet. Possible values are ‘disabled’ (off, servlet responds with 503 error code), ‘protected’ (only authenticated requests allowed) and ‘public’ (anonymous requests allowed). Default is disabled. | |
application.remotedocument.indexing.enabled |
Whether indexing is enabled for type RemoteDocument | |
application.remotedocument.indexing.limit |
Maximum number of words to be indexed per RemoteDocument. | |
application.remotedocument.indexing.maxlength |
Maximum length of words to be indexed for RemoteDocument | |
application.remotedocument.indexing.minlength |
Minimum length of words to be indexed for RemoteDocument | |
application.schema.allowunknownkeys |
Enables get() and set() built-in functions to use property keys that are not defined in the schema. | |
application.security.ssrf.protection |
Enables SSRF protection for outbound HTTP requests. When enabled, requests to private/internal IP ranges (loopback, link-local, site-local) are blocked. Disable only for testing or when internal network access is explicitly required. | |
application.uploads.folder |
The default upload folder for files uploaded via the UploadServlet. This must be a valid folder path and can not be empty. Final slashes are automatically removed. Uploads to the root directory are not allowed. | |
application.xml.parser.security |
Enables various security measures for XML parsing to prevent exploits. | |
callbacks.login.onsave |
Setting this to true enables the execution of the User.onSave method for login actions. This will also trigger for failed login attempts and for two-factor authentication intermediate steps. Disabled by default because the global login handler onStructrLogin would be the right place for such functionality. | |
callbacks.logout.onsave |
Setting this to true enables the execution of the User.onSave method when a user logs out. Disabled by default because the global login handler onStructrLogout would be the right place for such functionality. | |
deployment.data.export.nodes.batchsize |
Sets the batch size for data deployment when exporting nodes.
The relationships for each node are collected and exported while the node itself is exported. It can make sense to reduce this number, if all/most nodes have very high amount of relationships. |
|
deployment.data.import.nodes.batchsize |
Sets the batch size for data deployment when importing nodes. | |
deployment.data.import.relationships.batchsize |
Sets the batch size for data deployment when importing relationships. | |
deployment.schema.format |
Configures how the schema is exported in a deployment export. file exports the schema as a single file. tree exports the schema as a folder structure tree where methods/function properties are written to separate files. |
Markdown Rendering Hint: Children of Topic(Application Configuration Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Cron Jobs Settings
| Name | Description | |
|---|---|---|
cronservice.allowparallelexecution |
Enables the parallel execution of the same cron job. This can happen if the method runs longer than the defined cron interval. Since this could lead to problems, the default is false. | |
cronservice.tasks |
List of cron task configurations or method names separated by space. This only configures the list of tasks. For each task, there needs to be another configuration entry named ‘ |
Markdown Rendering Hint: Children of Topic(Cron Jobs Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Database Configuration Settings
| Name | Description | |
|---|---|---|
database.cache.uuid.size |
Size of the database driver relationship cache | |
database.prefetching.costratio |
How many entities a prefetching query may load per lookup that it saves in the transaction. A prefetch that loads more than that is deactivated for the request it was learned for, because loading the graph costs more than the lookups it replaces. | |
database.prefetching.maxcount |
How many results a prefetching query may return before prefetching will be deactivated for that query. | |
database.prefetching.maxduration |
How long a prefetching query may take before prefetching will be deactivated for that query. | |
database.prefetching.threshold |
How many identical queries must run in a transaction to activate prefetching for that query. | |
database.result.fetchsize |
Number of database records to fetch per batch when fetching large results | |
database.result.lazy |
Forces Structr to use lazy evaluation for relationship queries | |
database.result.softlimit |
Soft result count limit for a single query (can be overridden by setting the _pageSize request parameter or by adding the request parameter _disableSoftLimit to a non-null value) |
|
log.cypher.debug |
Turns on debug logging for the generated Cypher queries | |
log.cypher.debug.ping |
Turns on debug logging for the generated Cypher queries of the websocket PING command. Can only be used in conjunction with log.cypher.debug |
Markdown Rendering Hint: Children of Topic(Database Configuration Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
General Settings
| Name | Description | |
|---|---|---|
application.cluster.enabled |
Enables cluster mode (experimental) | |
application.cluster.log.enabled |
Enables debug logging for cluster mode communication | |
application.cluster.name |
The name of the Structr cluster | |
application.console.cypher.maxresults |
The maximum number of results returned by a cypher query in the admin console. If a query yields more results, an error message is shown. | |
application.email.validation.regex |
Regular expression used to validate email addresses for User.eMail and is_valid_email() function. | |
application.heap.max_size |
Maximum Java heap size (-Xmx). Examples: 2g, 4g, 8g. Note: Changes require a restart of Structr. | |
application.heap.min_size |
Minimum Java heap size (-Xms). Examples: 512m, 1g, 2g. Note: Changes require a restart of Structr. | |
application.instance.name |
The name of the Structr instance (displayed in the top right corner of structr-ui) | |
application.instance.stage |
The stage of the Structr instance (displayed in the top right corner of structr-ui). Naming the stage lets an operation that is dangerous on a live system, a data deployment for example, recognise where it is running. | |
application.legacy.requestparameters.enabled |
Enables pre-4.0 request parameter names (sort, page, pageSize, etc. instead of _sort, _page, _pageSize, …) | |
application.runtime.enforce.recommended |
Enforces version check for Java runtime. | |
application.scripting.allowedhostclasses |
Space-separated list of fully-qualified Java class names that you can load dynamically in a scripting environment. | |
application.scripting.async.concurrency |
Maximum number of asynchronous scripting function calls in flight across the whole instance, as started by the JavaScript-only async option of a function (for example $.GET(url, { async: true })). A call beyond this bound waits for a slot, so exceeding it makes a script run closer to the speed of the synchronous calls it replaced rather than making it fail. Requires a restart to take effect. |
|
application.scripting.debugger |
Enables Chrome debugger initialization in scripting engine. The current debugger URL will be shown in the server log and also made available on the dashboard. | |
application.scripting.js.wrapinmainfunction |
Forces js scripts to be wrapped in a main function for legacy behaviour. | |
application.scripting.polyglot.access |
Controls cross-language interop inside GraalVM scripting contexts. ALL (default) permits unrestricted cross-language calls such as Polyglot.eval(‘python’, …) from JavaScript. NONE blocks cross-language calls for a tighter sandbox; scripts that stay within one language are unaffected. Requires a restart to take effect. |
|
application.scripting.polyglot.statement.limit |
Maximum number of statements a single scripting context may execute before GraalVM cancels it. Bounds runaway scripts (e.g. while (true) {}) without affecting normal workloads. 0 disables the limit. Requires a restart to take effect. |
|
application.stats.aggregation.interval |
Minimum aggregation interval for HTTP request stats. | |
application.systeminfo.disabled |
Disables transmission of telemetry information. This information is used to improve the software and to better adapt to different hardware configurations. | |
application.timezone |
Application timezone (e.g. UTC, Europe/Berlin). If not set, falls back to system timezone or UTC. Note: Changes require a restart of Structr. | |
application.title |
The title of the application as shown in the log file. This entry exists for historical reasons and has no functional impact other than appearing in the log file. | |
application.uuid.allowedformats |
Configures which UUIDv4 types are allowed: With dashes, without dashes or both. | Show detailsHide details |
application.uuid.createcompact |
Determines if UUIDs are created with or without dashes. This setting is only used if application.uuid.allowedformats is set to both.
WARNING: Requires a restart to take effect. |
|
base.path |
Path of the Structr working directory. All files will be located relative to this directory. | |
changelog.path |
Path to the Structr changelog storage folder | |
configuration.provider |
Fully-qualified class name of a Java class in the current class path that implements the org.structr.schema.ConfigurationProvider interface. |
|
configured.services |
Services that are listed in this configuration key will be started when Structr starts. Names that do not resolve to an available service class (e.g. ProcessTimerService when the process module is not installed) are ignored. | |
data.exchange.path |
IMPORTANT: Path is relative to base.path | |
database.path |
Path to the Neo4j database folder | |
files.path |
Path to the Structr file storage folder | |
log.callback.threshold |
Number of callbacks after which a transaction will be logged. | |
log.directorywatchservice.scanquietly |
Prevents logging of each scan process for every sync root processed by the storage sync service (formerly the directory watch service, the setting key is kept for compatibility) | |
log.functions.shortenstacktrace |
If true, a shortened stack trace will be logged for exceptions occurring during script evaluation. The stack trace is being cut off at the transition to the internals of GraalVM. If this is set to false, the full stacktrace is logged. | |
log.level |
Configures the default log level. Takes effect immediately. | |
log.logfunction.printcaller |
If enabled, the log() function will automatically prepend caller information (if available) to the log message. | Show detailsHide details |
log.process.visibilitymappings |
Verbose per-evaluation logging of BPMN process VisibilityMapping predicates: for each mapping, why a step div is (or is not) shown for a ProcessInstance – the context object, bound process/step, and the instance’s tasks/tokens with their bpmnIds. Off by default; VERY noisy (one block per mapping per page render). Turn on only to diagnose why a process page shows the wrong step or no step. Read in VisibilityMappingTraitDefinition. | |
log.querytime.threshold |
Milliseconds after which a long-running query will be logged. | |
log.scriptprocess.commandline |
Configures the default logging behaviour for the command line generated for script processes. This applies to the exec()- and exec_binary() functions, as well as some processes handling media conversion or processing. For the exec() and exec_binary() function, this can be overridden for each call of the function. | |
log.throttle.maxlines |
Hard ceiling on throttled log entries per window, per log site, whatever the caller varies. Needed because a flood that ROTATES its source address or user name defeats per-event counting on its own: the tracking table is bounded, so returning entries look like first offences again. Once the ceiling is reached, events are still counted and totalled at the end of the window, but not logged one by one. 0 removes the ceiling. | |
log.throttle.window |
Length of the throttling window in milliseconds for repeatable log statements. Within one window a given event is logged at most a fixed number of times, and what was suppressed is reported when the window ends. | |
scripts.path |
Path to the Structr scripts folder. IMPORTANT: Path is relative to base.path | |
scripts.path.allowpathtraversal |
Setting to true disables an additional check that disallows path traversals (.. in path). | |
scripts.path.allowsymboliclinks |
Setting to true disables an additional check that disallows symbolic links in script paths. | |
setup.token |
Token that opens the setup wizard before a superuser password exists. Empty by default: Structr then generates a token at every start and writes it to the log. Set it when the setup is automated (e.g. via STRUCTR_setup_token in a Docker environment) and no one reads the log. It has no effect once the wizard is completed. |
|
tmp.path |
Path to the temporary directory. Uses java.io.tmpdir by default |
Markdown Rendering Hint: Children of Topic(General Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
LDAP Settings
| Name | Description | |
|---|---|---|
ldap.binddn |
DN that is used to authenticate synchronization | |
ldap.connecttimeout |
Connection timeout in milliseconds | |
ldap.groupnames |
LDAP objectclass tuples for group and member identification. | |
ldap.host |
Address of the LDAP host. | |
ldap.port |
Port of the LDAP host. | |
ldap.primarykey |
Name of primary identification property of LDAP objects, must uniquely identify users and groups | |
ldap.propertymapping |
Mapping from LDAP properties to Structr properties | |
ldap.scope |
Specifies the LDAP scope. Defaults to ‘SUBTREE’ | |
ldap.secret |
Used in conjunction with bind DN to handle authentication. | |
ldap.updateinterval |
Update interval for group synchronization in seconds. | |
ldap.usessl |
Enables SSL for the LDAP connection. |
Markdown Rendering Hint: Children of Topic(LDAP Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Licensing Settings
| Name | Description | |
|---|---|---|
license.allow.fallback |
Allow Structr to fall back to the Community License if no valid license exists (or license cannot be validated). Set this to false in production environments to prevent Structr from starting without a license. | |
license.key |
Base64-encoded string that contains the complete license data, typically saved as ‘license.key’ in the main directory. | |
license.validation.timeout |
Timeout in seconds for license validation requests. |
Markdown Rendering Hint: Children of Topic(Licensing Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
MCP Settings
| Name | Description | |
|---|---|---|
mcp.oauth.clients.max |
How many MCP clients may be registered at once. Client registration is unauthenticated, as the protocol requires, so this bounds what an anonymous caller can create. Connectors that are no longer wanted can be revoked in the MCP panel under Code. | |
mcp.oauth.consent.uri |
A page of your application asking whether a connector may act as the user, e.g. /mcp-consent. It is called with mcp=true, request, client_id, client_name, user and scope, and must post request plus approve back to the authorize endpoint. Unset, a built-in page is used. The page has to genuinely ask - it is the only point where a human decides. | |
mcp.oauth.error.uri |
A page of your application to show when the MCP authorization flow fails, e.g. /mcp-error. It is called with mcp=true, error and error_description as query parameters. Unset, the error_uri of a configured OAuth provider is used, and failing that a built-in page. | |
mcp.oauth.login.uri |
A page of your application to sign the user in for MCP, e.g. /login. It is called with mcp=true, request and target as query parameters; the recommended contract is to log in with /structr/rest/login as usual and then send the browser to the target it was given. Unset, a built-in sign-in page is used. | |
mcp.oauth.registrations.perhour |
How many clients one IP address may register per hour. A connector registers once, so this only ever stops something that is not a connector. |
Markdown Rendering Hint: Children of Topic(MCP Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Mail Configuration Settings
| Name | Description | |
|---|---|---|
smtp.host |
Address of the SMTP server used to send e-mails | |
smtp.port |
SMTP server port to use when sending e-mails | |
smtp.tls.enabled |
Attempt STARTTLS encryption if the server supports it. | |
smtp.tls.required |
Require STARTTLS; fail rather than send unencrypted. |
Markdown Rendering Hint: Children of Topic(Mail Configuration Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Miscellaneous Settings
| Name | Description | |
|---|---|---|
pdf.resources.external.allowed |
Whether a page being rendered to PDF may load images, stylesheets and fonts from external URLs. Disabled by default: references are resolved against the Structr filesystem, so enabling this lets page content decide what the server requests. | |
translation.deepl.apikey |
DeepL API Key | |
translation.google.apikey |
Google Cloud Translation API Key |
Markdown Rendering Hint: Children of Topic(Miscellaneous Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
OAuth Settings
| Name | Description | |
|---|---|---|
oauth.auth0.audience |
Optional. The API audience (identifier) of your Auth0 API. Required for API access tokens. | |
oauth.auth0.authorization_location |
Required if tenant not set. Full URL of the authorization endpoint. Ignored if tenant is configured. | |
oauth.auth0.authorization_path |
Optional. Path to authorization endpoint. Only used with tenant setting. Defaults to ‘/authorize’. | |
oauth.auth0.client_id |
Required. Client ID from your Auth0 application. | |
oauth.auth0.client_secret |
Required. Client secret from your Auth0 application. | |
oauth.auth0.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.auth0.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.auth0.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/auth0/auth’. | |
oauth.auth0.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.auth0.scope |
Optional. OAuth scope. Defaults to ‘openid profile email’. | |
oauth.auth0.tenant |
Required (recommended). Auth0 tenant domain (e.g., ‘your-tenant.auth0.com’). When set, authorization_location and token_location are built automatically. | |
oauth.auth0.token_location |
Required if tenant not set. Full URL of the token endpoint. Ignored if tenant is configured. | |
oauth.auth0.token_path |
Optional. Path to token endpoint. Only used with tenant setting. Defaults to ‘/oauth/token’. | |
oauth.auth0.user_details_resource_uri |
Optional. User details endpoint. Built from tenant if not set. | |
oauth.auth0.userinfo_path |
Optional. Path to userinfo endpoint. Only used with tenant setting. Defaults to ‘/userinfo’. | |
oauth.azure.authorization_location |
Optional. URL of the authorization endpoint. Built automatically from tenant_id if not set. | |
oauth.azure.client_id |
Required. Application (client) ID from Azure AD app registration. | |
oauth.azure.client_secret |
Required. Client secret from Azure AD app registration. | |
oauth.azure.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.azure.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.azure.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/azure/auth’. | |
oauth.azure.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.azure.scope |
Optional. OAuth scope. Defaults to ‘openid profile email’. | |
oauth.azure.tenant_id |
Required. Azure AD tenant ID, or ‘common’ for multi-tenant apps, or ‘organizations’ for work accounts only. | |
oauth.azure.token_location |
Optional. URL of the token endpoint. Built automatically from tenant_id if not set. | |
oauth.azure.user_details_resource_uri |
Optional. User details endpoint. Defaults to ‘https://graph.microsoft.com/v1.0/me’. | |
oauth.facebook.authorization_location |
Optional. URL of the authorization endpoint. Uses default Facebook endpoint if not set. | |
oauth.facebook.client_id |
Required. App ID from your Facebook Developer application. | |
oauth.facebook.client_secret |
Required. App secret from your Facebook Developer application. | |
oauth.facebook.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.facebook.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.facebook.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/facebook/auth’. | |
oauth.facebook.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.facebook.scope |
Optional. OAuth scope. Defaults to ‘email’. | |
oauth.facebook.token_location |
Optional. URL of the token endpoint. Uses default Facebook endpoint if not set. | |
oauth.facebook.user_details_resource_uri |
Optional. User details endpoint. Defaults to ‘https://graph.facebook.com/me’. | |
oauth.github.authorization_location |
Optional. URL of the authorization endpoint. Uses default GitHub endpoint if not set. | |
oauth.github.client_id |
Required. Client ID from your GitHub OAuth application. | |
oauth.github.client_secret |
Required. Client secret from your GitHub OAuth application. | |
oauth.github.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.github.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.github.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/github/auth’. | |
oauth.github.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.github.scope |
Optional. OAuth scope. Defaults to ‘user:email’. | |
oauth.github.token_location |
Optional. URL of the token endpoint. Uses default GitHub endpoint if not set. | |
oauth.github.user_details_resource_uri |
Optional. User details endpoint. Defaults to ‘https://api.github.com/user’. | |
oauth.google.authorization_location |
Optional. URL of the authorization endpoint. Uses default Google endpoint if not set. | |
oauth.google.client_id |
Required. Client ID from your Google Cloud Console OAuth credentials. | |
oauth.google.client_secret |
Required. Client secret from your Google Cloud Console OAuth credentials. | |
oauth.google.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.google.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.google.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/google/auth’. | |
oauth.google.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.google.scope |
Optional. OAuth scope. Defaults to ‘email’. | |
oauth.google.token_location |
Optional. URL of the token endpoint. Uses default Google endpoint if not set. | |
oauth.google.user_details_resource_uri |
Optional. User details endpoint. Defaults to ‘https://www.googleapis.com/oauth2/v3/userinfo’. | |
oauth.keycloak.authorization_location |
Optional. URL of the authorization endpoint. Built automatically from server_url and realm if not set. | |
oauth.keycloak.client_id |
Required. Client ID from your Keycloak client configuration. | |
oauth.keycloak.client_secret |
Required. Client secret from your Keycloak client configuration. | |
oauth.keycloak.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.keycloak.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.keycloak.realm |
Required. Keycloak realm name. Defaults to ‘master’. | |
oauth.keycloak.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/keycloak/auth’. | |
oauth.keycloak.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.keycloak.scope |
Optional. OAuth scope. Defaults to ‘openid profile email’. | |
oauth.keycloak.server_url |
Required. Keycloak server URL (e.g., ‘https://keycloak.example.com’). | |
oauth.keycloak.token_location |
Optional. URL of the token endpoint. Built automatically from server_url and realm if not set. | |
oauth.keycloak.user_details_resource_uri |
Optional. User details endpoint. Built automatically from server_url and realm if not set. | |
oauth.linkedin.authorization_location |
Optional. URL of the authorization endpoint. Uses default LinkedIn endpoint if not set. | |
oauth.linkedin.client_id |
Required. Client ID from your LinkedIn OAuth application. | |
oauth.linkedin.client_secret |
Required. Client secret from your LinkedIn OAuth application. | |
oauth.linkedin.error_uri |
Optional. Redirect URI on unsuccessful authentication. Defaults to ‘/login’. | |
oauth.linkedin.logout_uri |
Optional. Logout URI. Defaults to ‘/logout’. | |
oauth.linkedin.redirect_uri |
Optional. Structr endpoint for the OAuth authorization callback. Defaults to ‘/oauth/linkedin/auth’. | |
oauth.linkedin.return_uri |
Optional. Redirect URI on successful authentication. Defaults to ‘/’. | |
oauth.linkedin.scope |
Optional. OAuth scope. Defaults to ‘openid profile email’. | |
oauth.linkedin.token_location |
Optional. URL of the token endpoint. Uses default LinkedIn endpoint if not set. | |
oauth.linkedin.user_details_resource_uri |
Optional. User details endpoint. Defaults to ‘https://api.linkedin.com/v2/userinfo’. | |
oauth.logging.verbose |
Optional. Enables verbose logging for OAuth login. Useful for debugging. | |
oauth.servers |
List of available OAuth services separated by space. Defaults to a list of all available services. |
Markdown Rendering Hint: Children of Topic(OAuth Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Rate Limiting Settings
| Name | Description | |
|---|---|---|
httpservice.accept.maxratepersecond |
Maximum number of new connections accepted per second. Beyond it accepting pauses briefly, which blunts an accept storm without affecting established connections. 0 means unlimited. | |
httpservice.connections.max |
Maximum number of simultaneous connections. Beyond it the server stops accepting new ones until connections close again; established connections are never touched. 0 means unlimited. Set this well above the number of connections normal use produces, remembering that browsers open several per user and that websockets hold one open. | |
httpservice.lowresources.enabled |
Watch for low resources (thread pool exhaustion, and memory if a limit is configured) and shed idle connections while the condition lasts. Recovers automatically when resources free up. | |
httpservice.lowresources.idletimeout |
Idle timeout in milliseconds applied to EVERY connection while resources are low, to shed idle ones. Do NOT lower this below the websocket idle timeout of 60 seconds: it applies to established connections too, so a shorter value closes the administration interface’s websocket and any server-sent-event stream. Jetty’s own default of 1000 would do exactly that. | |
httpservice.lowresources.maxmemory |
Heap usage in MB above which resources count as low. 0 watches only the thread pool and ignores memory. | |
httpservice.lowresources.stopaccepting |
Also stop accepting new connections entirely while resources are low, resuming automatically on recovery. This is a bounded, self-healing emergency brake, but while it holds no new client can connect. | |
httpservice.ratelimiting.auth.bucketsize |
How large a burst is allowed on the login and token endpoints. This MUST stay small: the burst is what an attacker gets for free before the sustained rate applies, so a large bucket here would let a hundred password guesses through at once no matter how low the rate is. Unlike page serving, signing in produces one request, not a burst, so a handful is enough to absorb retries and typos. | |
httpservice.ratelimiting.auth.maxrequestspersecond |
Sustained requests per second allowed per client on the login and token endpoints, which need a much tighter limit than page serving to slow down credential guessing. 0 disables the separate limit for those paths. | |
httpservice.ratelimiting.bucketsize |
How large a burst a client may make before the sustained rate is enforced. Larger buckets tolerate longer bursts. | |
httpservice.ratelimiting.enabled |
Main switch for rate limiting. When false, no rate limiting handler is installed. | |
httpservice.ratelimiting.excludeaddresses |
Comma-separated addresses or CIDR ranges exempt from rate limiting, e.g. 10.0.0.0/8. Defaults to loopback, which exempts requests the server makes to itself. | |
httpservice.ratelimiting.excludepaths |
Comma-separated path specs exempt from rate limiting, e.g. /structr/metrics/*. Empty means no path is exempt. | |
httpservice.ratelimiting.idletimeout |
How long (in milliseconds) an empty bucket is kept before the client is forgotten. | |
httpservice.ratelimiting.log.distinctclients |
How many DISTINCT refused addresses within the window are reported as a probable distributed flood, which per-client rate limiting cannot stop. Logged once per window. | |
httpservice.ratelimiting.log.escalateafter |
How many refused requests from one address within the window escalate the log entry from a warning to an error with full request detail. A brief overshoot stays a warning. | |
httpservice.ratelimiting.maxrequestspersecond |
Sustained requests per second allowed per client. A normal page load pulls many resources at once, so keep this generous. | |
httpservice.ratelimiting.maxtrackers |
Maximum number of clients tracked at once. Bounds the memory the limiter can use. | |
httpservice.ratelimiting.rejectdelay |
How long (in milliseconds) an over-limit request is delayed before it is rejected. 0 rejects immediately. | |
httpservice.ratelimiting.rejectqueuesize |
How many delayed requests are held at once. Requests beyond this are rejected without delay. | |
httpservice.ratelimiting.rejectstatus |
HTTP status code returned to a rejected request. 429 (too many requests) by default, 503 (service unavailable) is another option. | |
httpservice.ratelimiting.rejectuntracked |
What to do once maxtrackers clients are already being tracked, i.e. when a flood comes from more distinct addresses than can be tracked: false lets those requests through unlimited, true refuses them. Setting this to true caps the damage of a distributed flood but will also refuse legitimate clients that arrive while the table is full. |
Markdown Rendering Hint: Children of Topic(Rate Limiting Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Security Settings
| Name | Description | |
|---|---|---|
application.ssh.forcepublickey |
Force use of public key authentication for SSH connections | |
confirmationkey.passwordreset.validityperiod |
Validity period (in minutes) of the confirmation key generated when a user resets his password. Default is 30. | |
confirmationkey.registration.validityperiod |
Validity period (in minutes) of the confirmation key generated during self registration. Default is 2 days (2880 minutes) | |
confirmationkey.validwithouttimestamp |
How to interpret confirmation keys without a timestamp | |
initialuser.create |
Enables or disables the creation of an initial admin user when connecting to a database that has never been used with structr. | |
initialuser.name |
Name of the initial admin user. This will only be set if the user is created. | |
initialuser.password |
Password of the initial admin user. This will only be set if the user is created. | |
letsencrypt.challenge.type |
Challenge type for Let’s Encrypt authorization. Possible values are ‘http’ and ‘dns’. | |
letsencrypt.domain.chain.filename |
File name of the Let’s Encrypt domain chain. Default is ‘domain-chain.crt’. | |
letsencrypt.domain.csr.filename |
File name of the Let’s Encrypt CSR. Default is ‘domain.csr’. | |
letsencrypt.domain.key.filename |
File name of the Let’s Encrypt domain key. Default is ‘domain.key’. | |
letsencrypt.domains |
List of domains separated by space to fetch and update Let’s Encrypt certificates for | |
letsencrypt.key.size |
Encryption key length. Default is 2048. | |
letsencrypt.production.server.url |
URL of Let’s Encrypt server. Default is ‘acme://letsencrypt.org’ | |
letsencrypt.staging.server.url |
URL of Let’s Encrypt staging server for testing only. Default is ‘acme://letsencrypt.org/staging’. | |
letsencrypt.user.key.filename |
File name of the Let’s Encrypt user key. Default is ‘user.key’. | |
letsencrypt.wait |
Waiting time in seconds before trying to authorize challenge. | |
registration.allowloginbeforeconfirmation |
Enables self-registered users to login without clicking the activation link in the registration email. | |
registration.customuserattributes |
Attributes the registering user is allowed to provide. All other attributes are discarded. (eMail is always allowed) | |
security.authentication.propertykeys |
List of property keys separated by space in the form of
|
|
security.emailratelimit.whitelist |
Comma-separated source IPs exempt from the registration and password-reset rate limits, e.g. 127.0.0.1,::1 during development. Leave empty in production: behind a reverse proxy without forwarded-for handling, all requests can appear to come from a whitelisted IP. | |
security.jwks.admin.claim.key |
The name of the key in the JWKS response claims in whose values is searched for a value matching the value of security.jwks.admin.claim.value. | |
security.jwks.admin.claim.value |
The value that must be present in the JWKS response claims object with the key given in security.jwks.admin.claim.key in order to give the requesting user admin privileges. | |
security.jwks.audience |
Comma-separated list of accepted aud values for tokens from the JWKS provider, usually the client id of this application at that provider. Required when ‘security.jwt.secrettype’=jwks: without it, every token the provider ever issued - to any application, for any of its users - would verify here, so tokens are refused while this is empty. |
|
security.jwks.group.claim.key |
The name of the key in the JWKS response claims whose value(s) will be used to look for Group nodes with a matching jwksReferenceId. | |
security.jwks.id.claim.key |
The name of the key in the JWKS response claims whose value will be used as the ID of the temporary principal object. | |
security.jwks.name.claim.key |
The name of the key in the JWKS response claims whose value will be used as the name of the temporary principal object. | |
security.jwks.provider |
URL of the JWKS provider | |
security.jwt.audience |
Comma-separated list of audience values to bind into aud claims of JWTs issued by this instance. When non-empty, every new token carries these values in aud and verification rejects tokens whose audience does not intersect this list. When empty (default), no audience claim is emitted or verified. Enabling this invalidates all existing access and refresh tokens — plan a login flush. |
|
security.jwt.expirationtime |
Access token timeout in minutes. | |
security.jwt.jwtissuer |
The issuer for the JWTs created by this Structr instance. | |
security.jwt.key.alias |
The alias of the private key of the given ‘security.jwt.keystore’ | |
security.jwt.keystore |
Used if ‘security.jwt.secrettype’=keypair. A valid keystore file containing a private/public keypair that can be used to sign and verify JWTs | |
security.jwt.keystore.password |
The password for the given ‘security.jwt.keystore’ | |
security.jwt.refreshtoken.expirationtime |
Refresh token timeout in minutes. | |
security.jwt.secret |
Used if ‘security.jwt.secrettype’=secret. The secret that will be used to sign and verify all tokens issued and sent to Structr. Must have a min. length of 32 characters. | |
security.jwt.secrettype |
Selects the secret type that will be used to sign or verify a given access or refresh token | |
security.passwordhash.hashlength |
This setting controls the length of the Argon2id output. The unit is bytes. To get the value in bits, multiply by 8. The default value is 32 bytes (256 bits). This follows the Argon2 specification. | Show detailsHide details |
security.passwordhash.iterations |
This setting controls the number of passes of Argon2id. | Show detailsHide details |
security.passwordhash.memory |
This setting controls the memory size for Argon2id. The unit is KB. Each verification of a password uses this amount of RAM. | Show detailsHide details |
security.passwordhash.parallelism |
This setting controls the number of parallel threads for Argon2id. Higher values can decrease the time for one verification. Higher values increase the CPU load during many parallel authentication requests. | Show detailsHide details |
security.passwordhash.saltlength |
This setting controls the length of the salt value for Argon2id. The unit is bytes. To get the value in bits, multiply by 8. The default value is 16 bytes (128 bits). This follows the Argon2 specification. | Show detailsHide details |
security.passwordpolicy.complexity.enforce |
Configures if password complexity is enforced for user passwords. If active, changes which violate the complexity rules, will result in an error and must be accounted for. | |
security.passwordpolicy.complexity.minlength |
The minimum length for user passwords (only active if the enforce setting is active) | |
security.passwordpolicy.complexity.requiredigits |
Require at least one digit in user passwords (only active if the enforce setting is active) | |
security.passwordpolicy.complexity.requirelowercase |
Require at least one lower case character in user passwords (only active if the enforce setting is active) | |
security.passwordpolicy.complexity.requirenonalphanumeric |
Require at least one non alpha-numeric character in user passwords (only active if the enforce setting is active) | |
security.passwordpolicy.complexity.requireuppercase |
Require at least one upper case character in user passwords (only active if the enforce setting is active) | |
security.passwordpolicy.forcechange |
Indicates if a forced password change is active | |
security.passwordpolicy.maxage |
The number of days after which a user has to change his password | |
security.passwordpolicy.maxfailedattempts |
The maximum number of failed login attempts before a user is blocked. (Can be disabled by setting to zero or a negative number) | |
security.passwordpolicy.onchange.clearsessions |
Clear all sessions of a user on password change. | |
security.passwordpolicy.remindtime |
The number of days (before the user must change the password) where a warning should be issued. (Has to be handled in application code) | |
security.passwordpolicy.resetfailedattemptsonpasswordreset |
Configures if resetting the users password also resets the failed login attempts counter | |
security.twofactorauthentication.algorithm |
Respected by the most recent Google Authenticator implementations. Warning: Changing this setting after users are already confirmed will effectively lock them out. Set [User].twoFactorConfirmed to false to show them a new QR code. | |
security.twofactorauthentication.devicetrust.cookiename |
Name of the cookie that stores the device trust token. | Show detailsHide details |
security.twofactorauthentication.devicetrust.duration |
Trust period in days for trusted browsers. | Show detailsHide details |
security.twofactorauthentication.devicetrust.enabled |
Enables or disables users to trust the browser they are logging in with. | Show detailsHide details |
security.twofactorauthentication.devicetrust.signingsecret |
Secret key that signs device trust tokens. | Show detailsHide details |
security.twofactorauthentication.digits |
Respected by the most recent Google Authenticator implementations. Warning: Changing this setting after users are already confirmed may lock them out. Set [User].twoFactorConfirmed to false to show them a new QR code. | |
security.twofactorauthentication.issuer |
Must be URL-compliant in order to scan the created QR code | |
security.twofactorauthentication.loginpage |
The application page where the user enters the current two factor token | |
security.twofactorauthentication.logintimeout |
Defines how long the two-factor login time window in seconds is. After entering the username and password the user has this amount of time to enter a two factor token before he has to re-authenticate via password | |
security.twofactorauthentication.period |
Defines the period that a TOTP code will be valid for, in seconds.
Respected by the most recent Google Authenticator implementations. Warning: Changing this setting after users are already confirmed will effectively lock them out. Set [User].twoFactorConfirmed to false to show them a new QR code. |
|
superuser.password |
Password of the superuser | |
superuser.username |
Name of the superuser. If set to empty string, superuser access is prevented completely. |
Markdown Rendering Hint: Children of Topic(Security Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Server Settings
| Name | Description | |
|---|---|---|
access.control.accepted.origins |
Comma-separated list of accepted origins, sets the Access-Control-Allow-Origin header. |
|
access.control.allow.credentials |
Sets the value of the Access-Control-Allow-Credentials header. |
|
access.control.allow.headers |
Sets the value of the Access-Control-Allow-Headers header. |
|
access.control.allow.methods |
Sets the value of the Access-Control-Allow-Methods header. Comma-delimited list of the allowed HTTP request methods. |
|
access.control.expose.headers |
Sets the value of the Access-Control-Expose-Headers header. |
|
access.control.max.age |
Sets the value of the Access-Control-Max-Age header. Unit is seconds. |
|
application.baseurl.override |
Overrides the baseUrl that can be used to prefix links to local web resources. By default, the value is assembled from the protocol, hostname and port of the server instance Structr is running on | |
application.ftp.passiveportrange |
FTP port range for pasv mode. Needed if Structr is run in a docker container, so the port mapping can be done correctly. | |
application.ftp.port |
FTP port the Structr server will listen on (if FtpService is enabled) | |
application.host |
The listen address of the Structr server. You can set this to your domain name if that name resolves to the IP of the server the instance is running on. | |
application.http.port |
HTTP port the Structr server will listen on | |
application.https.enabled |
Whether SSL is enabled | |
application.https.port |
HTTPS port the Structr server will listen on (if SSL is enabled) | |
application.keystore.password |
The password for the keystore. It is also used as the key password. | |
application.keystore.path |
The path to the keystore (PKCS12 or JKS) containing the SSL certificate and its private key. Default value is ‘domain.key.keystore’ which fits with the default value for letsencrypt.domain.key.filename which is ‘domain.key’. The letsencrypt maintenance command writes a PKCS12 keystore to this path. | |
application.rest.path |
Defines the URL path of the Structr REST server. Should not be changed because it is hard-coded in many parts of the application. | |
application.root.path |
Root path of the application, e.g. in case Structr is being run behind a reverse proxy with additional path prefix in URI. If set, the value must start with a ‘/’ and have no trailing ‘/’. A valid value would be /xyz |
|
application.session.clear.onshutdown |
Clear all sessions on shutdown if set to true. | |
application.session.clear.onstartup |
Clear all sessions on startup if set to true. | |
application.session.max.number |
The maximum number of active sessions per user. Default is -1 (unlimited). | |
application.session.timeout |
The session timeout for inactive HTTP sessions in seconds. Default is 1800. Values lower or equal than 0 indicate that sessions never time out. | |
application.ssh.port |
SSH port the Structr server will listen on (if SSHService is enabled) | |
html.indentation |
Whether the page source should be indented (beautified) or compacted. Note: Does not work for template/content nodes which contain raw HTML | |
httpservice.async |
Whether the HttpServices uses asynchronous request handling. Disable this option if you encounter problems with HTTP responses. | |
httpservice.connection.ratelimit |
Defines the rate limit of HTTP/2 frames per connection for the HTTP Service. | |
httpservice.cookies.httponly |
Set HttpOnly to true for cookies. Please note that this will disable backend access! | |
httpservice.cookies.samesite |
Sets the SameSite attribute for the JSESSIONID cookie. For SameSite=None the Secure flag must also be set, otherwise the cookie will be rejected by the browser! | |
httpservice.cookies.secure |
Sets the secure flag for the JSESSIONID cookie, so browsers send it over HTTPS only. The session cookie is the credential, and one sent in the clear can be read off the wire and then planted back into a victim’s browser (ticket 1594). Turn it off only for an installation that deliberately serves plain HTTP - after which nobody stays logged in over HTTPS-only browsers anyway. | |
httpservice.force.https |
Enables redirecting HTTP requests from the configured HTTP port to the configured HTTPS port (only works if HTTPS is active). | |
httpservice.forwardedfor |
Take the client address from the X-Forwarded-For / Forwarded headers, for the whole server: this determines what getRemoteAddr() returns, what is logged, and which address every IP allowlist and the rate limiter sees. Enable ONLY when Structr runs behind a trusted reverse proxy that sets these headers; if clients can reach Structr directly they can forge them and claim any address. Without it, all clients behind a proxy appear as the proxy. | |
httpservice.gzip.enabled |
Use GZIP compression for HTTP transfers | |
httpservice.httpbasicauth.enabled |
Enables HTTP Basic Auth support for pages and files | |
httpservice.sni.hostcheck |
Enables SNI host check. | |
httpservice.sni.required |
Enables strict SNI check for the http service. | |
httpservice.stoptimeout |
Milliseconds Jetty waits on shutdown for open connections to drain before it closes them. The wait always elapses in full when a client holds an idle keep-alive connection, since a connector reports itself drained only once it has no endpoints left. 0 disables the graceful phase and stops immediately, which is what the test suite uses. | |
httpservice.uricompliance.allowedviolations |
These are URI “violations”, which may be allowed by the compliance mode. | Show detailsHide details |
json.indentation |
Whether JSON output should be indented (beautified) or compacted | |
maintenance.application.ftp.port |
FTP port the Structr server will listen on (if FtpService is enabled) in maintenance mode | |
maintenance.application.http.port |
HTTP port the Structr server will listen on in maintenance mode | |
maintenance.application.https.port |
HTTPS port the Structr server will listen on (if SSL is enabled) in maintenance mode | |
maintenance.application.ssh.port |
SSH port the Structr server will listen on (if SSHService is enabled) in maintenance mode | |
maintenance.enabled |
Enables maintenance mode where all ports can be changed to prevent users from accessing the application during maintenance. | |
maintenance.message |
Text for default maintenance page (HTML is allowed) | |
maintenance.resource.path |
The local folder for static resources served in maintenance mode. If no path is provided the a default maintenance page with customizable text is shown in maintenance mode. | |
ws.indentation |
Prettyprints websocket responses if set to true. |
Markdown Rendering Hint: Children of Topic(Server Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.
Servlet Settings
| Name | Description | |
|---|---|---|
configservlet.enabled |
Enables the config servlet (available under http(s)://<your-server>/structr/config) |
|
configservlet.sessionfixation.protection |
Regenerates the HTTP session ID on successful login to the ConfigServlet, so that a session ID planted in the browser before the login is worthless afterwards (session fixation). Disable only if a reverse proxy or load balancer in front of Structr cannot cope with the session cookie changing on login. | |
csvservlet.authenticator |
FQCN of Authenticator class to use for CSV output. Do not change unless you know what you are doing. | |
csvservlet.class |
Servlet class to use for CSV output. Do not change unless you know what you are doing. | |
csvservlet.defaultview |
Default view to use when no view is given in the URL | |
csvservlet.frontendaccess |
Unused | |
csvservlet.outputdepth |
Maximum nesting depth of JSON output | |
csvservlet.path |
URL pattern for CSV output. Do not change unless you know what you are doing. | |
csvservlet.resourceprovider |
FQCN of resource provider class to use in the REST server. Do not change unless you know what you are doing. | |
csvservlet.user.autocreate |
Unused | |
csvservlet.user.autologin |
Unused | |
deploymentservlet.filegroup.name |
For unix based file systems only. Adds the group ownership to the created deployment files. | |
flowservlet.defaultview |
Default view to use when no view is given in the URL. | |
flowservlet.outputdepth |
Maximum nesting depth of JSON output. | |
flowservlet.path |
The URI under which requests are accepted by the servlet. Needs to include a wildcard at the end. | |
healthcheckservlet.whitelist |
IP addresses in this list are allowed to access the health check endpoint at /structr/health. An entry can be a single address or a CIDR range such as 10.0.0.0/24, which is what a containerised instance health-checked from its bridge gateway needs. | |
histogramservlet.whitelist |
IP addresses in this list are allowed to access the query histogram endpoint at /structr/histogram. An entry can be a single address or a CIDR range such as 10.0.0.0/24. | |
htmlservlet.authenticator |
FQCN of authenticator class to use for HTTP requests. Do not change unless you know what you are doing. | |
htmlservlet.class |
FQCN of servlet class to use for HTTP requests. Do not change unless you know what you are doing. | |
htmlservlet.customresponseheaders |
List of custom response headers that will be added to every HTTP response | |
htmlservlet.defaultview |
Not used for HtmlServlet | |
htmlservlet.outputdepth |
Not used for HtmlServlet | |
htmlservlet.path |
URL pattern for HTTP server. Do not change unless you know what you are doing. | |
htmlservlet.resolveproperties |
Space-separated list of properties that are tried to find the ‘current’ object (restart of HttpService required). | |
htmlservlet.resourceprovider |
FQCN of resource provider class to use in the HTTP server. Do not change unless you know what you are doing. | |
httpservice.servlets |
Servlets that are listed in this configuration key will be available in the HttpService. Changes to this setting require a restart of the HttpService in the ‘Services’ tab. | |
jsonrestservlet.authenticator |
FQCN of authenticator class to use in the REST server. Do not change unless you know what you are doing. | |
jsonrestservlet.class |
FQCN of servlet class to use in the REST server. Do not change unless you know what you are doing. | |
jsonrestservlet.defaultview |
Default view to use when no view is given in the URL | |
jsonrestservlet.outputdepth |
Maximum nesting depth of JSON output | |
jsonrestservlet.path |
URL pattern for REST server. Do not change unless you know what you are doing. | |
jsonrestservlet.resourceprovider |
FQCN of resource provider class to use in the REST server. Do not change unless you know what you are doing. | |
jsonrestservlet.unknowninput.validation.mode |
Controls how Structr reacts to unknown keys in JSON input. accept allows the unknown key to be written. ignore removes the key. reject rejects the complete request. The warn options behave identical but also log a warning. |
|
jsonrestservlet.user.autocreate |
Enable this to support user self registration | |
jsonrestservlet.user.autologin |
Only works in conjunction with the jsonrestservlet.user.autocreate key. Will log in user after self registration. | |
loginservlet.defaultview |
Default view to use when no view is given in the URL. | |
loginservlet.outputdepth |
Maximum nesting depth of JSON output. | |
loginservlet.path |
The URI under which requests are accepted by the servlet. Needs to include a wildcard at the end. | |
logoutservlet.defaultview |
Default view to use when no view is given in the URL. | |
logoutservlet.outputdepth |
Maximum nesting depth of JSON output. | |
logoutservlet.path |
The URI under which requests are accepted by the servlet. Needs to include a wildcard at the end. | |
mcpauthorizationservermetadataservlet.authenticator |
The authenticator for the McpAuthorizationServerMetadataServlet. Internal wiring, not a setting. | |
mcpauthorizationservermetadataservlet.class |
The class implementing the McpAuthorizationServerMetadataServlet. Internal wiring, not a setting. | |
mcpauthorizationservermetadataservlet.defaultview |
Unused by the McpAuthorizationServerMetadataServlet, which serves no property views. | |
mcpauthorizationservermetadataservlet.outputdepth |
Unused by the McpAuthorizationServerMetadataServlet, which does not serialize graph objects. | |
mcpauthorizationservermetadataservlet.path |
Where the McpAuthorizationServerMetadataServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcpauthorizeservlet.authenticator |
The authenticator for the McpAuthorizeServlet. Internal wiring, not a setting. | |
mcpauthorizeservlet.class |
The class implementing the McpAuthorizeServlet. Internal wiring, not a setting. | |
mcpauthorizeservlet.defaultview |
Unused by the McpAuthorizeServlet, which serves no property views. | |
mcpauthorizeservlet.outputdepth |
Unused by the McpAuthorizeServlet, which does not serialize graph objects. | |
mcpauthorizeservlet.path |
Where the McpAuthorizeServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcpclientregistrationservlet.authenticator |
The authenticator for the McpClientRegistrationServlet. Internal wiring, not a setting. | |
mcpclientregistrationservlet.class |
The class implementing the McpClientRegistrationServlet. Internal wiring, not a setting. | |
mcpclientregistrationservlet.defaultview |
Unused by the McpClientRegistrationServlet, which serves no property views. | |
mcpclientregistrationservlet.outputdepth |
Unused by the McpClientRegistrationServlet, which does not serialize graph objects. | |
mcpclientregistrationservlet.path |
Where the McpClientRegistrationServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcpopenidconfigurationservlet.authenticator |
The authenticator for the McpOpenIdConfigurationServlet. Internal wiring, not a setting. | |
mcpopenidconfigurationservlet.class |
The class implementing the McpOpenIdConfigurationServlet. Internal wiring, not a setting. | |
mcpopenidconfigurationservlet.defaultview |
Unused by the McpOpenIdConfigurationServlet, which serves no property views. | |
mcpopenidconfigurationservlet.outputdepth |
Unused by the McpOpenIdConfigurationServlet, which does not serialize graph objects. | |
mcpopenidconfigurationservlet.path |
Where the McpOpenIdConfigurationServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcpprotectedresourcemetadataservlet.authenticator |
The authenticator for the McpProtectedResourceMetadataServlet. Internal wiring, not a setting. | |
mcpprotectedresourcemetadataservlet.class |
The class implementing the McpProtectedResourceMetadataServlet. Internal wiring, not a setting. | |
mcpprotectedresourcemetadataservlet.defaultview |
Unused by the McpProtectedResourceMetadataServlet, which serves no property views. | |
mcpprotectedresourcemetadataservlet.outputdepth |
Unused by the McpProtectedResourceMetadataServlet, which does not serialize graph objects. | |
mcpprotectedresourcemetadataservlet.path |
Where the McpProtectedResourceMetadataServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcpservlet.authenticator |
The authenticator for the MCPServlet. Internal wiring, not a setting. | |
mcpservlet.class |
The class implementing the MCPServlet. Internal wiring, not a setting. | |
mcpservlet.defaultview |
Unused by the MCPServlet, which serves no property views. | |
mcpservlet.outputdepth |
Unused by the MCPServlet, which does not serialize graph objects. | |
mcpservlet.path |
Where the MCPServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
mcptokenendpointservlet.authenticator |
The authenticator for the McpTokenEndpointServlet. Internal wiring, not a setting. | |
mcptokenendpointservlet.class |
The class implementing the McpTokenEndpointServlet. Internal wiring, not a setting. | |
mcptokenendpointservlet.defaultview |
Unused by the McpTokenEndpointServlet, which serves no property views. | |
mcptokenendpointservlet.outputdepth |
Unused by the McpTokenEndpointServlet, which does not serialize graph objects. | |
mcptokenendpointservlet.path |
Where the McpTokenEndpointServlet is mounted. Advertised in the MCP and OAuth discovery documents, which clients cache, so moving it invalidates existing connectors. | |
metricsservlet.whitelist |
Comma-separated list of IP addresses that are allowed to access the metrics endpoint at /structr/metrics. An entry can be a single address or a CIDR range such as 10.0.0.0/24. | |
openapiservlet.server.title |
The main title of the OpenAPI server definition. | |
openapiservlet.server.version |
The version number of the OpenAPI definition | |
pdfservlet.customresponseheaders |
List of custom response headers that will be added to every HTTP response | |
pdfservlet.defaultview |
Default view to use when no view is given in the URL. | |
pdfservlet.outputdepth |
Maximum nesting depth of JSON output. | |
pdfservlet.path |
The URI under which requests are accepted by the servlet. Needs to include a wildcard at the end. | |
pdfservlet.resolveproperties |
Space-separated list of properties that are tried to find the ‘current’ object (restart of HttpService required). | |
tokenservlet.defaultview |
Default view to use when no view is given in the URL. | |
tokenservlet.outputdepth |
Maximum nesting depth of JSON output. | |
tokenservlet.path |
The URI under which requests are accepted by the servlet. Needs to include a wildcard at the end. | |
uploadservlet.allowanonymousuploads |
Allows anonymous users to upload files. | |
uploadservlet.authenticator |
FQCN of authenticator class to use for file upload. Do not change unless you know what you are doing. | |
uploadservlet.class |
FQCN of servlet class to use for file upload. Do not change unless you know what you are doing. | |
uploadservlet.defaultview |
Default view to use when no view is given in the URL | |
uploadservlet.maxfilesize |
Maximum allowed file size for single file uploads. Unit is Megabytes | |
uploadservlet.maxrequestsize |
Maximum allowed request size for single file uploads. Unit is Megabytes | |
uploadservlet.outputdepth |
Maximum nesting depth of JSON output | |
uploadservlet.path |
URL pattern for file upload. Do not change unless you know what you are doing. | |
uploadservlet.resourceprovider |
FQCN of resource provider class to use for file upload. Do not change unless you know what you are doing. | |
uploadservlet.user.autocreate |
Unused | |
uploadservlet.user.autologin |
Unused | |
websocketservlet.authenticator |
FQCN of authenticator class to use for WebSockets. Do not change unless you know what you are doing. | |
websocketservlet.defaultview |
Unused | |
websocketservlet.outputdepth |
Maximum nesting depth of JSON output | |
websocketservlet.path |
URL pattern for WebSockets. Do not change unless you know what you are doing. | |
websocketservlet.resourceprovider |
FQCN of resource provider class to use with WebSockets. Do not change unless you know what you are doing. | |
websocketservlet.user.autocreate |
Unused | |
websocketservlet.user.autologin |
Unused |
Markdown Rendering Hint: Children of Topic(Servlet Settings) not rendered because MarkdownTableWithDetailsFormatter prevents rendering of children.