Configuration parameters
The parameters are grouped by system components. The list contains the name (address in tb-edge.yml file), environment variable, default value and description.
- Configuration parameters
- Server common parameters
- Cloud configuration
- Application info parameters
- Zookeeper connection parameters
- Cluster parameters
- Plugins configuration parameters
- Security parameters
- Mail settings parameters
- Usage statistics parameters
- UI settings parameters
- Database telemetry parameters
- SQL configuration parameters
- Actor system parameters
- Cache settings parameters
- Spring data parameters
- Redis configuration parameters
- Update version parameters
- Spring CORS configuration parameters
- General spring parameters
- SQL DAO Configuration parameters
- Audit log parameters
- Device state parameters
- Tbel parameters
- JS parameters
- Transport configuration parameters
- CoAP server parameters
- Device connectivity parameters
- Edges parameters
- Spring doc common parameters
- Swagger common parameters
- Queue configuration parameters
- Event configuration parameters
- General service parameters
- Metrics parameters
- Version control parameters
- Notification system parameters
- General management parameters
- Mobile application settings for Thingsboard mobile application
Server common parameters
Parameter | Environment Variable | Default Value | Description |
server.address | HTTP_BIND_ADDRESS | 0.0.0.0 | Server bind-address |
server.port | HTTP_BIND_PORT | 8080 | Server bind port |
server.forward_headers_strategy | HTTP_FORWARD_HEADERS_STRATEGY | framework | Server forward headers strategy. Required for SWAGGER UI when reverse proxy is used |
server.ssl.enabled | SSL_ENABLED | false | Enable/disable SSL support |
server.ssl.credentials.type | SSL_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
server.ssl.credentials.pem.cert_file | SSL_PEM_CERT | server.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
server.ssl.credentials.pem.key_file | SSL_PEM_KEY | server_key.pem | Path to the server certificate private key file (optional). Required if the private key is not present in the server certificate file |
server.ssl.credentials.pem.key_password | SSL_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
server.ssl.credentials.keystore.type | SSL_KEY_STORE_TYPE | PKCS12 | Type of the key store (JKS or PKCS12) |
server.ssl.credentials.keystore.store_file | SSL_KEY_STORE | classpath:keystore/keystore.p12 | Path to the key store that holds the SSL certificate |
server.ssl.credentials.keystore.store_password | SSL_KEY_STORE_PASSWORD | thingsboard | Password used to access the key store |
server.ssl.credentials.keystore.key_alias | SSL_KEY_ALIAS | tomcat | Key alias |
server.ssl.credentials.keystore.key_password | SSL_KEY_PASSWORD | thingsboard | Password used to access the key |
server.http.max_payload_size | HTTP_MAX_PAYLOAD_SIZE_LIMIT_CONFIGURATION | /api/image*/**=52428800;/api/resource/**=52428800;/api/**=16777216 | Semi-colon-separated list of urlPattern=maxPayloadSize pairs that define max http request size for specified url pattern. After first match all other will be skipped |
server.http2.enabled | HTTP2_ENABLED | true | Enable/disable HTTP/2 support |
server.log_controller_error_stack_trace | HTTP_LOG_CONTROLLER_ERROR_STACK_TRACE | false | Log errors with stacktrace when REST API throws an exception with the message "Please contact sysadmin" |
server.ws.send_timeout | TB_SERVER_WS_SEND_TIMEOUT | 5000 | Timeout for sending data to client WebSocket session in milliseconds |
server.ws.ping_timeout | TB_SERVER_WS_PING_TIMEOUT | 30000 | recommended timeout >= 30 seconds. The platform will attempt to send a 'ping' request 3 times within the timeout |
server.ws.dynamic_page_link.refresh_interval | TB_SERVER_WS_DYNAMIC_PAGE_LINK_REFRESH_INTERVAL_SEC | 60 | Refresh rate of the dynamic alarm end entity data queries |
server.ws.dynamic_page_link.refresh_pool_size | TB_SERVER_WS_DYNAMIC_PAGE_LINK_REFRESH_POOL_SIZE | 1 | Thread pool size to execute dynamic queries |
server.ws.dynamic_page_link.max_alarm_queries_per_refresh_interval | TB_SERVER_WS_MAX_ALARM_QUERIES_PER_REFRESH_INTERVAL | 10 | Maximum number of dynamic queries per refresh interval. For example, no more than 10 alarm queries are executed by the user simultaneously in all browsers. |
server.ws.dynamic_page_link.max_per_user | TB_SERVER_WS_DYNAMIC_PAGE_LINK_MAX_PER_USER | 10 | Maximum number of dynamic queries per user. For example, no more than 10 alarm widgets opened by the user simultaneously in all browsers |
server.ws.max_entities_per_data_subscription | TB_SERVER_WS_MAX_ENTITIES_PER_DATA_SUBSCRIPTION | 10000 | Maximum number of entities returned for single entity subscription. For example, no more than 10,000 entities on the map widget |
server.ws.max_entities_per_alarm_subscription | TB_SERVER_WS_MAX_ENTITIES_PER_ALARM_SUBSCRIPTION | 10000 | Maximum number of alarms returned for single alarm subscription. For example, no more than 10,000 alarms on the alarm widget |
server.ws.max_queue_messages_per_session | TB_SERVER_WS_DEFAULT_QUEUE_MESSAGES_PER_SESSION | 1000 | Maximum queue size of the websocket updates per session. This restriction prevents infinite updates of WS |
server.ws.auth_timeout_ms | TB_SERVER_WS_AUTH_TIMEOUT_MS | 10000 | Maximum time between WS session opening and sending auth command |
server.ws.rate_limits.subscriptions_per_tenant | TB_SERVER_WS_SUBSCRIPTIONS_PER_TENANT_RATE_LIMIT | Per-tenant rate limit for WS subscriptions | |
server.ws.rate_limits.subscriptions_per_user | TB_SERVER_WS_SUBSCRIPTIONS_PER_USER_RATE_LIMIT | Per-user rate limit for WS subscriptions | |
server.rest.server_side_rpc.min_timeout | MIN_SERVER_SIDE_RPC_TIMEOUT | 5000 | Minimum value of the server-side RPC timeout. May override value provided in the REST API call. Since 2.5 migration to queues, the RPC delay depends on the size of the pending messages in the queue. So default UI parameter of 500ms may not be sufficient for loaded environments. |
server.rest.server_side_rpc.default_timeout | DEFAULT_SERVER_SIDE_RPC_TIMEOUT | 10000 | Default value of the server-side RPC timeout. |
server.rest.rate_limits.reset_password_per_user | RESET_PASSWORD_PER_USER_RATE_LIMIT_CONFIGURATION | 5:3600 | Limit that prohibits resetting the password for the user too often. The value of the rate limit. By default, no more than 5 requests per hour |
Cloud configuration
Parameter | Environment Variable | Default Value | Description |
cloud.routingKey | CLOUD_ROUTING_KEY | Routing key for edge instance, typically a UUID | |
cloud.secret | CLOUD_ROUTING_SECRET | Secret key for secure communication with the cloud | |
cloud.reconnect_timeout | CLOUD_RECONNECT_TIMEOUT | 3000 | Reconnection timeout in milliseconds if cloud connectivity is lost |
cloud.uplink_pack_timeout_sec | CLOUD_UPLINK_PACK_TIMEOUT_SEC | 60 | Timeout in seconds for packaging uplink data to the cloud |
cloud.rpc.host | CLOUD_RPC_HOST | localhost | Hostname or IP of the ThingsBoard platform, e.g. thingsboard.cloud, demo.thingsboard.io, X.X.X.X or localhost |
cloud.rpc.port | CLOUD_RPC_PORT | 7070 | Port for RPC communication with the ThingsBoard server |
cloud.rpc.timeout | CLOUD_RPC_TIMEOUT | 5 | Timeout in seconds for terminating an RPC channel |
cloud.rpc.keep_alive_time_sec | CLOUD_RPC_KEEP_ALIVE_TIME_SEC | 10 | Specifies the amount of time in seconds the client waits in idle (with no read operations on the connection) before sending a keepalive ping to the server. This setting is crucial for ensuring that the connection remains alive during periods of inactivity and helps prevent the server from closing the connection due to a timeout. It's used to probe the server periodically to check if it is still responsive and maintain the connection through potential network devices that might drop inactive connections (like NATs and load balancers). |
cloud.rpc.keep_alive_timeout_sec | CLOUD_RPC_KEEP_ALIVE_TIMEOUT_SEC | 5 | Specifies how long the client will wait for a response to its keepalive ping. If the ping isn't acknowledged within this timeframe, the client assumes the connection is dead or unreachable. This timeout is essential for detecting when the server side might have issues or when there might be network failures preventing communication. If the server does not respond to a keepalive ping within this period, the client will consider the connection as lost and may attempt to reconnect or take other recovery actions. |
cloud.rpc.ssl.enabled | CLOUD_RPC_SSL_ENABLED | false | Enables TLS for secure communication |
cloud.rpc.ssl.cert | CLOUD_RPC_SSL_CERT | Path to the TLS certificate for secure communication | |
cloud.rpc.storage.max_read_records_count | CLOUD_RPC_STORAGE_MAX_READ_RECORDS_COUNT | 50 | Maximum number of cloud event records to read from the local DB for sending |
cloud.rpc.storage.no_read_records_sleep | CLOUD_RPC_NO_READ_RECORDS_SLEEP | 1000 | Interval in milliseconds to check for new cloud events in the local DB |
cloud.rpc.storage.sleep_between_batches | CLOUD_RPC_SLEEP_BETWEEN_BATCHES | 1000 | Interval in milliseconds to retry sending a failed batch of cloud events |
cloud.rpc.max_inbound_message_size | CLOUD_RPC_MAX_INBOUND_MESSAGE_SIZE | 4194304 | Maximum size in bytes of inbound messages from the cloud |
cloud.rpc.proxy.enabled | CLOUD_RPC_PROXY_ENABLED | false | Enable or disable the use of a proxy server |
cloud.rpc.proxy.host | CLOUD_RPC_PROXY_HOST | Hostname or IP of the proxy server | |
cloud.rpc.proxy.port | CLOUD_RPC_PROXY_PORT | 0 | Port number of the proxy server |
cloud.rpc.proxy.username | CLOUD_RPC_PROXY_USERNAME | Username for proxy server authentication | |
cloud.rpc.proxy.password | CLOUD_RPC_PROXY_PASSWORD | Password for proxy server authentication |
Application info parameters
Parameter | Environment Variable | Default Value | Description |
app.version | "@project.version@" | Application version |
Zookeeper connection parameters
Parameter | Environment Variable | Default Value | Description |
zk.enabled | ZOOKEEPER_ENABLED | false | Enable/disable zookeeper discovery service. |
zk.url | ZOOKEEPER_URL | localhost:2181 | Zookeeper connect string |
zk.retry_interval_ms | ZOOKEEPER_RETRY_INTERVAL_MS | 3000 | Zookeeper retry interval in milliseconds |
zk.connection_timeout_ms | ZOOKEEPER_CONNECTION_TIMEOUT_MS | 3000 | Zookeeper connection timeout in milliseconds |
zk.session_timeout_ms | ZOOKEEPER_SESSION_TIMEOUT_MS | 3000 | Zookeeper session timeout in milliseconds |
zk.zk_dir | ZOOKEEPER_NODES_DIR | /thingsboard | Name of the directory in zookeeper 'filesystem' |
zk.recalculate_delay | ZOOKEEPER_RECALCULATE_DELAY_MS | 0 | The recalculate_delay property is recommended in a microservices architecture setup for rule-engine services. This property provides a pause to ensure that when a rule-engine service is restarted, other nodes don't immediately attempt to recalculate their partitions. The delay is recommended because the initialization of rule chain actors is time-consuming. Avoiding unnecessary recalculations during a restart can enhance system performance and stability. |
Cluster parameters
Parameter | Environment Variable | Default Value | Description |
cluster.stats.enabled | TB_CLUSTER_STATS_ENABLED | false | Enable/Disable the cluster statistics. Calculates the number of messages sent between cluster nodes based on each type |
cluster.stats.print_interval_ms | TB_CLUSTER_STATS_PRINT_INTERVAL_MS | 10000 | Interval of printing the cluster stats to the log file |
Plugins configuration parameters
Parameter | Environment Variable | Default Value | Description |
plugins.scan_packages | PLUGINS_SCAN_PACKAGES | org.thingsboard.server.extensions,org.thingsboard.rule.engine | Comma-separated package list used during classpath scanning for plugins |
Security parameters
Parameter | Environment Variable | Default Value | Description |
security.jwt.tokenExpirationTime | JWT_TOKEN_EXPIRATION_TIME | 9000 | Number of seconds (2.5 hours) |
security.jwt.refreshTokenExpTime | JWT_REFRESH_TOKEN_EXPIRATION_TIME | 604800 | Number of seconds (1 week). |
security.jwt.tokenIssuer | JWT_TOKEN_ISSUER | thingsboard.io | User JWT Token issuer |
security.jwt.tokenSigningKey | JWT_TOKEN_SIGNING_KEY | thingsboardDefaultSigningKey | Base64 encoded |
security.user_token_access_enabled | SECURITY_USER_TOKEN_ACCESS_ENABLED | true | Enable/disable access to Tenant Administrators JWT token by System Administrator or Customer Users JWT token by Tenant Administrator |
security.user_login_case_sensitive | SECURITY_USER_LOGIN_CASE_SENSITIVE | true | Enable/disable case-sensitive username login |
security.claim.allowClaimingByDefault | SECURITY_CLAIM_ALLOW_CLAIMING_BY_DEFAULT | true | Enable/disable claiming devices; if false -> the device's [claimingAllowed] SERVER_SCOPE attribute must be set to [true] to allow claiming the specific device |
security.claim.duration | SECURITY_CLAIM_DURATION | 86400000 | 1 minute, note this value must equal claimDevices.timeToLiveInMinutes value |
security.basic.enabled | SECURITY_BASIC_ENABLED | false | Enable/Disable basic security options |
security.oauth2.loginProcessingUrl | SECURITY_OAUTH2_LOGIN_PROCESSING_URL | /login/oauth2/code/ | Redirect URL where access code from external user management system will be processed |
security.oauth2.githubMapper.emailUrl | SECURITY_OAUTH2_GITHUB_MAPPER_EMAIL_URL_KEY | https://api.github.com/user/emails | The email addresses that will be mapped from the URL |
security.java_cacerts.path | SECURITY_JAVA_CACERTS_PATH | ${java.home}/lib/security/cacerts | CA certificates keystore default path. Typically this keystore is at JAVA_HOME/lib/security/cacerts |
security.java_cacerts.password | SECURITY_JAVA_CACERTS_PASSWORD | changeit | The password of the cacerts keystore file |
Mail settings parameters
Parameter | Environment Variable | Default Value | Description |
mail.oauth2.refreshTokenCheckingInterval | REFRESH_TOKEN_EXPIRATION_CHECKING_INTERVAL | 86400 | Interval for checking refresh token expiration in seconds(by default, 1 day). |
mail.per_tenant_rate_limits | MAIL_PER_TENANT_RATE_LIMITS | Rate limits for sending mails per tenant. As example for 1000 per minute and 10000 per hour is "1000:60,10000:3600" |
Usage statistics parameters
Parameter | Environment Variable | Default Value | Description |
usage.stats.report.enabled | USAGE_STATS_REPORT_ENABLED | true | Enable/Disable the collection of API usage statistics. Collected on a system and tenant level by default |
usage.stats.report.enabled_per_customer | USAGE_STATS_REPORT_PER_CUSTOMER_ENABLED | false | Enable/Disable the collection of API usage statistics on a customer level |
usage.stats.report.interval | USAGE_STATS_REPORT_INTERVAL | 10 | Statistics reporting interval, set to send summarized data every 10 seconds by default |
usage.stats.check.cycle | USAGE_STATS_CHECK_CYCLE | 60000 | Interval of checking the start of the next cycle and re-enabling the blocked tenants/customers |
usage.stats.gauge_report_interval | USAGE_STATS_GAUGE_REPORT_INTERVAL | 180000 | In milliseconds. The default value is 3 minutes |
usage.stats.devices.report_interval | DEVICES_STATS_REPORT_INTERVAL | 60 | In seconds, the default value is 1 minute. When changing, in cluster mode, make sure usage.stats.gauge_report_interval is set to x2-x3 of this value |
UI settings parameters
Parameter | Environment Variable | Default Value | Description |
ui.dashboard.max_datapoints_limit | DASHBOARD_MAX_DATAPOINTS_LIMIT | 50000 | Maximum allowed datapoints fetched by widgets |
ui.help.base-url | UI_HELP_BASE_URL | https://raw.githubusercontent.com/thingsboard/thingsboard-ui-help/release-3.8 | Base URL for UI help assets |
Database telemetry parameters
Parameter | Environment Variable | Default Value | Description |
database.ts_max_intervals | DATABASE_TS_MAX_INTERVALS | 700 | Max number of DB queries generated by a single API call to fetch telemetry records |
database.ts.type | DATABASE_TS_TYPE | sql | sql or timescale (for hybrid mode, DATABASE_TS_TYPE value should be timescale) |
database.ts_latest.type | DATABASE_TS_LATEST_TYPE | sql | sql or timescale (for hybrid mode, DATABASE_TS_TYPE value should be timescale) |
SQL configuration parameters
Parameter | Environment Variable | Default Value | Description |
sql.attributes.batch_size | SQL_ATTRIBUTES_BATCH_SIZE | 1000 | Batch size for persisting attribute updates |
sql.attributes.batch_max_delay | SQL_ATTRIBUTES_BATCH_MAX_DELAY_MS | 50 | Max timeout for attributes entries queue polling. The value is set in milliseconds |
sql.attributes.stats_print_interval_ms | SQL_ATTRIBUTES_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing attributes updates statistic |
sql.attributes.batch_threads | SQL_ATTRIBUTES_BATCH_THREADS | 3 | batch thread count has to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.attributes.value_no_xss_validation | SQL_ATTRIBUTES_VALUE_NO_XSS_VALIDATION | false | If true attribute values will be checked for XSS vulnerability |
sql.ts.batch_size | SQL_TS_BATCH_SIZE | 10000 | Batch size for persisting timeseries inserts |
sql.ts.batch_max_delay | SQL_TS_BATCH_MAX_DELAY_MS | 100 | Max timeout for time-series entries queue polling. The value set in milliseconds |
sql.ts.stats_print_interval_ms | SQL_TS_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing timeseries insert statistic |
sql.ts.batch_threads | SQL_TS_BATCH_THREADS | 3 | batch thread count has to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.ts.value_no_xss_validation | SQL_TS_VALUE_NO_XSS_VALIDATION | false | If true telemetry values will be checked for XSS vulnerability |
sql.ts_latest.batch_size | SQL_TS_LATEST_BATCH_SIZE | 1000 | Batch size for persisting latest telemetry updates |
sql.ts_latest.batch_max_delay | SQL_TS_LATEST_BATCH_MAX_DELAY_MS | 50 | Maximum timeout for latest telemetry entries queue polling. The value set in milliseconds |
sql.ts_latest.stats_print_interval_ms | SQL_TS_LATEST_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing latest telemetry updates statistic |
sql.ts_latest.batch_threads | SQL_TS_LATEST_BATCH_THREADS | 3 | batch thread count has to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.ts_latest.update_by_latest_ts | SQL_TS_UPDATE_BY_LATEST_TIMESTAMP | true | Update latest values only if the timestamp of the new record is greater or equals the timestamp of the previously saved latest value. The latest values are stored separately from historical values for fast lookup from DB. Insert of historical value happens in any case |
sql.events.batch_size | SQL_EVENTS_BATCH_SIZE | 10000 | Batch size for persisting events inserts |
sql.events.batch_max_delay | SQL_EVENTS_BATCH_MAX_DELAY_MS | 100 | Max timeout for events entries queue polling. The value set in milliseconds |
sql.events.stats_print_interval_ms | SQL_EVENTS_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing events insert statistic |
sql.events.batch_threads | SQL_EVENTS_BATCH_THREADS | 3 | batch thread count has to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.events.partition_size | SQL_EVENTS_REGULAR_PARTITION_SIZE_HOURS | 168 | Number of hours to partition the events. The current value corresponds to one week. |
sql.events.debug_partition_size | SQL_EVENTS_DEBUG_PARTITION_SIZE_HOURS | 1 | Number of hours to partition the debug events. The current value corresponds to one hour. |
sql.edge_events.batch_size | SQL_EDGE_EVENTS_BATCH_SIZE | 1000 | Batch size for persisting edge events inserts |
sql.edge_events.batch_max_delay | SQL_EDGE_EVENTS_BATCH_MAX_DELAY_MS | 100 | Max timeout for edge events entries queue polling. The value set in milliseconds |
sql.edge_events.stats_print_interval_ms | SQL_EDGE_EVENTS_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing edge events insert statistic |
sql.edge_events.partition_size | SQL_EDGE_EVENTS_PARTITION_SIZE_HOURS | 168 | Number of hours to partition the edge events. The current value corresponds to one week. |
sql.audit_logs.partition_size | SQL_AUDIT_LOGS_PARTITION_SIZE_HOURS | 168 | Default value - 1 week |
sql.cloud_events.batch_size | SQL_CLOUD_EVENTS_BATCH_SIZE | 1000 | Batch size for persisting cloud events inserts |
sql.cloud_events.batch_max_delay | SQL_CLOUD_EVENTS_BATCH_MAX_DELAY_MS | 100 | Max timeout for cloud events entries queue polling. The value set in milliseconds |
sql.cloud_events.stats_print_interval_ms | SQL_CLOUD_EVENTS_BATCH_STATS_PRINT_MS | 10000 | Interval in milliseconds for printing cloud events insert statistic |
sql.cloud_events.partition_size | SQL_CLOUD_EVENTS_PARTITION_SIZE_HOURS | 24 | Number of hours to partition the cloud events. The current value corresponds to one week. |
sql.alarm_comments.partition_size | SQL_ALARM_COMMENTS_PARTITION_SIZE_HOURS | 168 | Default value - 1 week |
sql.notifications.partition_size | SQL_NOTIFICATIONS_PARTITION_SIZE_HOURS | 168 | Default value - 1 week |
sql.batch_sort | SQL_BATCH_SORT | true | Specify whether to sort entities before batch update. Should be enabled for cluster mode to avoid deadlocks |
sql.remove_null_chars | SQL_REMOVE_NULL_CHARS | true | Specify whether to remove null characters from strValue of attributes and timeseries before insert |
sql.log_queries | SQL_LOG_QUERIES | false | Specify whether to log database queries and their parameters generated by the entity query repository |
sql.log_queries_threshold | SQL_LOG_QUERIES_THRESHOLD | 5000 | Threshold of slow SQL queries to log. The value set in milliseconds |
sql.log_tenant_stats | SQL_LOG_TENANT_STATS | true | Enable/Disable logging statistic information about tenants |
sql.log_tenant_stats_interval_ms | SQL_LOG_TENANT_STATS_INTERVAL_MS | 60000 | Interval in milliseconds for printing the latest statistic information about the tenant |
sql.postgres.ts_key_value_partitioning | SQL_POSTGRES_TS_KV_PARTITIONING | MONTHS | Specify partitioning size for timestamp key-value storage. Example: DAYS, MONTHS, YEARS, INDEFINITE. |
sql.timescale.chunk_time_interval | SQL_TIMESCALE_CHUNK_TIME_INTERVAL | 604800000 | Specify Interval size for new data chunks storage. |
sql.timescale.batch_threads | SQL_TIMESCALE_BATCH_THREADS | 3 | batch thread count has to be a prime number like 3 or 5 to gain perfect hash distribution |
sql.ttl.ts.enabled | SQL_TTL_TS_ENABLED | true | Enable/disable TTL (Time To Live) for timeseries records |
sql.ttl.ts.execution_interval_ms | SQL_TTL_TS_EXECUTION_INTERVAL | 86400000 | Number of milliseconds. The current value corresponds to one day |
sql.ttl.ts.ts_key_value_ttl | SQL_TTL_TS_TS_KEY_VALUE_TTL | 0 | The parameter to specify system TTL(Time To Live) value for timeseries records. Value set in seconds. 0 - records are never expired. |
sql.ttl.events.enabled | SQL_TTL_EVENTS_ENABLED | true | Enable/disable TTL (Time To Live) for event records |
sql.ttl.events.execution_interval_ms | SQL_TTL_EVENTS_EXECUTION_INTERVAL | 3600000 | Number of milliseconds (max random initial delay and fixed period). |
sql.ttl.events.events_ttl | SQL_TTL_EVENTS_EVENTS_TTL | 0 | Number of seconds. TTL is disabled by default. The accuracy of the cleanup depends on the sql.events.partition_size parameter. |
sql.ttl.events.debug_events_ttl | SQL_TTL_EVENTS_DEBUG_EVENTS_TTL | 604800 | Number of seconds. The current value corresponds to one week. The accuracy of the cleanup depends on the sql.events.debug_partition_size parameter. |
sql.ttl.edge_events.enabled | SQL_TTL_EDGE_EVENTS_ENABLED | true | Enable/disable TTL (Time To Live) for edge event records |
sql.ttl.edge_events.execution_interval_ms | SQL_TTL_EDGE_EVENTS_EXECUTION_INTERVAL | 86400000 | Number of milliseconds. The current value corresponds to one day |
sql.ttl.edge_events.edge_events_ttl | SQL_TTL_EDGE_EVENTS_TTL | 2628000 | Number of seconds. The current value corresponds to one month |
sql.ttl.alarms.checking_interval | SQL_ALARMS_TTL_CHECKING_INTERVAL | 7200000 | Number of milliseconds. The current value corresponds to two hours |
sql.ttl.alarms.removal_batch_size | SQL_ALARMS_TTL_REMOVAL_BATCH_SIZE | 3000 | To delete outdated alarms not all at once but in batches |
sql.ttl.rpc.enabled | SQL_TTL_RPC_ENABLED | true | Enable/disable TTL (Time To Live) for rpc call records |
sql.ttl.rpc.checking_interval | SQL_RPC_TTL_CHECKING_INTERVAL | 7200000 | Number of milliseconds. The current value corresponds to two hours |
sql.ttl.audit_logs.enabled | SQL_TTL_AUDIT_LOGS_ENABLED | true | Enable/disable TTL (Time To Live) for audit log records |
sql.ttl.audit_logs.ttl | SQL_TTL_AUDIT_LOGS_SECS | 0 | Disabled by default. The accuracy of the cleanup depends on the sql.audit_logs.partition_size |
sql.ttl.audit_logs.checking_interval_ms | SQL_TTL_AUDIT_LOGS_CHECKING_INTERVAL_MS | 86400000 | Default value - 1 day |
sql.ttl.cloud_events.enabled | SQL_TTL_CLOUD_EVENTS_ENABLED | true | Enable/disable TTL (Time To Live) for cloud event records |
sql.ttl.cloud_events.execution_interval_ms | SQL_TTL_CLOUD_EVENTS_EXECUTION_INTERVAL | 86400000 | Number of milliseconds. The current value corresponds to one day |
sql.ttl.cloud_events.cloud_events_ttl | SQL_TTL_CLOUD_EVENTS_TTL | 2628000 | Number of seconds. The current value corresponds to one month |
sql.ttl.notifications.enabled | SQL_TTL_NOTIFICATIONS_ENABLED | true | Enable/disable TTL (Time To Live) for notification center records |
sql.ttl.notifications.ttl | SQL_TTL_NOTIFICATIONS_SECS | 2592000 | Default value - 30 days |
sql.ttl.notifications.checking_interval_ms | SQL_TTL_NOTIFICATIONS_CHECKING_INTERVAL_MS | 86400000 | Default value - 1 day |
sql.relations.max_level | SQL_RELATIONS_MAX_LEVEL | 50 | This value has to be reasonably small to prevent infinite recursion as early as possible |
sql.relations.pool_size | SQL_RELATIONS_POOL_SIZE | 4 | This value has to be reasonably small to prevent the relation query from blocking all other DB calls |
sql.relations.query_timeout | SQL_RELATIONS_QUERY_TIMEOUT_SEC | 20 | This value has to be reasonably small to prevent the relation query from blocking all other DB calls |
Actor system parameters
Parameter | Environment Variable | Default Value | Description |
actors.system.throughput | ACTORS_SYSTEM_THROUGHPUT | 5 | Number of messages the actor system will process per actor before switching to processing of messages for the next actor |
actors.system.scheduler_pool_size | ACTORS_SYSTEM_SCHEDULER_POOL_SIZE | 1 | Thread pool size for actor system scheduler |
actors.system.max_actor_init_attempts | ACTORS_SYSTEM_MAX_ACTOR_INIT_ATTEMPTS | 10 | Maximum number of attempts to init the actor before disabling the actor |
actors.system.app_dispatcher_pool_size | ACTORS_SYSTEM_APP_DISPATCHER_POOL_SIZE | 1 | Thread pool size for main actor system dispatcher |
actors.system.tenant_dispatcher_pool_size | ACTORS_SYSTEM_TENANT_DISPATCHER_POOL_SIZE | 2 | Thread pool size for actor system dispatcher that process messages for tenant actors |
actors.system.device_dispatcher_pool_size | ACTORS_SYSTEM_DEVICE_DISPATCHER_POOL_SIZE | 4 | Thread pool size for actor system dispatcher that process messages for device actors |
actors.system.rule_dispatcher_pool_size | ACTORS_SYSTEM_RULE_DISPATCHER_POOL_SIZE | 8 | Thread pool size for actor system dispatcher that process messages for rule engine (chain/node) actors |
actors.system.edge_dispatcher_pool_size | ACTORS_SYSTEM_EDGE_DISPATCHER_POOL_SIZE | 4 | Thread pool size for actor system dispatcher that process messages for edge actors |
actors.tenant.create_components_on_init | ACTORS_TENANT_CREATE_COMPONENTS_ON_INIT | true | Create components in initialization |
actors.session.max_concurrent_sessions_per_device | ACTORS_MAX_CONCURRENT_SESSION_PER_DEVICE | 1 | Max number of concurrent sessions per device |
actors.session.sync.timeout | ACTORS_SESSION_SYNC_TIMEOUT | 10000 | Default timeout for processing requests using synchronous session (HTTP, CoAP) in milliseconds |
actors.rule.db_callback_thread_pool_size | ACTORS_RULE_DB_CALLBACK_THREAD_POOL_SIZE | 50 | Specify thread pool size for database request callbacks executor service |
actors.rule.mail_thread_pool_size | ACTORS_RULE_MAIL_THREAD_POOL_SIZE | 40 | Specify thread pool size for mail sender executor service |
actors.rule.mail_password_reset_thread_pool_size | ACTORS_RULE_MAIL_PASSWORD_RESET_THREAD_POOL_SIZE | 10 | Specify thread pool size for password reset emails |
actors.rule.sms_thread_pool_size | ACTORS_RULE_SMS_THREAD_POOL_SIZE | 50 | Specify thread pool size for sms sender executor service |
actors.rule.allow_system_mail_service | ACTORS_RULE_ALLOW_SYSTEM_MAIL_SERVICE | true | Whether to allow usage of system mail service for rules |
actors.rule.allow_system_sms_service | ACTORS_RULE_ALLOW_SYSTEM_SMS_SERVICE | true | Whether to allow usage of system sms service for rules |
actors.rule.external_call_thread_pool_size | ACTORS_RULE_EXTERNAL_CALL_THREAD_POOL_SIZE | 50 | Specify thread pool size for external call service |
actors.rule.chain.error_persist_frequency | ACTORS_RULE_CHAIN_ERROR_FREQUENCY | 3000 | Errors for particular actors are persisted once per specified amount of milliseconds |
actors.rule.chain.debug_mode_rate_limits_per_tenant.enabled | ACTORS_RULE_CHAIN_DEBUG_MODE_RATE_LIMITS_PER_TENANT_ENABLED | true | Enable/Disable the rate limit of persisted debug events for all rule nodes per tenant |
actors.rule.chain.debug_mode_rate_limits_per_tenant.configuration | ACTORS_RULE_CHAIN_DEBUG_MODE_RATE_LIMITS_PER_TENANT_CONFIGURATION | 50000:3600 | The value of DEBUG mode rate limit. By default, no more then 50 thousand events per hour |
actors.rule.node.error_persist_frequency | ACTORS_RULE_NODE_ERROR_FREQUENCY | 3000 | Errors for particular actor are persisted once per specified amount of milliseconds |
actors.rule.transaction.queue_size | ACTORS_RULE_TRANSACTION_QUEUE_SIZE | 15000 | Size of queues that store messages for transaction rule nodes |
actors.rule.transaction.duration | ACTORS_RULE_TRANSACTION_DURATION | 60000 | Time in milliseconds for transaction to complete |
actors.rule.external.force_ack | ACTORS_RULE_EXTERNAL_NODE_FORCE_ACK | false | Force acknowledgment of the incoming message for external rule nodes to decrease processing latency. Enqueue the result of external node processing as a separate message to the rule engine. |
actors.rpc.max_retries | ACTORS_RPC_MAX_RETRIES | 5 | Maximum number of persistent RPC call retries in case of failed request delivery. |
actors.rpc.submit_strategy | ACTORS_RPC_SUBMIT_STRATEGY_TYPE | BURST | RPC submit strategies. Allowed values: BURST, SEQUENTIAL_ON_ACK_FROM_DEVICE, SEQUENTIAL_ON_RESPONSE_FROM_DEVICE. |
actors.rpc.response_timeout_ms | ACTORS_RPC_RESPONSE_TIMEOUT_MS | 30000 | Time in milliseconds for RPC to receive a response after delivery. Used only for SEQUENTIAL_ON_RESPONSE_FROM_DEVICE submit strategy. |
actors.statistics.enabled | ACTORS_STATISTICS_ENABLED | true | Enable/disable actor statistics |
actors.statistics.js_print_interval_ms | ACTORS_JS_STATISTICS_PRINT_INTERVAL_MS | 10000 | Frequency of printing the JS executor statistics |
actors.statistics.persist_frequency | ACTORS_STATISTICS_PERSIST_FREQUENCY | 3600000 | Actors statistic persistence frequency in milliseconds |
Cache settings parameters
Parameter | Environment Variable | Default Value | Description |
cache.type | CACHE_TYPE | caffeine | caffeine or redis(7.2 - latest compatible version) |
cache.maximumPoolSize | CACHE_MAXIMUM_POOL_SIZE | 16 | max pool size to process futures that call the external cache |
cache.attributes.enabled | CACHE_ATTRIBUTES_ENABLED | true | make sure that if cache.type is 'redis' and cache.attributes.enabled is 'true' if you change 'maxmemory-policy' Redis config property to 'allkeys-lru', 'allkeys-lfu' or 'allkeys-random' |
cache.ts_latest.enabled | CACHE_TS_LATEST_ENABLED | true | Will enable cache-aside strategy for SQL timeseries latest DAO. make sure that if cache.type is 'redis' and cache.ts_latest.enabled is 'true' if you change 'maxmemory-policy' Redis config property to 'allkeys-lru', 'allkeys-lfu' or 'allkeys-random' |
cache.specs.relations.timeToLiveInMinutes | CACHE_SPECS_RELATIONS_TTL | 1440 | Relations cache TTL |
cache.specs.relations.maxSize | CACHE_SPECS_RELATIONS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.deviceCredentials.timeToLiveInMinutes | CACHE_SPECS_DEVICE_CREDENTIALS_TTL | 1440 | Device credentials cache TTL |
cache.specs.deviceCredentials.maxSize | CACHE_SPECS_DEVICE_CREDENTIALS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.devices.timeToLiveInMinutes | CACHE_SPECS_DEVICES_TTL | 1440 | Device cache TTL |
cache.specs.devices.maxSize | CACHE_SPECS_DEVICES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.sessions.timeToLiveInMinutes | CACHE_SPECS_SESSIONS_TTL | 1440 | Sessions cache TTL |
cache.specs.sessions.maxSize | CACHE_SPECS_SESSIONS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.assets.timeToLiveInMinutes | CACHE_SPECS_ASSETS_TTL | 1440 | Asset cache TTL |
cache.specs.assets.maxSize | CACHE_SPECS_ASSETS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.customers.timeToLiveInMinutes | CACHE_SPECS_CUSTOMERS_TTL | 1440 | Customer cache TTL |
cache.specs.customers.maxSize | CACHE_SPECS_CUSTOMERS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.users.timeToLiveInMinutes | CACHE_SPECS_USERS_TTL | 1440 | User cache TTL |
cache.specs.users.maxSize | CACHE_SPECS_USERS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.entityViews.timeToLiveInMinutes | CACHE_SPECS_ENTITY_VIEWS_TTL | 1440 | Entity view cache TTL |
cache.specs.entityViews.maxSize | CACHE_SPECS_ENTITY_VIEWS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.claimDevices.timeToLiveInMinutes | CACHE_SPECS_CLAIM_DEVICES_TTL | 1440 | Claim devices cache TTL |
cache.specs.claimDevices.maxSize | CACHE_SPECS_CLAIM_DEVICES_MAX_SIZE | 1000 | 0 means the cache is disabled |
cache.specs.securitySettings.timeToLiveInMinutes | CACHE_SPECS_SECURITY_SETTINGS_TTL | 1440 | Security settings cache TTL |
cache.specs.securitySettings.maxSize | CACHE_SPECS_SECURITY_SETTINGS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.tenantProfiles.timeToLiveInMinutes | CACHE_SPECS_TENANT_PROFILES_TTL | 1440 | Tenant profiles cache TTL |
cache.specs.tenantProfiles.maxSize | CACHE_SPECS_TENANT_PROFILES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.tenants.timeToLiveInMinutes | CACHE_SPECS_TENANTS_TTL | 1440 | Tenant cache TTL |
cache.specs.tenants.maxSize | CACHE_SPECS_TENANTS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.tenantsExist.timeToLiveInMinutes | CACHE_SPECS_TENANTS_TTL | 1440 | Environment variables are intentionally the same as in 'tenants' cache to be equal. |
cache.specs.tenantsExist.maxSize | CACHE_SPECS_TENANTS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.deviceProfiles.timeToLiveInMinutes | CACHE_SPECS_DEVICE_PROFILES_TTL | 1440 | Device profile cache TTL |
cache.specs.deviceProfiles.maxSize | CACHE_SPECS_DEVICE_PROFILES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.assetProfiles.timeToLiveInMinutes | CACHE_SPECS_ASSET_PROFILES_TTL | 1440 | Asset profile cache TTL |
cache.specs.assetProfiles.maxSize | CACHE_SPECS_ASSET_PROFILES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.notificationSettings.timeToLiveInMinutes | CACHE_SPECS_NOTIFICATION_SETTINGS_TTL | 10 | Notification settings cache TTL |
cache.specs.notificationSettings.maxSize | CACHE_SPECS_NOTIFICATION_SETTINGS_MAX_SIZE | 1000 | 0 means the cache is disabled |
cache.specs.sentNotifications.timeToLiveInMinutes | CACHE_SPECS_SENT_NOTIFICATIONS_TTL | 1440 | Sent notifications cache TTL |
cache.specs.sentNotifications.maxSize | CACHE_SPECS_SENT_NOTIFICATIONS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.attributes.timeToLiveInMinutes | CACHE_SPECS_ATTRIBUTES_TTL | 1440 | Attributes cache TTL |
cache.specs.attributes.maxSize | CACHE_SPECS_ATTRIBUTES_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.tsLatest.timeToLiveInMinutes | CACHE_SPECS_TS_LATEST_TTL | 1440 | Timeseries latest cache TTL |
cache.specs.tsLatest.maxSize | CACHE_SPECS_TS_LATEST_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.userSessionsInvalidation.timeToLiveInMinutes | "0" | The value of this TTL is ignored and replaced by the JWT refresh token expiration time | |
cache.specs.userSessionsInvalidation.maxSize | CACHE_SPECS_USERS_UPDATE_TIME_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.otaPackages.timeToLiveInMinutes | CACHE_SPECS_OTA_PACKAGES_TTL | 60 | Ota packages cache TTL |
cache.specs.otaPackages.maxSize | CACHE_SPECS_OTA_PACKAGES_MAX_SIZE | 10 | 0 means the cache is disabled |
cache.specs.otaPackagesData.timeToLiveInMinutes | CACHE_SPECS_OTA_PACKAGES_DATA_TTL | 60 | Ota packages data cache TTL |
cache.specs.otaPackagesData.maxSize | CACHE_SPECS_OTA_PACKAGES_DATA_MAX_SIZE | 10 | 0 means the cache is disabled |
cache.specs.edges.timeToLiveInMinutes | CACHE_SPECS_EDGES_TTL | 1440 | Edges cache TTL |
cache.specs.edges.maxSize | CACHE_SPECS_EDGES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.edgeSessions.timeToLiveInMinutes | CACHE_SPECS_EDGE_SESSIONS_TTL | 0 | Edge Sessions cache TTL; no expiration time if set to '0' |
cache.specs.edgeSessions.maxSize | CACHE_SPECS_EDGE_SESSIONS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.relatedEdges.timeToLiveInMinutes | CACHE_SPECS_RELATED_EDGES_TTL | 1440 | Related Edges cache TTL |
cache.specs.relatedEdges.maxSize | CACHE_SPECS_RELATED_EDGES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.repositorySettings.timeToLiveInMinutes | CACHE_SPECS_REPOSITORY_SETTINGS_TTL | 1440 | Repository settings cache TTL |
cache.specs.repositorySettings.maxSize | CACHE_SPECS_REPOSITORY_SETTINGS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.autoCommitSettings.timeToLiveInMinutes | CACHE_SPECS_AUTO_COMMIT_SETTINGS_TTL | 1440 | Autocommit settings cache TTL |
cache.specs.autoCommitSettings.maxSize | CACHE_SPECS_AUTO_COMMIT_SETTINGS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.twoFaVerificationCodes.timeToLiveInMinutes | CACHE_SPECS_TWO_FA_VERIFICATION_CODES_TTL | 60 | Two factor verification codes cache TTL |
cache.specs.twoFaVerificationCodes.maxSize | CACHE_SPECS_TWO_FA_VERIFICATION_CODES_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.versionControlTask.timeToLiveInMinutes | CACHE_SPECS_VERSION_CONTROL_TASK_TTL | 20 | Version control task cache TTL |
cache.specs.versionControlTask.maxSize | CACHE_SPECS_VERSION_CONTROL_TASK_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.userSettings.timeToLiveInMinutes | CACHE_SPECS_USER_SETTINGS_TTL | 1440 | User settings cache TTL |
cache.specs.userSettings.maxSize | CACHE_SPECS_USER_SETTINGS_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.dashboardTitles.timeToLiveInMinutes | CACHE_SPECS_DASHBOARD_TITLES_TTL | 1440 | Dashboard titles cache TTL |
cache.specs.dashboardTitles.maxSize | CACHE_SPECS_DASHBOARD_TITLES_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.entityCount.timeToLiveInMinutes | CACHE_SPECS_ENTITY_COUNT_TTL | 1440 | Entity count cache TTL |
cache.specs.entityCount.maxSize | CACHE_SPECS_ENTITY_COUNT_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.resourceInfo.timeToLiveInMinutes | CACHE_SPECS_RESOURCE_INFO_TTL | 1440 | Resource info cache TTL |
cache.specs.resourceInfo.maxSize | CACHE_SPECS_RESOURCE_INFO_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.specs.alarmTypes.timeToLiveInMinutes | CACHE_SPECS_ALARM_TYPES_TTL | 60 | Alarm types cache TTL |
cache.specs.alarmTypes.maxSize | CACHE_SPECS_ALARM_TYPES_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.mobileAppSettings.timeToLiveInMinutes | CACHE_SPECS_MOBILE_APP_SETTINGS_TTL | 1440 | Mobile application cache TTL |
cache.specs.mobileAppSettings.maxSize | CACHE_SPECS_MOBILE_APP_SETTINGS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.specs.mobileSecretKey.timeToLiveInMinutes | CACHE_MOBILE_SECRET_KEY_TTL | 2 | QR secret key cache TTL |
cache.specs.mobileSecretKey.maxSize | CACHE_MOBILE_SECRET_KEY_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.notificationRules.timeToLiveInMinutes | CACHE_SPECS_NOTIFICATION_RULES_TTL | 30 | Notification rules cache TTL |
cache.notificationRules.maxSize | CACHE_SPECS_NOTIFICATION_RULES_MAX_SIZE | 1000 | 0 means the cache is disabled |
cache.rateLimits.timeToLiveInMinutes | CACHE_SPECS_RATE_LIMITS_TTL | 120 | Rate limits cache TTL |
cache.rateLimits.maxSize | CACHE_SPECS_RATE_LIMITS_MAX_SIZE | 200000 | 0 means the cache is disabled |
cache.entityLimits.timeToLiveInMinutes | CACHE_SPECS_ENTITY_LIMITS_TTL | 5 | Entity limits cache TTL |
cache.entityLimits.maxSize | CACHE_SPECS_ENTITY_LIMITS_MAX_SIZE | 100000 | 0 means the cache is disabled |
cache.image.etag.timeToLiveInMinutes | CACHE_SPECS_IMAGE_ETAGS_TTL | 44640 | Image ETags cache TTL |
cache.image.etag.maxSize | CACHE_SPECS_IMAGE_ETAGS_MAX_SIZE | 10000 | 0 means the cache is disabled |
cache.image.systemImagesBrowserTtlInMinutes | CACHE_SPECS_IMAGE_SYSTEM_BROWSER_TTL | 0 | Browser cache TTL for system images in minutes. 0 means the cache is disabled |
cache.image.tenantImagesBrowserTtlInMinutes | CACHE_SPECS_IMAGE_TENANT_BROWSER_TTL | 0 | Browser cache TTL for tenant images in minutes. 0 means the cache is disabled |
Spring data parameters
Parameter | Environment Variable | Default Value | Description |
spring.data.redis.repositories.enabled | false | Disable this because it is not required. |
Redis configuration parameters
Parameter | Environment Variable | Default Value | Description |
redis.connection.type | REDIS_CONNECTION_TYPE | standalone | Redis deployment type: Standalone (single Redis node deployment) OR Cluster |
redis.standalone.host | REDIS_HOST | localhost | Redis connection host |
redis.standalone.port | REDIS_PORT | 6379 | Redis connection port |
redis.standalone.useDefaultClientConfig | REDIS_USE_DEFAULT_CLIENT_CONFIG | true | Use the default Redis configuration file |
redis.standalone.clientName | REDIS_CLIENT_NAME | standalone | This value may be used only if you used not default ClientConfig |
redis.standalone.connectTimeout | REDIS_CLIENT_CONNECT_TIMEOUT | 30000 | This value may be used only if you used not default ClientConfig |
redis.standalone.readTimeout | REDIS_CLIENT_READ_TIMEOUT | 60000 | This value may be used only if you used not default ClientConfig |
redis.standalone.usePoolConfig | REDIS_CLIENT_USE_POOL_CONFIG | false | This value may be used only if you used not default ClientConfig |
redis.cluster.nodes | REDIS_NODES | Comma-separated list of "host:port" pairs to bootstrap from. | |
redis.cluster.max-redirects | REDIS_MAX_REDIRECTS | 12 | Maximum number of redirects to follow when executing commands across the cluster. |
redis.cluster.useDefaultPoolConfig | REDIS_USE_DEFAULT_POOL_CONFIG | true | if set false will be used pool config build from values of the pool config section |
redis.sentinel.master | REDIS_MASTER | name of the master node | |
redis.sentinel.sentinels | REDIS_SENTINELS | comma-separated list of "host:port" pairs of sentinels | |
redis.sentinel.password | REDIS_SENTINEL_PASSWORD | password to authenticate with sentinel | |
redis.sentinel.useDefaultPoolConfig | REDIS_USE_DEFAULT_POOL_CONFIG | true | if set false will be used pool config build from values of the pool config section |
redis.db | REDIS_DB | 0 | db index |
redis.password | REDIS_PASSWORD | db password | |
redis.ssl.enabled | TB_REDIS_SSL_ENABLED | false | Enable/disable secure connection |
redis.ssl.credentials.cert_file | TB_REDIS_SSL_PEM_CERT | Path redis server (CA) certificate | |
redis.ssl.credentials.user_cert_file | TB_REDIS_SSL_PEM_KEY | Path to user certificate file. This is optional for the client and can be used for two-way authentication for the client | |
redis.ssl.credentials.user_key_file | TB_REDIS_SSL_PEM_KEY_PASSWORD | Path to user private key file. This is optional for the client and only needed if ‘user_cert_file’ is configured. | |
redis.pool_config.maxTotal | REDIS_POOL_CONFIG_MAX_TOTAL | 128 | Maximum number of connections that can be allocated by the connection pool |
redis.pool_config.maxIdle | REDIS_POOL_CONFIG_MAX_IDLE | 128 | Maximum number of idle connections that can be maintained in the pool without being closed |
redis.pool_config.minIdle | REDIS_POOL_CONFIG_MIN_IDLE | 16 | Minumum number of idle connections that can be maintained in the pool without being closed |
redis.pool_config.testOnBorrow | REDIS_POOL_CONFIG_TEST_ON_BORROW | true | Enable/Disable PING command sent when a connection is borrowed |
redis.pool_config.testOnReturn | REDIS_POOL_CONFIG_TEST_ON_RETURN | true | The property is used to specify whether to test the connection before returning it to the connection pool. |
redis.pool_config.testWhileIdle | REDIS_POOL_CONFIG_TEST_WHILE_IDLE | true | The property is used in the context of connection pooling in Redis |
redis.pool_config.minEvictableMs | REDIS_POOL_CONFIG_MIN_EVICTABLE_MS | 60000 | Minimum time that an idle connection should be idle before it can be evicted from the connection pool. The value is set in milliseconds |
redis.pool_config.evictionRunsMs | REDIS_POOL_CONFIG_EVICTION_RUNS_MS | 30000 | Specifies the time interval in milliseconds between two consecutive eviction runs |
redis.pool_config.maxWaitMills | REDIS_POOL_CONFIG_MAX_WAIT_MS | 60000 | Maximum time in milliseconds where a client is willing to wait for a connection from the pool when all connections are exhausted |
redis.pool_config.numberTestsPerEvictionRun | REDIS_POOL_CONFIG_NUMBER_TESTS_PER_EVICTION_RUN | 3 | Specifies the number of connections to test for eviction during each eviction run |
redis.pool_config.blockWhenExhausted | REDIS_POOL_CONFIG_BLOCK_WHEN_EXHAUSTED | true | Determines the behavior when a thread requests a connection from the pool, but there are no available connections, and the pool cannot create more due to the maxTotal configuration |
redis.evictTtlInMs | REDIS_EVICT_TTL_MS | 60000 | TTL for short-living SET commands that are used to replace DEL to enable transaction support |
Update version parameters
Parameter | Environment Variable | Default Value | Description |
updates.enabled | UPDATES_ENABLED | true | Enable/disable checks for the new version |
Spring CORS configuration parameters
Parameter | Environment Variable | Default Value | Description |
spring.mvc.cors.mappings."[/api/**]".allowed-origin-patterns | "*" | Comma-separated list of origins to allow. '*' allows all origins. When not set, CORS support is disabled. | |
spring.mvc.cors.mappings."[/api/**]".allowed-methods | "*" | Comma-separated list of methods to allow. '*' allows all methods. | |
spring.mvc.cors.mappings."[/api/**]".allowed-headers | "*" | Comma-separated list of headers to allow in a request. '*' allows all headers. | |
spring.mvc.cors.mappings."[/api/**]".max-age | "1800" | How long, in seconds, the response from a pre-flight request can be cached by clients. | |
spring.mvc.cors.mappings."[/api/**]".allow-credentials | "true" | Set whether credentials are supported. When not set, credentials are not supported. |
General spring parameters
Parameter | Environment Variable | Default Value | Description |
spring.main.allow-circular-references | "true" | Spring Boot configuration property that controls whether circular dependencies between beans are allowed. | |
spring.freemarker.checkTemplateLocation | "false" | spring freemarker configuration | |
spring.mvc.async.request-timeout | SPRING_MVC_ASYNC_REQUEST_TIMEOUT | 30000 | The default timeout for asynchronous requests in milliseconds |
spring.mvc.pathmatch.matching-strategy | "ANT_PATH_MATCHER" | For endpoints matching in Swagger | |
spring.resources.chain.compressed | "true" | This property enables or disables support for serving pre-compressed resources (for example, a .gzip or .br file) | |
spring.resources.chain.strategy.content.enabled | "true" | This property enables or disables the content Version Strategy. This strategy allows Spring to generate a unique version for static resources, which is based on the content of the resource | |
spring.servlet.multipart.max-file-size | SPRING_SERVLET_MULTIPART_MAX_FILE_SIZE | 50MB | Total file size cannot exceed 50MB when configuring file uploads |
spring.servlet.multipart.max-request-size | SPRING_SERVLET_MULTIPART_MAX_REQUEST_SIZE | 50MB | Total request size for a multipart/form-data cannot exceed 50MB |
spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation | "true" | Fix Postgres JPA Error (Method org.postgresql.jdbc.PgConnection.createClob() is not yet implemented) | |
spring.jpa.properties.hibernate.order_by.default_null_ordering | SPRING_JPA_PROPERTIES_HIBERNATE_ORDER_BY_DEFAULT_NULL_ORDERING | last | Note: as for current Spring JPA version, custom NullHandling for the Sort.Order is ignored and this parameter is used |
spring.jpa.properties.hibernate.dialect | SPRING_JPA_DIALECT | org.thingsboard.server.dao.ThingsboardPostgreSQLDialect | we use custom dialect that contains ilike(arg1, arg2) function (is interpreted to postgres ILIKE operator) |
SQL DAO Configuration parameters
Parameter | Environment Variable | Default Value | Description |
spring.data.jpa.repositories.enabled | "true" | Enable/Disable the Spring Data JPA repositories support | |
spring.jpa.properties.jakarta.persistence.query.timeout | JAVAX_PERSISTENCE_QUERY_TIMEOUT | 30000 | General timeout for JDBC queries |
spring.jpa.open-in-view | "false" | Enabled by default. Therefore, database queries may be performed during view rendering. Explicitly configure spring.jpa.open-in-view to disable this warning | |
spring.jpa.hibernate.ddl-auto | "none" | You can set a Hibernate feature that controls the DDL behavior in a more fine-grained way. The standard Hibernate property values are none, validate, update, create-drop. Spring Boot chooses a default value for you based on whether it thinks your database is embedded (default create-drop) or not (default none) | |
spring.datasource.driverClassName | SPRING_DRIVER_CLASS_NAME | org.postgresql.Driver | Database driver for Spring JPA - org.postgresql.Driver |
spring.datasource.url | SPRING_DATASOURCE_URL | jdbc:postgresql://localhost:5432/tb_edge | Database connection URL |
spring.datasource.username | SPRING_DATASOURCE_USERNAME | postgres | Database user name |
spring.datasource.password | SPRING_DATASOURCE_PASSWORD | postgres | Database user password |
spring.datasource.hikari.leakDetectionThreshold | SPRING_DATASOURCE_HIKARI_LEAK_DETECTION_THRESHOLD | 0 | This property controls the amount of time that a connection can be out of the pool before a message is logged indicating a possible connection leak. A value of 0 means leak detection is disabled |
spring.datasource.hikari.maximumPoolSize | SPRING_DATASOURCE_MAXIMUM_POOL_SIZE | 16 | This property increases the number of connections in the pool as demand increases. At the same time, the property ensures that the pool doesn't grow to the point of exhausting a system's resources, which ultimately affects an application's performance and availability |
spring.datasource.hikari.registerMbeans | SPRING_DATASOURCE_HIKARI_REGISTER_MBEANS | false | Enable MBean to diagnose pools state via JMX |
spring.datasource.events.enabled | SPRING_DEDICATED_EVENTS_DATASOURCE_ENABLED | false | Enable dedicated datasource (a separate database) for events and audit logs. Before enabling this, make sure you have set up the following tables in the new DB: error_event, lc_event, rule_chain_debug_event, rule_node_debug_event, stats_event, audit_log |
spring.datasource.events.driverClassName | SPRING_EVENTS_DATASOURCE_DRIVER_CLASS_NAME | org.postgresql.Driver | Database driver for Spring JPA for events datasource |
spring.datasource.events.url | SPRING_EVENTS_DATASOURCE_URL | jdbc:postgresql://localhost:5432/thingsboard_events | Database connection URL for events datasource |
spring.datasource.events.username | SPRING_EVENTS_DATASOURCE_USERNAME | postgres | Database username for events datasource |
spring.datasource.events.password | SPRING_EVENTS_DATASOURCE_PASSWORD | postgres | Database user password for events datasource |
spring.datasource.events.hikari.leakDetectionThreshold | SPRING_EVENTS_DATASOURCE_HIKARI_LEAK_DETECTION_THRESHOLD | 0 | This property controls the amount of time that a connection can be out of the pool before a message is logged indicating a possible connection leak for events datasource. A value of 0 means leak detection is disabled |
spring.datasource.events.hikari.maximumPoolSize | SPRING_EVENTS_DATASOURCE_MAXIMUM_POOL_SIZE | 4 | This property increases the number of connections in the pool as demand increases for events datasource. At the same time, the property ensures that the pool doesn't grow to the point of exhausting a system's resources, which ultimately affects an application's performance and availability |
spring.datasource.events.hikari.registerMbeans | SPRING_EVENTS_DATASOURCE_HIKARI_REGISTER_MBEANS | false | Enable MBean to diagnose pools state via JMX for events datasource |
Audit log parameters
Parameter | Environment Variable | Default Value | Description |
audit-log.enabled | AUDIT_LOG_ENABLED | true | Enable/disable audit log functionality. |
audit-log.logging-level.mask."device" | AUDIT_LOG_MASK_DEVICE | W | Device logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."asset" | AUDIT_LOG_MASK_ASSET | W | Asset logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."dashboard" | AUDIT_LOG_MASK_DASHBOARD | W | Dashboard logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."widget_type" | AUDIT_LOG_MASK_WIDGET_TYPE | W | Widget type logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."widgets_bundle" | AUDIT_LOG_MASK_WIDGETS_BUNDLE | W | Widget bundles logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."customer" | AUDIT_LOG_MASK_CUSTOMER | W | Customer logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."user" | AUDIT_LOG_MASK_USER | W | User logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."rule_chain" | AUDIT_LOG_MASK_RULE_CHAIN | W | Rule chain logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."alarm" | AUDIT_LOG_MASK_ALARM | W | Alarm logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."entity_view" | AUDIT_LOG_MASK_ENTITY_VIEW | W | Entity view logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."device_profile" | AUDIT_LOG_MASK_DEVICE_PROFILE | W | Device profile logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."asset_profile" | AUDIT_LOG_MASK_ASSET_PROFILE | W | Asset profile logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."edge" | AUDIT_LOG_MASK_EDGE | W | Edge logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."tb_resource" | AUDIT_LOG_MASK_RESOURCE | W | TB resource logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.logging-level.mask."ota_package" | AUDIT_LOG_MASK_OTA_PACKAGE | W | Ota package logging levels. Allowed values: OFF (disable), W (log write operations), RW (log read and write operation |
audit-log.sink.type | AUDIT_LOG_SINK_TYPE | none | Type of external sink. possible options: none, elasticsearch |
audit-log.sink.index_pattern | AUDIT_LOG_SINK_INDEX_PATTERN | @{TENANT}_AUDIT_LOG_@{DATE} | Name of the index where audit logs are stored Index name could contain next placeholders (not mandatory): @{TENANT} - substituted by tenant ID @{DATE} - substituted by current date in format provided in audit_log.sink.date_format |
audit-log.sink.date_format | AUDIT_LOG_SINK_DATE_FORMAT | YYYY.MM.dd | Date format. Details of the pattern can be found here: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html |
audit-log.sink.scheme_name | AUDIT_LOG_SINK_SCHEME_NAME | http | http or https |
audit-log.sink.host | AUDIT_LOG_SINK_HOST | localhost | Host of external sink system |
audit-log.sink.port | AUDIT_LOG_SINK_PORT | 9200 | Port of external sink system |
audit-log.sink.user_name | AUDIT_LOG_SINK_USER_NAME | Username used to access external sink system | |
audit-log.sink.password | AUDIT_LOG_SINK_PASSWORD | Password used to access external sink system |
Device state parameters
Parameter | Environment Variable | Default Value | Description |
state.defaultInactivityTimeoutInSec | DEFAULT_INACTIVITY_TIMEOUT | 600 | Device inactivity timeout is a global configuration parameter that defines when the device will be marked as "inactive" by the server. The parameter value is in seconds. A user can overwrite this parameter for an individual device by setting the “inactivityTimeout” server-side attribute (NOTE: expects value in milliseconds). We recommend this parameter to be in sync with session inactivity timeout ("transport.sessions.inactivity_timeout" or TB_TRANSPORT_SESSIONS_INACTIVITY_TIMEOUT) parameter which is responsible for detection of the stale device connection sessions. The value of the session inactivity timeout parameter should be greater or equal to the device inactivity timeout. Note that the session inactivity timeout is set in milliseconds while device inactivity timeout is in seconds. |
state.defaultStateCheckIntervalInSec | DEFAULT_STATE_CHECK_INTERVAL | 60 | Interval for checking the device state after a specified period. Time in seconds |
state.persistToTelemetry | PERSIST_STATE_TO_TELEMETRY | false | Controls whether we store the device 'active' flag in attributes (default) or telemetry. If you decide to change this parameter, you should re-create the device info view as one of the following: If 'persistToTelemetry' is changed from 'false' to 'true': 'CREATE OR REPLACE VIEW device_info_view AS SELECT * FROM device_info_active_ts_view;' If 'persistToTelemetry' is changed from 'true' to 'false': 'CREATE OR REPLACE VIEW device_info_view AS SELECT * FROM device_info_active_attribute_view;' |
state.telemetryTtl | STATE_TELEMETRY_TTL | 0 | Millisecond value defining time-to-live for device state telemetry data (e.g. 'active', 'lastActivityTime'). Used only when state.persistToTelemetry is set to 'true' and Cassandra is used for timeseries data. 0 means time-to-live mechanism is disabled. |
state.rule.node.deviceState.rateLimit | DEVICE_STATE_NODE_RATE_LIMIT_CONFIGURATION | 1:1,30:60,60:3600 | Defines the rate at which device connectivity events can be triggered. Comma-separated list of capacity:duration pairs that define bandwidth capacity and refill duration for token bucket rate limit algorithm. Refill is set to be greedy. Please refer to Bucket4j library documentation for more details. |
Tbel parameters
Parameter | Environment Variable | Default Value | Description |
tbel.enabled | TBEL_ENABLED | true | Enable/Disable TBEL feature. |
tbel.max_total_args_size | TBEL_MAX_TOTAL_ARGS_SIZE | 100000 | Limit the number of arguments that are passed to the function to execute the script |
tbel.max_result_size | TBEL_MAX_RESULT_SIZE | 300000 | Maximum allowed symbols in a result after processing a script |
tbel.max_script_body_size | TBEL_MAX_SCRIPT_BODY_SIZE | 50000 | Maximum allowed symbols in the script body |
tbel.max_memory_limit_mb | TBEL_MAX_MEMORY_LIMIT_MB | 8 | Maximum allowed TBEL script execution memory |
tbel.max_errors | TBEL_MAX_ERRORS | 3 | Maximum allowed TBEL script execution errors before it will be blacklisted |
tbel.max_requests_timeout | TBEL_MAX_REQUEST_TIMEOUT | 500 | TBEL Eval max request timeout in milliseconds. 0 - no timeout |
tbel.max_black_list_duration_sec | TBEL_MAX_BLACKLIST_DURATION_SEC | 60 | Maximum time in seconds for black listed function to stay in the list. |
tbel.thread_pool_size | TBEL_THREAD_POOL_SIZE | 50 | Specify thread pool size for javascript executor service |
tbel.compiled_scripts_cache_size | TBEL_COMPILED_SCRIPTS_CACHE_SIZE | 1000 | Maximum cache size of TBEL compiled scripts |
tbel.stats.enabled | TB_TBEL_STATS_ENABLED | false | Enable/Disable stats collection for TBEL engine |
tbel.stats.print_interval_ms | TB_TBEL_STATS_PRINT_INTERVAL_MS | 10000 | Interval of logging for TBEL stats |
JS parameters
Parameter | Environment Variable | Default Value | Description |
js.evaluator | JS_EVALUATOR | local | local (Nashorn Engine, deprecated) OR remote JS-Executors (NodeJS) |
js.max_total_args_size | JS_MAX_TOTAL_ARGS_SIZE | 100000 | Limit the number of arguments that are passed to the function to execute the script |
js.max_result_size | JS_MAX_RESULT_SIZE | 300000 | Maximum allowed symbols in a result after processing a script |
js.max_script_body_size | JS_MAX_SCRIPT_BODY_SIZE | 50000 | Maximum allowed symbols in script body |
js.local.js_thread_pool_size | LOCAL_JS_THREAD_POOL_SIZE | 50 | Specify thread pool size for javascript executor service |
js.local.use_js_sandbox | USE_LOCAL_JS_SANDBOX | true | Use Sandboxed (secured) JVM JavaScript environment |
js.local.monitor_thread_pool_size | LOCAL_JS_SANDBOX_MONITOR_THREAD_POOL_SIZE | 4 | Specify thread pool size for JavaScript sandbox resource monitor |
js.local.max_cpu_time | LOCAL_JS_SANDBOX_MAX_CPU_TIME | 8000 | Maximum CPU time in milliseconds allowed for script execution |
js.local.max_memory | LOCAL_JS_SANDBOX_MAX_MEMORY | 104857600 | Maximum memory in Bytes which JS executor thread can allocate (approximate calculation). A zero memory limit in combination with a non-zero CPU limit is not recommended due to the implementation of Nashorn 0.4.2. 100MiB is effectively unlimited for most cases |
js.local.max_errors | LOCAL_JS_SANDBOX_MAX_ERRORS | 3 | Maximum allowed JavaScript execution errors before JavaScript will be blacklisted |
js.local.max_requests_timeout | LOCAL_JS_MAX_REQUEST_TIMEOUT | 0 | JS Eval max request timeout. 0 - no timeout |
js.local.max_black_list_duration_sec | LOCAL_JS_SANDBOX_MAX_BLACKLIST_DURATION_SEC | 60 | Maximum time in seconds for black listed function to stay in the list. |
js.local.stats.enabled | TB_JS_LOCAL_STATS_ENABLED | false | Enable/Disable stats collection for local JS executor |
js.local.stats.print_interval_ms | TB_JS_LOCAL_STATS_PRINT_INTERVAL_MS | 10000 | Interval of logging for local JS executor stats |
js.remote.js_thread_pool_size | REMOTE_JS_THREAD_POOL_SIZE | 50 | Specify thread pool size for javascript executor service |
js.remote.max_errors | REMOTE_JS_SANDBOX_MAX_ERRORS | 3 | Maximum allowed JavaScript execution errors before JavaScript will be blacklisted |
js.remote.max_black_list_duration_sec | REMOTE_JS_SANDBOX_MAX_BLACKLIST_DURATION_SEC | 60 | Maximum time in seconds for black listed function to stay in the list. |
js.remote.stats.enabled | TB_JS_REMOTE_STATS_ENABLED | false | Enable/Disable stats collection for remote JS executor |
js.remote.stats.print_interval_ms | TB_JS_REMOTE_STATS_PRINT_INTERVAL_MS | 10000 | Interval of logging for remote JS executor stats |
Transport configuration parameters
Parameter | Environment Variable | Default Value | Description |
transport.sessions.inactivity_timeout | TB_TRANSPORT_SESSIONS_INACTIVITY_TIMEOUT | 600000 | Session inactivity timeout is a global configuration parameter that defines how long the device transport session will be opened after the last message arrives from the device. The parameter value is in milliseconds. The last activity time of the device session is updated if the device sends any message, including keepalive messages If there is no activity, the session will be closed, and all subscriptions will be deleted. We recommend this parameter to be in sync with device inactivity timeout ("state.defaultInactivityTimeoutInSec" or DEFAULT_INACTIVITY_TIMEOUT) parameter which is responsible for detection of the device connectivity status in the core service of the platform. The value of the session inactivity timeout parameter should be greater or equal to the device inactivity timeout. Note that the session inactivity timeout is set in milliseconds while device inactivity timeout is in seconds. |
transport.sessions.report_timeout | TB_TRANSPORT_SESSIONS_REPORT_TIMEOUT | 3000 | Interval of periodic check for expired sessions and report of the changes to session last activity time |
transport.activity.reporting_strategy | TB_TRANSPORT_ACTIVITY_REPORTING_STRATEGY | LAST | This property specifies the strategy for reporting activity events within each reporting period. The accepted values are 'FIRST', 'LAST', 'FIRST_AND_LAST' and 'ALL'. - 'FIRST': Only the first activity event in each reporting period is reported. - 'LAST': Only the last activity event in the reporting period is reported. - 'FIRST_AND_LAST': Both the first and last activity events in the reporting period are reported. - 'ALL': All activity events in the reporting period are reported. |
transport.json.type_cast_enabled | JSON_TYPE_CAST_ENABLED | true | Cast String data types to Numeric if possible when processing Telemetry/Attributes JSON |
transport.json.max_string_value_length | JSON_MAX_STRING_VALUE_LENGTH | 0 | Maximum allowed string value length when processing Telemetry/Attributes JSON (0 value disables string value length check) |
transport.client_side_rpc.timeout | CLIENT_SIDE_RPC_TIMEOUT | 60000 | Processing timeout interval of the RPC command on the CLIENT SIDE. Time in milliseconds |
transport.api_enabled | TB_TRANSPORT_API_ENABLED | true | Enable/disable http/mqtt/coap/lwm2m transport protocols (has higher priority than certain protocol's 'enabled' property) |
transport.log.enabled | TB_TRANSPORT_LOG_ENABLED | true | Enable/Disable log of transport messages to telemetry. For example, logging of LwM2M registration update |
transport.log.max_length | TB_TRANSPORT_LOG_MAX_LENGTH | 1024 | Maximum length of the log message. The content will be truncated to the specified value if needed |
transport.rate_limits.ip_limits_enabled | TB_TRANSPORT_IP_RATE_LIMITS_ENABLED | false | Enable or disable generic rate limits. Device and Tenant-specific rate limits are controlled in Tenant Profile. |
transport.rate_limits.max_wrong_credentials_per_ip | TB_TRANSPORT_MAX_WRONG_CREDENTIALS_PER_IP | 10 | Maximum number of connect attempts with invalid credentials |
transport.rate_limits.ip_block_timeout | TB_TRANSPORT_IP_BLOCK_TIMEOUT | 60000 | Timeout (in milliseconds) to expire block IP addresses |
transport.http.enabled | HTTP_ENABLED | true | Enable/Disable local HTTP transport protocol |
transport.http.request_timeout | HTTP_REQUEST_TIMEOUT | 60000 | HTTP request processing timeout in milliseconds |
transport.http.max_request_timeout | HTTP_MAX_REQUEST_TIMEOUT | 300000 | HTTP maximum request processing timeout in milliseconds |
transport.http.max_payload_size | HTTP_TRANSPORT_MAX_PAYLOAD_SIZE_LIMIT_CONFIGURATION | /api/v1/*/rpc/**=65536;/api/v1/**=52428800 | Semi-colon-separated list of urlPattern=maxPayloadSize pairs that define max http request size for specified url pattern. After first match all other will be skipped |
transport.mqtt.enabled | MQTT_ENABLED | true | Enable/disable mqtt transport protocol. |
transport.mqtt.bind_address | MQTT_BIND_ADDRESS | 0.0.0.0 | MQTT bind-address |
transport.mqtt.bind_port | MQTT_BIND_PORT | 1883 | MQTT bind port |
transport.mqtt.proxy_enabled | MQTT_PROXY_PROTOCOL_ENABLED | false | Enable proxy protocol support. Disabled by default. If enabled, supports both v1 and v2. Useful to get the real IP address of the client in the logs and for rate limits. |
transport.mqtt.timeout | MQTT_TIMEOUT | 10000 | MQTT processing timeout in milliseconds |
transport.mqtt.disconnect_timeout | MQTT_DISCONNECT_TIMEOUT | 1000 | MQTT disconnect timeout in milliseconds. The time to wait for the client to disconnect after the server sends a disconnect message. |
transport.mqtt.msg_queue_size_per_device_limit | MQTT_MSG_QUEUE_SIZE_PER_DEVICE_LIMIT | 100 | messages await in the queue before the device connected state. This limit works on the low level before TenantProfileLimits mechanism |
transport.mqtt.gateway_metrics_report_interval_sec | MQTT_GATEWAY_METRICS_REPORT_INTERVAL_SEC | 60 | Interval of periodic report of the gateway metrics |
transport.mqtt.netty.leak_detector_level | NETTY_LEAK_DETECTOR_LVL | DISABLED | Netty leak detector level |
transport.mqtt.netty.boss_group_thread_count | NETTY_BOSS_GROUP_THREADS | 1 | Netty BOSS threads count |
transport.mqtt.netty.worker_group_thread_count | NETTY_WORKER_GROUP_THREADS | 12 | Netty worker threads count |
transport.mqtt.netty.max_payload_size | NETTY_MAX_PAYLOAD_SIZE | 65536 | Max payload size in bytes |
transport.mqtt.netty.so_keep_alive | NETTY_SO_KEEPALIVE | false | Enables TCP keepalive. This means that TCP starts sending keepalive probes when a connection is idle for some time |
transport.mqtt.ssl.enabled | MQTT_SSL_ENABLED | false | Enable/disable SSL support |
transport.mqtt.ssl.bind_address | MQTT_SSL_BIND_ADDRESS | 0.0.0.0 | MQTT SSL bind-address |
transport.mqtt.ssl.bind_port | MQTT_SSL_BIND_PORT | 8883 | MQTT SSL bind port |
transport.mqtt.ssl.protocol | MQTT_SSL_PROTOCOL | TLSv1.2 | SSL protocol: See https://docs.oracle.com/en/java/javase/11/docs/specs/security/standard-names.html#sslcontext-algorithms |
transport.mqtt.ssl.credentials.type | MQTT_SSL_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
transport.mqtt.ssl.credentials.pem.cert_file | MQTT_SSL_PEM_CERT | mqttserver.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
transport.mqtt.ssl.credentials.pem.key_file | MQTT_SSL_PEM_KEY | mqttserver_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in server certificate file; |
transport.mqtt.ssl.credentials.pem.key_password | MQTT_SSL_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
transport.mqtt.ssl.credentials.keystore.type | MQTT_SSL_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
transport.mqtt.ssl.credentials.keystore.store_file | MQTT_SSL_KEY_STORE | mqttserver.jks | Path to the key store that holds the SSL certificate |
transport.mqtt.ssl.credentials.keystore.store_password | MQTT_SSL_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
transport.mqtt.ssl.credentials.keystore.key_alias | MQTT_SSL_KEY_ALIAS | Optional alias of the private key. If not set, the platform will load the first private key from the keystore | |
transport.mqtt.ssl.credentials.keystore.key_password | MQTT_SSL_KEY_PASSWORD | server_key_password | Optional password to access the private key. If not set, the platform will attempt to load the private keys that are not protected with the password; |
transport.mqtt.ssl.skip_validity_check_for_client_cert | MQTT_SSL_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT | false | Skip certificate validity check for client certificates. |
transport.coap.enabled | COAP_ENABLED | true | Enable/disable CoAP transport protocol. |
transport.coap.timeout | COAP_TIMEOUT | 10000 | CoaP processing timeout in milliseconds |
transport.coap.piggyback_timeout | COAP_PIGGYBACK_TIMEOUT | 500 | CoaP piggyback response timeout in milliseconds |
transport.coap.psm_activity_timer | COAP_PSM_ACTIVITY_TIMER | 10000 | Default PSM Activity Timer if not specified in device profile |
transport.coap.paging_transmission_window | COAP_PAGING_TRANSMISSION_WINDOW | 10000 | Default PSM Activity Timer if not specified in device profile |
transport.lwm2m.enabled | LWM2M_ENABLED | true | Enable/disable LwM2M transport protocol. |
transport.lwm2m.dtls.retransmission_timeout | LWM2M_DTLS_RETRANSMISSION_TIMEOUT_MS | 9000 | RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000 |
transport.lwm2m.dtls.connection_id_length | LWM2M_DTLS_CONNECTION_ID_LENGTH | CoAP DTLS connection ID length for LWM2M. RFC 9146, Connection Identifier for DTLS 1.2 Default: off Control usage of DTLS connection ID length (CID). - 'off' to deactivate it. - 'on' to activate Connection ID support (same as CID 0 or more 0). - A positive value defines generated CID size in bytes. - A value of 0 means we accept using CID but will not generate one for foreign peer (enables support but not for incoming traffic). - A value between 0 and <= 4: SingleNodeConnectionIdGenerator is used - A value that are > 4: MultiNodeConnectionIdGenerator is used | |
transport.lwm2m.server.id | LWM2M_SERVER_ID | 123 | LwM2M Server ID |
transport.lwm2m.server.bind_address | LWM2M_BIND_ADDRESS | 0.0.0.0 | LwM2M server bind address. Bind to all interfaces by default |
transport.lwm2m.server.bind_port | LWM2M_BIND_PORT | 5685 | LwM2M server bind port |
transport.lwm2m.server.security.bind_address | LWM2M_SECURITY_BIND_ADDRESS | 0.0.0.0 | LwM2M server bind address for DTLS. Bind to all interfaces by default |
transport.lwm2m.server.security.bind_port | LWM2M_SECURITY_BIND_PORT | 5686 | LwM2M server bind port for DTLS |
transport.lwm2m.server.security.credentials.enabled | LWM2M_SERVER_CREDENTIALS_ENABLED | false | Whether to enable LWM2M server X509 Certificate/RPK support |
transport.lwm2m.server.security.credentials.type | LWM2M_SERVER_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
transport.lwm2m.server.security.credentials.pem.cert_file | LWM2M_SERVER_PEM_CERT | lwm2mserver.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
transport.lwm2m.server.security.credentials.pem.key_file | LWM2M_SERVER_PEM_KEY | lwm2mserver_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in the server certificate file; |
transport.lwm2m.server.security.credentials.pem.key_password | LWM2M_SERVER_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
transport.lwm2m.server.security.credentials.keystore.type | LWM2M_SERVER_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
transport.lwm2m.server.security.credentials.keystore.store_file | LWM2M_SERVER_KEY_STORE | lwm2mserver.jks | Path to the key store that holds the SSL certificate |
transport.lwm2m.server.security.credentials.keystore.store_password | LWM2M_SERVER_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
transport.lwm2m.server.security.credentials.keystore.key_alias | LWM2M_SERVER_KEY_ALIAS | server | Key alias |
transport.lwm2m.server.security.credentials.keystore.key_password | LWM2M_SERVER_KEY_PASSWORD | server_ks_password | Password used to access the key |
transport.lwm2m.server.security.skip_validity_check_for_client_cert | TB_LWM2M_SERVER_SECURITY_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT | false | Only Certificate_x509: |
transport.lwm2m.bootstrap.enabled | LWM2M_ENABLED_BS | true | Enable/disable Bootstrap Server |
transport.lwm2m.bootstrap.id | LWM2M_SERVER_ID_BS | 111 | Default value in LwM2M client after start in mode Bootstrap for the object : name "LWM2M Security" field: "Short Server ID" (deviceProfile: Bootstrap.BOOTSTRAP SERVER.Short ID) |
transport.lwm2m.bootstrap.bind_address | LWM2M_BS_BIND_ADDRESS | 0.0.0.0 | LwM2M bootstrap server bind address. Bind to all interfaces by default |
transport.lwm2m.bootstrap.bind_port | LWM2M_BS_BIND_PORT | 5687 | LwM2M bootstrap server bind port |
transport.lwm2m.bootstrap.security.bind_address | LWM2M_BS_SECURITY_BIND_ADDRESS | 0.0.0.0 | LwM2M bootstrap server bind address for DTLS. Bind to all interfaces by default |
transport.lwm2m.bootstrap.security.bind_port | LWM2M_BS_SECURITY_BIND_PORT | 5688 | LwM2M bootstrap server bind address for DTLS. Bind to all interfaces by default |
transport.lwm2m.bootstrap.security.credentials.enabled | LWM2M_BS_CREDENTIALS_ENABLED | false | Whether to enable LWM2M bootstrap server X509 Certificate/RPK support |
transport.lwm2m.bootstrap.security.credentials.type | LWM2M_BS_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
transport.lwm2m.bootstrap.security.credentials.pem.cert_file | LWM2M_BS_PEM_CERT | lwm2mserver.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
transport.lwm2m.bootstrap.security.credentials.pem.key_file | LWM2M_BS_PEM_KEY | lwm2mserver_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in server certificate file |
transport.lwm2m.bootstrap.security.credentials.pem.key_password | LWM2M_BS_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
transport.lwm2m.bootstrap.security.credentials.keystore.type | LWM2M_BS_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
transport.lwm2m.bootstrap.security.credentials.keystore.store_file | LWM2M_BS_KEY_STORE | lwm2mserver.jks | Path to the key store that holds the SSL certificate |
transport.lwm2m.bootstrap.security.credentials.keystore.store_password | LWM2M_BS_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
transport.lwm2m.bootstrap.security.credentials.keystore.key_alias | LWM2M_BS_KEY_ALIAS | bootstrap | Key alias |
transport.lwm2m.bootstrap.security.credentials.keystore.key_password | LWM2M_BS_KEY_PASSWORD | server_ks_password | Password used to access the key |
transport.lwm2m.security.trust-credentials.enabled | LWM2M_TRUST_CREDENTIALS_ENABLED | false | Whether to load X509 trust certificates |
transport.lwm2m.security.trust-credentials.type | LWM2M_TRUST_CREDENTIALS_TYPE | PEM | Trust certificates store type (PEM - pem certificates file; KEYSTORE - java keystore) |
transport.lwm2m.security.trust-credentials.pem.cert_file | LWM2M_TRUST_PEM_CERT | lwm2mtruststorechain.pem | Path to the certificates file (holds trust certificates) |
transport.lwm2m.security.trust-credentials.keystore.type | LWM2M_TRUST_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
transport.lwm2m.security.trust-credentials.keystore.store_file | LWM2M_TRUST_KEY_STORE | lwm2mtruststorechain.jks | Path to the key store that holds the X509 certificates |
transport.lwm2m.security.trust-credentials.keystore.store_password | LWM2M_TRUST_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
transport.lwm2m.security.recommended_ciphers | LWM2M_RECOMMENDED_CIPHERS | false | Set usage of recommended cipher suites; true - allow only recommended cipher suites; false - allow not recommended cipher suites |
transport.lwm2m.security.recommended_supported_groups | LWM2M_RECOMMENDED_SUPPORTED_GROUPS | true | Set usage of recommended supported groups (curves); true - allow only recommended supported groups, false - allow not recommended supported groups |
transport.lwm2m.timeout | LWM2M_TIMEOUT | 120000 | Timeout of LwM2M operation |
transport.lwm2m.uplink_pool_size | LWM2M_UPLINK_POOL_SIZE | 10 | Thread pool size for processing of the LwM2M uplinks |
transport.lwm2m.downlink_pool_size | LWM2M_DOWNLINK_POOL_SIZE | 10 | Thread pool size for processing of the LwM2M downlinks |
transport.lwm2m.ota_pool_size | LWM2M_OTA_POOL_SIZE | 10 | Thread pool size for processing of the OTA updates |
transport.lwm2m.clean_period_in_sec | LWM2M_CLEAN_PERIOD_IN_SEC | 2 | Period of cleanup for the registrations in store |
transport.lwm2m.log_max_length | LWM2M_LOG_MAX_LENGTH | 1024 | Maximum log size |
transport.lwm2m.psm_activity_timer | LWM2M_PSM_ACTIVITY_TIMER | 10000 | PSM Activity Timer if not specified in the device profile |
transport.lwm2m.paging_transmission_window | LWM2M_PAGING_TRANSMISSION_WINDOW | 10000 | Paging Transmission Window for eDRX support if not specified in the device profile |
transport.snmp.enabled | SNMP_ENABLED | true | Enable/disable SNMP transport protocol |
transport.snmp.bind_port | SNMP_BIND_PORT | 1620 | Snmp bind port |
transport.snmp.response_processing.parallelism_level | SNMP_RESPONSE_PROCESSING_PARALLELISM_LEVEL | 4 | parallelism level for executor (workStealingPool) that is responsible for handling responses from SNMP devices |
transport.snmp.underlying_protocol | SNMP_UNDERLYING_PROTOCOL | udp | to configure SNMP to work over UDP or TCP |
transport.snmp.max_request_oids | SNMP_MAX_REQUEST_OIDS | 100 | Maximum size of a PDU (amount of OID mappings in a single SNMP request). The request will be split into multiple PDUs if mappings amount exceeds this number |
transport.snmp.request_chunk_delay_ms | SNMP_REQUEST_CHUNK_DELAY_MS | 100 | Delay after sending each request chunk (in case the request was split into multiple PDUs due to max_request_oids) |
transport.snmp.response.ignore_type_cast_errors | SNMP_RESPONSE_IGNORE_TYPE_CAST_ERRORS | false | To ignore SNMP response values that do not match the data type of the configured OID mapping (by default false - will throw an error if any value of the response not match configured data types) |
transport.snmp.scheduler_thread_pool_size | SNMP_SCHEDULER_THREAD_POOL_SIZE | 4 | Thread pool size for scheduler that executes device querying tasks |
transport.stats.enabled | TB_TRANSPORT_STATS_ENABLED | true | Enable/Disable the collection of transport statistics |
transport.stats.print-interval-ms | TB_TRANSPORT_STATS_PRINT_INTERVAL_MS | 60000 | Interval of transport statistics logging |
CoAP server parameters
Parameter | Environment Variable | Default Value | Description |
coap.enabled | COAP_SERVER_ENABLED | true | Enable/disable coap server. |
coap.bind_address | COAP_BIND_ADDRESS | 0.0.0.0 | CoAP bind address |
coap.bind_port | COAP_BIND_PORT | 5683 | CoAP bind port |
coap.dtls.enabled | COAP_DTLS_ENABLED | false | Enable/disable DTLS 1.2 support |
coap.dtls.retransmission_timeout | COAP_DTLS_RETRANSMISSION_TIMEOUT_MS | 9000 | RFC7925_RETRANSMISSION_TIMEOUT_IN_MILLISECONDS = 9000 |
coap.dtls.bind_address | COAP_DTLS_BIND_ADDRESS | 0.0.0.0 | CoAP DTLS bind address |
coap.dtls.bind_port | COAP_DTLS_BIND_PORT | 5684 | CoAP DTLS bind port |
coap.dtls.connection_id_length | COAP_DTLS_CONNECTION_ID_LENGTH | CoAP DTLS connection ID length. RFC 9146, Connection Identifier for DTLS 1.2 Default: off Control usage of DTLS connection ID length (CID). - 'off' to deactivate it. - 'on' to activate Connection ID support (same as CID 0 or more 0). - A positive value defines generated CID size in bytes. - A value of 0 means we accept using CID but will not generate one for foreign peer (enables support but not for incoming traffic). - A value between 0 and <= 4: SingleNodeConnectionIdGenerator is used - A value that are > 4: MultiNodeConnectionIdGenerator is used | |
coap.dtls.credentials.type | COAP_DTLS_CREDENTIALS_TYPE | PEM | Server credentials type (PEM - pem certificate file; KEYSTORE - java keystore) |
coap.dtls.credentials.pem.cert_file | COAP_DTLS_PEM_CERT | coapserver.pem | Path to the server certificate file (holds server certificate or certificate chain, may include server private key) |
coap.dtls.credentials.pem.key_file | COAP_DTLS_PEM_KEY | coapserver_key.pem | Path to the server certificate private key file. Optional by default. Required if the private key is not present in the server certificate file; |
coap.dtls.credentials.pem.key_password | COAP_DTLS_PEM_KEY_PASSWORD | server_key_password | Server certificate private key password (optional) |
coap.dtls.credentials.keystore.type | COAP_DTLS_KEY_STORE_TYPE | JKS | Type of the key store (JKS or PKCS12) |
coap.dtls.credentials.keystore.store_file | COAP_DTLS_KEY_STORE | coapserver.jks | Path to the key store that holds the SSL certificate |
coap.dtls.credentials.keystore.store_password | COAP_DTLS_KEY_STORE_PASSWORD | server_ks_password | Password used to access the key store |
coap.dtls.credentials.keystore.key_alias | COAP_DTLS_KEY_ALIAS | serveralias | Key alias |
coap.dtls.credentials.keystore.key_password | COAP_DTLS_KEY_PASSWORD | server_key_password | Password used to access the key |
coap.dtls.x509.skip_validity_check_for_client_cert | TB_COAP_X509_DTLS_SKIP_VALIDITY_CHECK_FOR_CLIENT_CERT | false | Skip certificate validity check for client certificates. |
coap.dtls.x509.dtls_session_inactivity_timeout | TB_COAP_X509_DTLS_SESSION_INACTIVITY_TIMEOUT | 86400000 | Inactivity timeout of DTLS session. Used to cleanup cache |
coap.dtls.x509.dtls_session_report_timeout | TB_COAP_X509_DTLS_SESSION_REPORT_TIMEOUT | 1800000 | Interval of periodic eviction of the timed-out DTLS sessions |
Device connectivity parameters
Parameter | Environment Variable | Default Value | Description |
device.connectivity.http.enabled | DEVICE_CONNECTIVITY_HTTP_ENABLED | true | If true check-connectivity service will include curl command to the list of all test commands using DEVICE_CONNECTIVITY_HTTP_HOST and DEVICE_CONNECTIVITY_HTTP_PORT variables |
device.connectivity.http.host | DEVICE_CONNECTIVITY_HTTP_HOST | Host of http transport service. If empty, the base URL will be used. | |
device.connectivity.http.port | DEVICE_CONNECTIVITY_HTTP_PORT | 8080 | Port of http transport service. If empty, default http port will be used. |
device.connectivity.https.enabled | DEVICE_CONNECTIVITY_HTTPS_ENABLED | false | If true check-connectivity service will include curl command to the list of all test commands using DEVICE_CONNECTIVITY_HTTPS_HOST and DEVICE_CONNECTIVITY_HTTPS_PORT variables |
device.connectivity.https.host | DEVICE_CONNECTIVITY_HTTPS_HOST | Host of http transport service. If empty, the base URL will be used. | |
device.connectivity.https.port | DEVICE_CONNECTIVITY_HTTPS_PORT | 443 | Port of http transport service. If empty, the default https port will be used. |
device.connectivity.mqtt.enabled | DEVICE_CONNECTIVITY_MQTT_ENABLED | true | If true mosquito command will be included to the list of all test commands using DEVICE_CONNECTIVITY_MQTT_HOST and DEVICE_CONNECTIVITY_MQTT_PORT |
device.connectivity.mqtt.host | DEVICE_CONNECTIVITY_MQTT_HOST | Host of mqtt transport service. If empty, the base url host will be used. | |
device.connectivity.mqtt.port | DEVICE_CONNECTIVITY_MQTT_PORT | 1883 | Port of mqtt transport service |
device.connectivity.mqtts.enabled | DEVICE_CONNECTIVITY_MQTTS_ENABLED | false | If true mosquito command will be included in the list of all test commands using DEVICE_CONNECTIVITY_MQTTS_HOST and DEVICE_CONNECTIVITY_MQTTS_PORT< |
device.connectivity.mqtts.host | DEVICE_CONNECTIVITY_MQTTS_HOST | Host of mqtt transport service. If empty, the base URL host will be used. | |
device.connectivity.mqtts.port | DEVICE_CONNECTIVITY_MQTTS_PORT | 8883 | Port of mqtt transport service. If empty, the default port for mqtts will be used. |
device.connectivity.mqtts.pem_cert_file | DEVICE_CONNECTIVITY_MQTTS_CA_ROOT_CERT | cafile.pem | Path to the MQTT CA root certificate file |
device.connectivity.coap.enabled | DEVICE_CONNECTIVITY_COAP_ENABLED | true | If true coap command will be included in the list of all test commands using DEVICE_CONNECTIVITY_COAP_HOST and DEVICE_CONNECTIVITY_COAP_PORT. |
device.connectivity.coap.host | DEVICE_CONNECTIVITY_COAP_HOST | Host of coap transport service. If empty, the base URL host will be used. | |
device.connectivity.coap.port | DEVICE_CONNECTIVITY_COAP_PORT | 5683 | Port of coap transport service. If empty, the default port for coap will be used. |
device.connectivity.coaps.enabled | DEVICE_CONNECTIVITY_COAPS_ENABLED | false | If true coap command will be included in the list of all test commands using DEVICE_CONNECTIVITY_COAPS_HOST and DEVICE_CONNECTIVITY_COAPS_PORT. |
device.connectivity.coaps.host | DEVICE_CONNECTIVITY_COAPS_HOST | Host of coap transport service. If empty, the base URL host will be used. | |
device.connectivity.coaps.port | DEVICE_CONNECTIVITY_COAPS_PORT | 5684 | Port of coap transport service. If empty, the default port for coaps will be used. |
Edges parameters
Parameter | Environment Variable | Default Value | Description |
edges.enabled | "false" | must be disabled on edge | |
edges.rpc.port | EDGES_RPC_PORT | 7070 | RPC port bind |
edges.rpc.client_max_keep_alive_time_sec | EDGES_RPC_CLIENT_MAX_KEEP_ALIVE_TIME_SEC | 1 | Specifies the minimum amount of time that should elapse between keepalive pings sent by the client This prevents clients from sending pings too frequently, which can be a nuisance to the server (potentially even a denial-of-service attack vector if abused) If a client sends pings more frequently than this interval, the server may terminate the connection. |
edges.rpc.keep_alive_time_sec | EDGES_RPC_KEEP_ALIVE_TIME_SEC | 10 | Sets the time of inactivity (no read operations on the connection) after which the server will send a keepalive ping to the client. This is used to ensure that the connection is still alive and to prevent network intermediaries from dropping connections due to inactivity. It's a way for the server to proactively check if the client is still responsive. |
edges.rpc.keep_alive_timeout_sec | EDGES_RPC_KEEP_ALIVE_TIMEOUT_SEC | 5 | Specifies the maximum amount of time the server waits for a response to its keepalive ping. If the ping is not acknowledged within this time frame, the server considers the connection dead and may close it. This timeout helps detect unresponsive clients. |
edges.rpc.ssl.enabled | EDGES_RPC_SSL_ENABLED | false | Enable/disable SSL support |
edges.rpc.ssl.cert | EDGES_RPC_SSL_CERT | certChainFile.pem | Cert file to be used during TLS connectivity to the cloud |
edges.rpc.ssl.private_key | EDGES_RPC_SSL_PRIVATE_KEY | privateKeyFile.pem | Private key file associated with the Cert certificate. This key is used in the encryption process during a secure connection |
edges.rpc.max_inbound_message_size | EDGES_RPC_MAX_INBOUND_MESSAGE_SIZE | 4194304 | Maximum size (in bytes) of inbound messages the cloud can handle from the edge. By default, it can handle messages up to 4 Megabytes |
edges.rpc.max_telemetry_message_size | EDGES_RPC_MAX_TELEMETRY_MESSAGE_SIZE | 0 | Maximum length of telemetry (time-series and attributes) message the cloud sends to the edge. By default, there is no limitation. |
edges.storage.max_read_records_count | EDGES_STORAGE_MAX_READ_RECORDS_COUNT | 50 | Max records of edge event to read from DB and sent to the edge |
edges.storage.no_read_records_sleep | EDGES_NO_READ_RECORDS_SLEEP | 1000 | Number of milliseconds to wait before the next check of edge events in DB |
edges.storage.sleep_between_batches | EDGES_SLEEP_BETWEEN_BATCHES | 60000 | Number of milliseconds to wait before resending failed batch of edge events to edge |
edges.max_high_priority_queue_size_per_session | EDGES_MAX_HIGH_PRIORITY_QUEUE_SIZE_PER_SESSION | 10000 | Max number of high priority edge events per edge session. No persistence - stored in memory |
edges.scheduler_pool_size | EDGES_SCHEDULER_POOL_SIZE | 1 | Number of threads that are used to check DB for edge events |
edges.send_scheduler_pool_size | EDGES_SEND_SCHEDULER_POOL_SIZE | 1 | Number of threads that are used to send downlink messages to edge over gRPC |
edges.grpc_callback_thread_pool_size | EDGES_GRPC_CALLBACK_POOL_SIZE | 1 | Number of threads that are used to convert edge events from DB into downlink messages and send them for delivery |
edges.state.persistToTelemetry | EDGES_PERSIST_STATE_TO_TELEMETRY | false | Persist state of edge (active, last connect, last disconnect) into timeseries or attributes tables. 'false' means to store edge state into attributes table |
Spring doc common parameters
Parameter | Environment Variable | Default Value | Description |
springdoc.api-docs.enabled | SWAGGER_ENABLED | true | If false swagger API docs will be unavailable |
springdoc.default-produces-media-type | SWAGGER_DEFAULT_PRODUCES_MEDIA_TYPE | application/json | Swagger default produces media-type |
Swagger common parameters
Parameter | Environment Variable | Default Value | Description |
swagger.api_path | SWAGGER_API_PATH | /api/** | General swagger match pattern of swagger UI links |
swagger.security_path_regex | SWAGGER_SECURITY_PATH_REGEX | /api/.* | General swagger match pattern path of swagger UI links |
swagger.non_security_path_regex | SWAGGER_NON_SECURITY_PATH_REGEX | /api/(?:noauth|v1)/.* | Nonsecurity API path match pattern of swagger UI links |
swagger.title | SWAGGER_TITLE | ThingsBoard REST API | The title on the API doc UI page |
swagger.description | SWAGGER_DESCRIPTION | ThingsBoard open-source IoT platform REST API documentation. | The description on the API doc UI page |
swagger.contact.name | SWAGGER_CONTACT_NAME | ThingsBoard team | The contact name on the API doc UI page |
swagger.contact.url | SWAGGER_CONTACT_URL | https://thingsboard.io | The contact URL on the API doc UI page |
swagger.contact.email | SWAGGER_CONTACT_EMAIL | info@thingsboard.io | The contact email on the API doc UI page |
swagger.license.title | SWAGGER_LICENSE_TITLE | Apache License Version 2.0 | The license title on the API doc UI page |
swagger.license.url | SWAGGER_LICENSE_URL | https://github.com/thingsboard/thingsboard/blob/master/LICENSE | Link to the license body on the API doc UI page |
swagger.version | SWAGGER_VERSION | The version of the API doc to display. Default to the package version. | |
swagger.group_name | SWAGGER_GROUP_NAME | thingsboard | The group name (definition) on the API doc UI page. |
Queue configuration parameters
Parameter | Environment Variable | Default Value | Description |
queue.type | TB_QUEUE_TYPE | in-memory | in-memory or kafka (Apache Kafka) or aws-sqs (AWS SQS) or pubsub (PubSub) or service-bus (Azure Service Bus) or rabbitmq (RabbitMQ) |
queue.prefix | TB_QUEUE_PREFIX | Global queue prefix. If specified, prefix is added before default topic name: 'prefix.default_topic_name'. Prefix is applied to all topics (and consumer groups for kafka). | |
queue.in_memory.stats.print-interval-ms | TB_QUEUE_IN_MEMORY_STATS_PRINT_INTERVAL_MS | 60000 | For debug level |
queue.kafka.bootstrap.servers | TB_KAFKA_SERVERS | localhost:9092 | Kafka Bootstrap nodes in "host:port" format |
queue.kafka.ssl.enabled | TB_KAFKA_SSL_ENABLED | false | Enable/Disable SSL Kafka communication |
queue.kafka.ssl.truststore.location | TB_KAFKA_SSL_TRUSTSTORE_LOCATION | The location of the trust store file | |
queue.kafka.ssl.truststore.password | TB_KAFKA_SSL_TRUSTSTORE_PASSWORD | The password of trust store file if specified | |
queue.kafka.ssl.keystore.location | TB_KAFKA_SSL_KEYSTORE_LOCATION | The location of the key store file. This is optional for the client and can be used for two-way authentication for the client | |
queue.kafka.ssl.keystore.password | TB_KAFKA_SSL_KEYSTORE_PASSWORD | The store password for the key store file. This is optional for the client and only needed if ‘ssl.keystore.location’ is configured. Key store password is not supported for PEM format | |
queue.kafka.ssl.key.password | TB_KAFKA_SSL_KEY_PASSWORD | The password of the private key in the key store file or the PEM key specified in ‘keystore.key’ | |
queue.kafka.acks | TB_KAFKA_ACKS | all | The number of acknowledgments the producer requires the leader to have received before considering a request complete. This controls the durability of records that are sent. The following settings are allowed:0, 1 and all |
queue.kafka.retries | TB_KAFKA_RETRIES | 1 | Number of retries. Resend any record whose send fails with a potentially transient error |
queue.kafka.compression.type | TB_KAFKA_COMPRESSION_TYPE | none | none or gzip |
queue.kafka.batch.size | TB_KAFKA_BATCH_SIZE | 16384 | Default batch size. This setting gives the upper bound of the batch size to be sent |
queue.kafka.linger.ms | TB_KAFKA_LINGER_MS | 1 | This variable creates a small amount of artificial delay—that is, rather than immediately sending out a record |
queue.kafka.max.request.size | TB_KAFKA_MAX_REQUEST_SIZE | 1048576 | The maximum size of a request in bytes. This setting will limit the number of record batches the producer will send in a single request to avoid sending huge requests |
queue.kafka.max.in.flight.requests.per.connection | TB_KAFKA_MAX_IN_FLIGHT_REQUESTS_PER_CONNECTION | 5 | The maximum number of unacknowledged requests the client will send on a single connection before blocking |
queue.kafka.buffer.memory | TB_BUFFER_MEMORY | 33554432 | The total bytes of memory the producer can use to buffer records waiting to be sent to the server |
queue.kafka.replication_factor | TB_QUEUE_KAFKA_REPLICATION_FACTOR | 1 | The multiple copies of data over the multiple brokers of Kafka |
queue.kafka.max_poll_interval_ms | TB_QUEUE_KAFKA_MAX_POLL_INTERVAL_MS | 300000 | The maximum delay between invocations of poll() method when using consumer group management. This places an upper bound on the amount of time that the consumer can be idle before fetching more records |
queue.kafka.max_poll_records | TB_QUEUE_KAFKA_MAX_POLL_RECORDS | 8192 | The maximum number of records returned in a single call of poll() method |
queue.kafka.max_partition_fetch_bytes | TB_QUEUE_KAFKA_MAX_PARTITION_FETCH_BYTES | 16777216 | The maximum amount of data per-partition the server will return. Records are fetched in batches by the consumer |
queue.kafka.fetch_max_bytes | TB_QUEUE_KAFKA_FETCH_MAX_BYTES | 134217728 | The maximum amount of data the server will return. Records are fetched in batches by the consumer |
queue.kafka.request.timeout.ms | TB_QUEUE_KAFKA_REQUEST_TIMEOUT_MS | 30000 | (30 seconds) |
queue.kafka.session.timeout.ms | TB_QUEUE_KAFKA_SESSION_TIMEOUT_MS | 10000 | (10 seconds) |
queue.kafka.auto_offset_reset | TB_QUEUE_KAFKA_AUTO_OFFSET_RESET | earliest | earliest, latest or none |
queue.kafka.use_confluent_cloud | TB_QUEUE_KAFKA_USE_CONFLUENT_CLOUD | false | Enable/Disable using of Confluent Cloud |
queue.kafka.confluent.ssl.algorithm | TB_QUEUE_KAFKA_CONFLUENT_SSL_ALGORITHM | https | The endpoint identification algorithm used by clients to validate server hostname. The default value is https |
queue.kafka.confluent.sasl.mechanism | TB_QUEUE_KAFKA_CONFLUENT_SASL_MECHANISM | PLAIN | The mechanism used to authenticate Schema Registry requests. SASL/PLAIN should only be used with TLS/SSL as a transport layer to ensure that clear passwords are not transmitted on the wire without encryption |
queue.kafka.confluent.sasl.config | TB_QUEUE_KAFKA_CONFLUENT_SASL_JAAS_CONFIG | org.apache.kafka.common.security.plain.PlainLoginModule required username=\"CLUSTER_API_KEY\" password=\"CLUSTER_API_SECRET\"; | Using JAAS Configuration for specifying multiple SASL mechanisms on a broker |
queue.kafka.confluent.security.protocol | TB_QUEUE_KAFKA_CONFLUENT_SECURITY_PROTOCOL | SASL_SSL | Protocol used to communicate with brokers. Valid values are: PLAINTEXT, SSL, SASL_PLAINTEXT, SASL_SSL |
queue.kafka.consumer-properties-per-topic.tb_ota_package.key | max.poll.records | Key-value properties for Kafka consumer per specific topic, e.g. tb_ota_package is a topic name for ota, tb_rule_engine.sq is a topic name for default SequentialByOriginator queue. Check TB_QUEUE_CORE_OTA_TOPIC and TB_QUEUE_RE_SQ_TOPIC params | |
queue.kafka.consumer-properties-per-topic.tb_ota_package.key.value | TB_QUEUE_KAFKA_OTA_MAX_POLL_RECORDS | 10 | Example of specific consumer properties value per topic |
queue.kafka.consumer-properties-per-topic.tb_version_control.key | max.poll.interval.ms | Example of specific consumer properties value per topic for VC | |
queue.kafka.consumer-properties-per-topic.tb_version_control.key.value | TB_QUEUE_KAFKA_VC_MAX_POLL_INTERVAL_MS | 600000 | Example of specific consumer properties value per topic for VC |
queue.kafka.consumer-properties-per-topic.tb_housekeeper.key | max.poll.records | Consumer properties for Housekeeper tasks topic | |
queue.kafka.consumer-properties-per-topic.tb_housekeeper.key.value | TB_QUEUE_KAFKA_HOUSEKEEPER_MAX_POLL_RECORDS | 1 | Amount of records to be returned in a single poll. For Housekeeper tasks topic, we should consume messages (tasks) one by one |
queue.kafka.consumer-properties-per-topic.tb_housekeeper.reprocessing.key | max.poll.records | Consumer properties for Housekeeper reprocessing topic | |
queue.kafka.consumer-properties-per-topic.tb_housekeeper.reprocessing.key.value | TB_QUEUE_KAFKA_HOUSEKEEPER_REPROCESSING_MAX_POLL_RECORDS | 1 | Amount of records to be returned in a single poll. For Housekeeper reprocessing topic, we should consume messages (tasks) one by one |
queue.kafka.other-inline | TB_QUEUE_KAFKA_OTHER_PROPERTIES | In this section you can specify custom parameters (semicolon separated) for Kafka consumer/producer/admin | |
queue.kafka.topic-properties.rule-engine | TB_QUEUE_KAFKA_RE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Rule Engine |
queue.kafka.topic-properties.core | TB_QUEUE_KAFKA_CORE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Core topics |
queue.kafka.topic-properties.transport-api | TB_QUEUE_KAFKA_TA_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:10;min.insync.replicas:1 | Kafka properties for Transport Api topics |
queue.kafka.topic-properties.notifications | TB_QUEUE_KAFKA_NOTIFICATIONS_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Notifications topics |
queue.kafka.topic-properties.js-executor | TB_QUEUE_KAFKA_JE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:104857600;partitions:100;min.insync.replicas:1 | Kafka properties for JS Executor topics |
queue.kafka.topic-properties.ota-updates | TB_QUEUE_KAFKA_OTA_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:10;min.insync.replicas:1 | Kafka properties for OTA updates topic |
queue.kafka.topic-properties.version-control | TB_QUEUE_KAFKA_VC_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Version Control topic |
queue.kafka.topic-properties.housekeeper | TB_QUEUE_KAFKA_HOUSEKEEPER_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:10;min.insync.replicas:1 | Kafka properties for Housekeeper tasks topic |
queue.kafka.topic-properties.housekeeper-reprocessing | TB_QUEUE_KAFKA_HOUSEKEEPER_REPROCESSING_TOPIC_PROPERTIES | retention.ms:7776000000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Housekeeper reprocessing topic; retention.ms is set to 90 days; partitions is set to 1 since only one reprocessing service is running at a time |
queue.kafka.topic-properties.edge | TB_QUEUE_KAFKA_EDGE_TOPIC_PROPERTIES | retention.ms:604800000;segment.bytes:52428800;retention.bytes:1048576000;partitions:1;min.insync.replicas:1 | Kafka properties for Edge topic |
queue.kafka.consumer-stats.enabled | TB_QUEUE_KAFKA_CONSUMER_STATS_ENABLED | true | Prints lag between consumer group offset and last messages offset in Kafka topics |
queue.kafka.consumer-stats.print-interval-ms | TB_QUEUE_KAFKA_CONSUMER_STATS_MIN_PRINT_INTERVAL_MS | 60000 | Statistics printing interval for Kafka's consumer-groups stats |
queue.kafka.consumer-stats.kafka-response-timeout-ms | TB_QUEUE_KAFKA_CONSUMER_STATS_RESPONSE_TIMEOUT_MS | 1000 | Time to wait for the stats-loading requests to Kafka to finish |
queue.aws_sqs.use_default_credential_provider_chain | TB_QUEUE_AWS_SQS_USE_DEFAULT_CREDENTIAL_PROVIDER_CHAIN | false | Use the default credentials provider for AWS SQS |
queue.aws_sqs.access_key_id | TB_QUEUE_AWS_SQS_ACCESS_KEY_ID | YOUR_KEY | Access key ID from AWS IAM user |
queue.aws_sqs.secret_access_key | TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY | YOUR_SECRET | Secret access key from AWS IAM user |
queue.aws_sqs.region | TB_QUEUE_AWS_SQS_REGION | YOUR_REGION | Region from AWS account |
queue.aws_sqs.threads_per_topic | TB_QUEUE_AWS_SQS_THREADS_PER_TOPIC | 1 | Number of threads per each AWS SQS queue in consumer |
queue.aws_sqs.producer_thread_pool_size | TB_QUEUE_AWS_SQS_EXECUTOR_THREAD_POOL_SIZE | 50 | Thread pool size for aws_sqs queue producer executor provider. Default value equals to AmazonSQSAsyncClient.DEFAULT_THREAD_POOL_SIZE |
queue.aws_sqs.queue-properties.rule-engine | TB_QUEUE_AWS_SQS_RE_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.core | TB_QUEUE_AWS_SQS_CORE_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.transport-api | TB_QUEUE_AWS_SQS_TA_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.notifications | TB_QUEUE_AWS_SQS_NOTIFICATIONS_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | AWS SQS queue properties. VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.js-executor | TB_QUEUE_AWS_SQS_JE_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 |
queue.aws_sqs.queue-properties.ota-updates | TB_QUEUE_AWS_SQS_OTA_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.version-control | TB_QUEUE_AWS_SQS_VC_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.aws_sqs.queue-properties.edge | TB_QUEUE_AWS_SQS_EDGE_QUEUE_PROPERTIES | VisibilityTimeout:30;MaximumMessageSize:262144;MessageRetentionPeriod:604800 | VisibilityTimeout in seconds;MaximumMessageSize in bytes;MessageRetentionPeriod in seconds |
queue.pubsub.project_id | TB_QUEUE_PUBSUB_PROJECT_ID | YOUR_PROJECT_ID | Project ID from Google Cloud |
queue.pubsub.service_account | TB_QUEUE_PUBSUB_SERVICE_ACCOUNT | YOUR_SERVICE_ACCOUNT | API Credentials in JSON format |
queue.pubsub.max_msg_size | TB_QUEUE_PUBSUB_MAX_MSG_SIZE | 1048576 | Message size for PubSub queue.Value in bytes |
queue.pubsub.max_messages | TB_QUEUE_PUBSUB_MAX_MESSAGES | 1000 | Number of messages per consumer |
queue.pubsub.executor_thread_pool_size | TB_QUEUE_PUBSUB_EXECUTOR_THREAD_POOL_SIZE | 0 | Thread pool size for pubsub queue executor provider. If set to 0 - default pubsub executor provider value will be used (5 * number of available processors) |
queue.pubsub.queue-properties.rule-engine | TB_QUEUE_PUBSUB_RE_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Rule Engine subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.pubsub.queue-properties.core | TB_QUEUE_PUBSUB_CORE_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Core subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.pubsub.queue-properties.transport-api | TB_QUEUE_PUBSUB_TA_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Transport API subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.pubsub.queue-properties.notifications | TB_QUEUE_PUBSUB_NOTIFICATIONS_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Version Control subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.pubsub.queue-properties.js-executor | TB_QUEUE_PUBSUB_JE_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | PubSub queue properties |
queue.pubsub.queue-properties.version-control | TB_QUEUE_PUBSUB_VC_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Transport Api subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.pubsub.queue-properties.edge | TB_QUEUE_PUBSUB_EDGE_QUEUE_PROPERTIES | ackDeadlineInSec:30;messageRetentionInSec:604800 | Pub/Sub properties for Edge subscribers, messages which will commit after ackDeadlineInSec period can be consumed again |
queue.service_bus.namespace_name | TB_QUEUE_SERVICE_BUS_NAMESPACE_NAME | YOUR_NAMESPACE_NAME | Azure namespace |
queue.service_bus.sas_key_name | TB_QUEUE_SERVICE_BUS_SAS_KEY_NAME | YOUR_SAS_KEY_NAME | Azure Service Bus Shared Access Signatures key name |
queue.service_bus.sas_key | TB_QUEUE_SERVICE_BUS_SAS_KEY | YOUR_SAS_KEY | Azure Service Bus Shared Access Signatures key |
queue.service_bus.max_messages | TB_QUEUE_SERVICE_BUS_MAX_MESSAGES | 1000 | Number of messages per a consumer |
queue.service_bus.queue-properties.rule-engine | TB_QUEUE_SERVICE_BUS_RE_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Rule Engine queues |
queue.service_bus.queue-properties.core | TB_QUEUE_SERVICE_BUS_CORE_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Core queues |
queue.service_bus.queue-properties.transport-api | TB_QUEUE_SERVICE_BUS_TA_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Transport Api queues |
queue.service_bus.queue-properties.notifications | TB_QUEUE_SERVICE_BUS_NOTIFICATIONS_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Notification queues |
queue.service_bus.queue-properties.js-executor | TB_QUEUE_SERVICE_BUS_JE_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus queue properties |
queue.service_bus.queue-properties.version-control | TB_QUEUE_SERVICE_BUS_VC_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Version Control queues |
queue.service_bus.queue-properties.edge | TB_QUEUE_SERVICE_BUS_EDGE_QUEUE_PROPERTIES | lockDurationInSec:30;maxSizeInMb:1024;messageTimeToLiveInSec:604800 | Azure Service Bus properties for Edge queues |
queue.rabbitmq.exchange_name | TB_QUEUE_RABBIT_MQ_EXCHANGE_NAME | By default empty | |
queue.rabbitmq.host | TB_QUEUE_RABBIT_MQ_HOST | localhost | RabbitMQ host used to establish connection |
queue.rabbitmq.port | TB_QUEUE_RABBIT_MQ_PORT | 5672 | RabbitMQ host used to establish a connection |
queue.rabbitmq.virtual_host | TB_QUEUE_RABBIT_MQ_VIRTUAL_HOST | / | Virtual hosts provide logical grouping and separation of resources |
queue.rabbitmq.username | TB_QUEUE_RABBIT_MQ_USERNAME | YOUR_USERNAME | Username for RabbitMQ user account |
queue.rabbitmq.password | TB_QUEUE_RABBIT_MQ_PASSWORD | YOUR_PASSWORD | User password for RabbitMQ user account |
queue.rabbitmq.automatic_recovery_enabled | TB_QUEUE_RABBIT_MQ_AUTOMATIC_RECOVERY_ENABLED | false | Network connection between clients and RabbitMQ nodes can fail. RabbitMQ Java client supports automatic recovery of connections and topology (queues, exchanges, bindings, and consumers) |
queue.rabbitmq.connection_timeout | TB_QUEUE_RABBIT_MQ_CONNECTION_TIMEOUT | 60000 | The connection timeout for the RabbitMQ connection factory |
queue.rabbitmq.handshake_timeout | TB_QUEUE_RABBIT_MQ_HANDSHAKE_TIMEOUT | 10000 | RabbitMQ has a timeout for connection handshake. When clients run in heavily constrained environments, it may be necessary to increase the timeout |
queue.rabbitmq.max_poll_messages | TB_QUEUE_RABBIT_MQ_MAX_POLL_MESSAGES | 1 | The maximum number of messages returned in a single call of doPoll() method |
queue.rabbitmq.queue-properties.rule-engine | TB_QUEUE_RABBIT_MQ_RE_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Rule Engine queues |
queue.rabbitmq.queue-properties.core | TB_QUEUE_RABBIT_MQ_CORE_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Core queues |
queue.rabbitmq.queue-properties.transport-api | TB_QUEUE_RABBIT_MQ_TA_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Transport API queues |
queue.rabbitmq.queue-properties.notifications | TB_QUEUE_RABBIT_MQ_NOTIFICATIONS_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Notification queues |
queue.rabbitmq.queue-properties.js-executor | TB_QUEUE_RABBIT_MQ_JE_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ queue properties |
queue.rabbitmq.queue-properties.version-control | TB_QUEUE_RABBIT_MQ_VC_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Version Control queues |
queue.rabbitmq.queue-properties.edge | TB_QUEUE_RABBIT_MQ_EDGE_QUEUE_PROPERTIES | x-max-length-bytes:1048576000;x-message-ttl:604800000 | RabbitMQ properties for Edge queues |
queue.partitions.hash_function_name | TB_QUEUE_PARTITIONS_HASH_FUNCTION_NAME | murmur3_128 | murmur3_32, murmur3_128 or sha256 |
queue.transport_api.requests_topic | TB_QUEUE_TRANSPORT_API_REQUEST_TOPIC | tb_transport.api.requests | Topic used to consume api requests from transport microservices |
queue.transport_api.responses_topic | TB_QUEUE_TRANSPORT_API_RESPONSE_TOPIC | tb_transport.api.responses | Topic used to produce api responses to transport microservices |
queue.transport_api.max_pending_requests | TB_QUEUE_TRANSPORT_MAX_PENDING_REQUESTS | 10000 | Maximum pending api requests from transport microservices to be handled by server |
queue.transport_api.max_requests_timeout | TB_QUEUE_TRANSPORT_MAX_REQUEST_TIMEOUT | 10000 | Maximum timeout in milliseconds to handle api request from transport microservice by server |
queue.transport_api.max_callback_threads | TB_QUEUE_TRANSPORT_MAX_CALLBACK_THREADS | 100 | Amount of threads used to invoke callbacks |
queue.transport_api.max_core_handler_threads | TB_QUEUE_TRANSPORT_MAX_CORE_HANDLER_THREADS | 16 | Amount of threads used for transport API requests |
queue.transport_api.request_poll_interval | TB_QUEUE_TRANSPORT_REQUEST_POLL_INTERVAL_MS | 25 | Interval in milliseconds to poll api requests from transport microservices |
queue.transport_api.response_poll_interval | TB_QUEUE_TRANSPORT_RESPONSE_POLL_INTERVAL_MS | 25 | Interval in milliseconds to poll api response from transport microservices |
queue.core.topic | TB_QUEUE_CORE_TOPIC | tb_core | Default topic name of Kafka, RabbitMQ, etc. queue |
queue.core.poll-interval | TB_QUEUE_CORE_POLL_INTERVAL_MS | 25 | Interval in milliseconds to poll messages by Core microservices |
queue.core.partitions | TB_QUEUE_CORE_PARTITIONS | 10 | Amount of partitions used by Core microservices |
queue.core.pack-processing-timeout | TB_QUEUE_CORE_PACK_PROCESSING_TIMEOUT_MS | 2000 | Timeout for processing a message pack by Core microservices |
queue.core.consumer-per-partition | TB_QUEUE_CORE_CONSUMER_PER_PARTITION | true | Enable/disable a separate consumer per partition for Core queue |
queue.core.ota.topic | TB_QUEUE_CORE_OTA_TOPIC | tb_ota_package | Default topic name for OTA updates |
queue.core.ota.pack-interval-ms | TB_QUEUE_CORE_OTA_PACK_INTERVAL_MS | 60000 | The interval of processing the OTA updates for devices. Used to avoid any harm to the network due to many parallel OTA updates |
queue.core.ota.pack-size | TB_QUEUE_CORE_OTA_PACK_SIZE | 100 | The size of OTA updates notifications fetched from the queue. The queue stores pairs of firmware and device ids |
queue.core.usage-stats-topic | TB_QUEUE_US_TOPIC | tb_usage_stats | Stats topic name for queue Kafka, RabbitMQ, etc. |
queue.core.stats.enabled | TB_QUEUE_CORE_STATS_ENABLED | true | Enable/disable statistics for Core microservices |
queue.core.stats.print-interval-ms | TB_QUEUE_CORE_STATS_PRINT_INTERVAL_MS | 60000 | Statistics printing interval for Core microservices |
queue.core.housekeeper.topic | TB_HOUSEKEEPER_TOPIC | tb_housekeeper | Topic name for Housekeeper tasks |
queue.core.housekeeper.reprocessing-topic | TB_HOUSEKEEPER_REPROCESSING_TOPIC | tb_housekeeper.reprocessing | Topic name for Housekeeper tasks to be reprocessed |
queue.core.housekeeper.poll-interval-ms | TB_HOUSEKEEPER_POLL_INTERVAL_MS | 500 | Poll interval for topics related to Housekeeper |
queue.core.housekeeper.task-processing-timeout-ms | TB_HOUSEKEEPER_TASK_PROCESSING_TIMEOUT_MS | 120000 | Timeout in milliseconds for task processing. Tasks that fail to finish on time will be submitted for reprocessing |
queue.core.housekeeper.disabled-task-types | TB_HOUSEKEEPER_DISABLED_TASK_TYPES | Comma-separated list of task types that shouldn't be processed. Available task types: DELETE_ATTRIBUTES, DELETE_TELEMETRY (both DELETE_LATEST_TS and DELETE_TS_HISTORY will be disabled), DELETE_LATEST_TS, DELETE_TS_HISTORY, DELETE_EVENTS, DELETE_ALARMS, UNASSIGN_ALARMS | |
queue.core.housekeeper.task-reprocessing-delay-ms | TB_HOUSEKEEPER_TASK_REPROCESSING_DELAY_MS | 3000 | Delay in milliseconds between tasks reprocessing |
queue.core.housekeeper.max-reprocessing-attempts | TB_HOUSEKEEPER_MAX_REPROCESSING_ATTEMPTS | 10 | Maximum amount of task reprocessing attempts. After exceeding, the task will be dropped |
queue.core.housekeeper.stats.enabled | TB_HOUSEKEEPER_STATS_ENABLED | true | Enable/disable statistics for Housekeeper |
queue.core.housekeeper.stats.print-interval-ms | TB_HOUSEKEEPER_STATS_PRINT_INTERVAL_MS | 60000 | Statistics printing interval for Housekeeper |
queue.vc.topic | TB_QUEUE_VC_TOPIC | tb_version_control | Default topic name for Kafka, RabbitMQ, etc. |
queue.vc.partitions | TB_QUEUE_VC_PARTITIONS | 10 | Number of partitions to associate with this queue. Used for scaling the number of messages that can be processed in parallel |
queue.vc.poll-interval | TB_QUEUE_VC_INTERVAL_MS | 25 | Interval in milliseconds between polling of the messages if no new messages arrive |
queue.vc.pack-processing-timeout | TB_QUEUE_VC_PACK_PROCESSING_TIMEOUT_MS | 180000 | Timeout before retrying all failed and timed-out messages from the processing pack |
queue.vc.request-timeout | TB_QUEUE_VC_REQUEST_TIMEOUT | 180000 | Timeout for a request to VC-executor (for a request for the version of the entity, for a commit charge, etc.) |
queue.vc.msg-chunk-size | TB_QUEUE_VC_MSG_CHUNK_SIZE | 250000 | Queue settings for Kafka, RabbitMQ, etc. Limit for single message size |
queue.js.request_topic | REMOTE_JS_EVAL_REQUEST_TOPIC | js_eval.requests | JS Eval request topic |
queue.js.response_topic_prefix | REMOTE_JS_EVAL_RESPONSE_TOPIC | js_eval.responses | JS Eval responses topic prefix that is combined with node id |
queue.js.max_pending_requests | REMOTE_JS_MAX_PENDING_REQUESTS | 10000 | JS Eval max pending requests |
queue.js.max_eval_requests_timeout | REMOTE_JS_MAX_EVAL_REQUEST_TIMEOUT | 60000 | JS Eval max request timeout |
queue.js.max_requests_timeout | REMOTE_JS_MAX_REQUEST_TIMEOUT | 10000 | JS max request timeout |
queue.js.max_exec_requests_timeout | REMOTE_JS_MAX_EXEC_REQUEST_TIMEOUT | 2000 | JS execution max request timeout |
queue.js.response_poll_interval | REMOTE_JS_RESPONSE_POLL_INTERVAL_MS | 25 | JS response poll interval |
queue.rule-engine.topic | TB_QUEUE_RULE_ENGINE_TOPIC | tb_rule_engine | Deprecated. It will be removed in the nearest releases |
queue.rule-engine.poll-interval | TB_QUEUE_RULE_ENGINE_POLL_INTERVAL_MS | 25 | Interval in milliseconds to poll messages by Rule Engine |
queue.rule-engine.pack-processing-timeout | TB_QUEUE_RULE_ENGINE_PACK_PROCESSING_TIMEOUT_MS | 2000 | Timeout for processing a message pack of Rule Engine |
queue.rule-engine.stats.enabled | TB_QUEUE_RULE_ENGINE_STATS_ENABLED | true | Enable/disable statistics for Rule Engine |
queue.rule-engine.stats.print-interval-ms | TB_QUEUE_RULE_ENGINE_STATS_PRINT_INTERVAL_MS | 60000 | Statistics printing interval for Rule Engine |
queue.rule-engine.stats.max-error-message-length | TB_QUEUE_RULE_ENGINE_MAX_ERROR_MESSAGE_LENGTH | 4096 | Max length of the error message that is printed by statistics |
queue.rule-engine.topic-deletion-delay | TB_QUEUE_RULE_ENGINE_TOPIC_DELETION_DELAY_SEC | 15 | After a queue is deleted (or the profile's isolation option was disabled), Rule Engine will continue reading related topics during this period before deleting the actual topics |
queue.rule-engine.management-thread-pool-size | TB_QUEUE_RULE_ENGINE_MGMT_THREAD_POOL_SIZE | 12 | Size of the thread pool that handles such operations as partition changes, config updates, queue deletion |
queue.transport.notifications_topic | TB_QUEUE_TRANSPORT_NOTIFICATIONS_TOPIC | tb_transport.notifications | For high-priority notifications that require minimum latency and processing time |
queue.transport.poll_interval | TB_QUEUE_TRANSPORT_NOTIFICATIONS_POLL_INTERVAL_MS | 25 | Interval in milliseconds to poll messages |
queue.edge.topic | TB_QUEUE_EDGE_TOPIC | tb_edge | Default topic name for Kafka, RabbitMQ, etc. |
queue.edge.partitions | TB_QUEUE_EDGE_PARTITIONS | 10 | Amount of partitions used by Edge services |
queue.edge.poll-interval | TB_QUEUE_EDGE_POLL_INTERVAL_MS | 25 | Poll interval for topics related to Edge services |
queue.edge.pack-processing-timeout | TB_QUEUE_EDGE_PACK_PROCESSING_TIMEOUT_MS | 10000 | Timeout for processing a message pack by Edge services |
queue.edge.pack-processing-retries | TB_QUEUE_EDGE_MESSAGE_PROCESSING_RETRIES | 3 | Retries for processing a failure message pack by Edge services |
queue.edge.consumer-per-partition | TB_QUEUE_EDGE_CONSUMER_PER_PARTITION | false | Enable/disable a separate consumer per partition for Edge queue |
queue.edge.stats.enabled | TB_QUEUE_EDGE_STATS_ENABLED | true | Enable/disable statistics for Edge services |
queue.edge.stats.print-interval-ms | TB_QUEUE_EDGE_STATS_PRINT_INTERVAL_MS | 60000 | Statistics printing interval for Edge services |
Event configuration parameters
Parameter | Environment Variable | Default Value | Description |
event.debug.max-symbols | TB_MAX_DEBUG_EVENT_SYMBOLS | 4096 | Maximum number of symbols per debug event. The event content will be truncated if needed |
General service parameters
Parameter | Environment Variable | Default Value | Description |
service.type | TB_SERVICE_TYPE | monolith | monolith or tb-core or tb-rule-engine |
service.id | TB_SERVICE_ID | Unique id for this service (autogenerated if empty) | |
service.rule_engine.assigned_tenant_profiles | TB_RULE_ENGINE_ASSIGNED_TENANT_PROFILES | Comma-separated list of tenant profile ids assigned to this Rule Engine. This Rule Engine will only be responsible for tenants with these profiles (in case 'isolation' option is enabled in the profile). | |
service.rule_engine.pubsub.executor_thread_pool_size | TB_RULE_ENGINE_PUBSUB_EXECUTOR_THREAD_POOL_SIZE | 0 | Thread pool size for pubsub rule node executor provider. If not set - default pubsub executor provider value will be used (5 * number of available processors) |
Metrics parameters
Parameter | Environment Variable | Default Value | Description |
metrics.enabled | METRICS_ENABLED | false | Enable/disable actuator metrics. |
metrics.timer.percentiles | METRICS_TIMER_PERCENTILES | 0.5 | Metrics percentiles returned by actuator for timer metrics. List of double values (divided by ,). |
metrics.system_info.persist_frequency | METRICS_SYSTEM_INFO_PERSIST_FREQUENCY_SECONDS | 60 | Persist frequency of system info (CPU, memory usage, etc.) in seconds |
metrics.system_info.ttl | METRICS_SYSTEM_INFO_TTL_DAYS | 7 | TTL in days for system info timeseries |
Version control parameters
Parameter | Environment Variable | Default Value | Description |
vc.thread_pool_size | TB_VC_POOL_SIZE | 6 | Pool size for handling export tasks |
vc.git.io_pool_size | TB_VC_GIT_POOL_SIZE | 3 | Pool size for handling the git IO operations |
vc.git.repositories-folder | TB_VC_GIT_REPOSITORIES_FOLDER | ${java.io.tmpdir}/repositories | Default storing repository path |
Notification system parameters
Parameter | Environment Variable | Default Value | Description |
notification_system.thread_pool_size | TB_NOTIFICATION_SYSTEM_THREAD_POOL_SIZE | 10 | Specify thread pool size for Notification System processing notification rules and notification sending. Recommend value <= 10 |
notification_system.rules.deduplication_durations | TB_NOTIFICATION_RULES_DEDUPLICATION_DURATIONS | NEW_PLATFORM_VERSION:0;RATE_LIMITS:14400000; | Semicolon-separated deduplication durations (in millis) for trigger types. Format: 'NotificationRuleTriggerType1:123;NotificationRuleTriggerType2:456' |
General management parameters
Parameter | Environment Variable | Default Value | Description |
management.endpoints.web.exposure.include | '${METRICS_ENDPOINTS_EXPOSE:info}' | Expose metrics endpoint (use value 'prometheus' to enable prometheus metrics). | |
management.health.elasticsearch.enabled | "false" | Enable the org.springframework.boot.actuate.elasticsearch.ElasticsearchRestClientHealthIndicator.doHealthCheck |
Mobile application settings for Thingsboard mobile application
Parameter | Environment Variable | Default Value | Description |
mobileApp.domain | TB_MOBILE_APP_DOMAIN | demo.thingsboard.io | Server domain name for Thingsboard Live mobile application |
mobileApp.googlePlayLink | TB_MOBILE_APP_GOOGLE_PLAY_LINK | https://play.google.com/store/apps/details?id=org.thingsboard.demo.app | Link to Google Play store for Thingsboard Live mobile application |
mobileApp.appStoreLink | TB_MOBILE_APP_APP_STORE_LINK | https://apps.apple.com/us/app/thingsboard-live/id1594355695 | Link to App Store for Thingsboard Live mobile application |