The Platform is configured via parameters that can be provided via a Environment variables Config file,
Currently most servers are configures using .yaml files. We are planning to switch to .toml format. The support does support both format in all versions.
Each value is loaded from different locations (highest priority first, e.g. 1. overrides 2.):
- Environment variables
- Config File
- Command line Flags
- Default values
Commandline and Environment Variables
Some options are only available via Environment Variables
Environment Variable | Commandline parameter | Description | Version |
---|---|---|---|
--config | Defile path of config file (default: lobaro-iot-platform.yml) | ||
LOB_JSON_LOGGING=1 | --json_logging=1 | Enable JSON Logging | >= 1.84.1 |
Configuration File
lobaro-backend.toml (Default Configuration)
# This is a generated example config file # Plase change the default values as required # stay in maintenance mode even after DB updates MaintenanceMode = false # Enable debug log output Debug = false # TCP port for Tekelek devices TekelekTcpPort = 54345 # TCP port for Dragino devices DraginoTcpPort = 5600 # Enable Hardware Provisioning EnableProvisioning = false # DevEUI Blocks for Hardware Provisioning DevEUIBlocks = [] # IMEI Blocks for Hardware Provisioning. The check digit can be omitted; if present, it will be verified. ImeiBlocks = [] # Logging related configuration parameters [Logging] # Frontend HTTP Server Configuration [Server] # Frontend URL without trailing slash (not needed when using a single domain) FrontendUrl = '' # Port to listen on, deprecated in favour of Bind. When Bins is set Port is ignored Port = 0 # Address to bind to, e.g. :80 Bind = ':80' # Enable development mode. Not safe for production! # Authentication might be disabled. DevMode = false # Token secret to encrypt API Tokens. When changed, all existing Tokens are invalidated. ApiTokenSecret = '' # Token secret to encrypt User Tokens. When changed, all existing Tokens are invalidated. OauthTokenSecret = '' # Token secret to encrypt User Refresh Tokens. When changed, all existing Tokens are invalidated. OauthRefreshTokenSecret = '' # Directory where all file based data is stored DataDir = './data' # Timeout for HTTP requests in milliseconds RequestTimeoutMs = 600000 # DTLS Configuration, used by CoAPs Server [Server.DtlsConfig] DtlsCertDir = '' DtlsCertName = '' AcceptPoolSize = 10000 # Customer specific branding configuration [Branding] PlatformName = 'IoT Platform' FrontendBaseUrl = '' DefaultLogoUrl = '/static/branding/logo.svg' LegalDisclosureUrl = 'https://www.lobaro.com/contact/' ParserDocUrl = 'https://doc.lobaro.com/x/Y4B5' DisplayDocLinks = true IntegrationDocUrl = 'https://doc.lobaro.com/x/YIB5' AllowRegistration = false Favicon = '/static/img/favicon.ico' # Postgres Database Configuration [Database] Database = 'postgres' # Schema for the database, default is public. If empty string the search_path will be determined by the db Schema = 'public' Username = 'postgres' Password = 'admin' Host = 'localhost' Port = 5432 SslMode = 'disable' MaxOpenConns = 90 MaxIdleConns = 20 # Enable debug log output for the database Debug = false AutoFixMigration = false # Threshold for slow queries in milliseconds SlowQueryThresholdMs = 5000 # Run DB updates before starting the core services MigrateBeforeMaintenance = false # Cache Configuration [Database.Cache] # Expiration time for the device cache in seconds, 0 = no cache DeviceExpirationSec = 600 # Disable the local cache LocalCacheDisabled = false # Expiration time for the local cache in seconds LocalCacheExpirationSec = 3600 # Purge time for the local cache in seconds LocalCachePurgeSec = 3600 # Email Server settings [Email] Server = '' Tls = false Username = '' Password = '' Sender = '' # CoAP(s) Server Configuration [CoapServer] # CoAP port CoapPort = 5683 # CoAPs port CoapsPort = 5684 # Defines in milliseconds the maximal duration how long the server will process a CoAP request before returning a result or an error CoapRequestTimeoutMs = 30000 # Defines in milliseconds how long the server will wait to resolve a pending downlink before sending an ACK without downlink information. Does not override CoapRequestTimeoutMs. Explanation: Under load the db could take longer to find a possible scheduled downlink. In this case the server would abandon the downlink query and send an ACK to the requesting device. CoapDownlinkTimeoutMs = 10000 # Digimondo Platform specific settings [Digimondo] ApiKey = '' # MQTT Broker Configuration for outbound MQTT Integrations [Mqtt] Name = '' ClientId = '' Broker = '' Username = '' Password = '' # Internal MQTT Broker Configuration [MqttBrokerConfig] StartBroker = false AdminUsername = 'admin' AdminPassword = 'admin' # port used for broker Port = 1883 # DevEUI Provisioning Configuration [DevEUIConfig] # When set to true, the server will assign a new DevEUI when a device with that DevEUI already exists in the platform CheckDeviceExistOnNewEui = false # Allows to enable/disable single features [FeatureToggle] HardwareActivationEnabled = true WmbusParserApiTabEnabled = true WmbusParserApiPublic = false # JavaScript Device Parser Configuration [Parser] TimeoutMs = 250 # Device Data Storage related Configuration [Data] # Default retention time for data in days, If 0 = no default retention time DefaultRetentionDays = 0 # Organisation related Configuration [Organisation] DefaultUserLimit = 0 DefaultMaxSubOrganisations = 0 MaxDepthSubOrganisations = 10 # NATS related Configuration. NATS is used as the internal Message Broker [Nats] # Start the internal nats server, with settings from nats.server StartNatsServer = true # Url represents a single NATS server url to which the client will be connecting Url = '' # Deprecated: Use url instead Host = 'localhost' # NATS server port to connect to Port = 4222 # Deprecated: Use url instead Username = '' # Deprecated: Use url instead Password = '' # Seed for the Nkey user as base32 NkeySeed = '' # Enable NATS for CoAP and CoAPs datasource EnableCoapDatasource = true # Size of the NATS client pool for publishing messages ClientPoolSize = 1000 # Hostname or IP address of the config companion ConfigCompanionHost = 'localhost' # Port of the config companion ConfigCompanionPort = 8099 # Number of workers for the uplink handler queue UplinkHandlerWorkers = 2 # Number of workers for the integrations queue IntegrationHandlerWorkers = 4 # Disable the parser service, useful when running external parser services DisableParser = false # NATS client configuration [Nats.Server] Host = 'localhost' Port = 4222 HTTPPort = 8222 # Maximum memory (RAM) size of JetStream streams in bytes JetStreamMaxMemory = 1073741824 # Maximum memory (disk) usage of JetStream streams in bytes JetStreamMaxStore = 0 # Path to store JetStream data JetStreamStoreDirectory = './data/jetstream' # Can be used to set up NATS users and permissions to access and/or monitor the internal NATS server. Can use either User/Password or Nkeys. InternalUser = [] # general Config regarding the REST API offered by the platform [RestApiConfig] LogBodyOnPanic = false LogHttpHeaderOnPanic = false # Integration related Configuration [Integration] # Default timeout for MQTT integrations in milliseconds MqttDefaultTimeoutMs = 10000 # Default timeout for HTTP integrations in milliseconds HttpDefaultTimeoutMs = 10000 # Rate limit for updating logging in case if success Seconds, 0 for no limit LoggingSuccessRateLimitSeconds = 10 # Rate limit for updating logging in case of error/failur in Seconds, 0 for no limit LoggingErrorRateLimitSeconds = 10