Skip to content

Configuration

inSCADA is distributed as a single JAR file. All configuration parameters are embedded within the JAR’s application.yml file with their default values.

Directory structure after Windows installation:

C:\Program Files\inSCADA\
├── inscada.jar ← platform (single file)
├── inscada-keystore.p12 ← SSL certificate
├── inscada.cer ← exported public certificate
├── application.yml ← customized configuration (optional)
├── inSCADA_Service_Install.bat ← NSSM service installation script
├── inSCADA_TimeserisDB_Service_Install.bat ← InfluxDB service installation script
├── firewallsettings.bat ← Windows Firewall rule script
├── create-cert.bat ← SSL certificate creation (interactive)
├── auto-create-cert.bat ← SSL certificate creation (automatic)
├── files\ ← file storage (SVG, reports, attachments)
├── logs\ ← application logs
│ └── log.log
└── influxdb-1.8.3-1\ ← InfluxDB time series database
├── influxd.exe
├── influx.exe
├── influxdb.conf
└── TimeseriesData\ ← historical data files
C:\Program Files\OpenJDK\
└── jdk-11.0.18.10-hotspot\ ← Java 11 runtime
└── bin\java.exe
C:\Program Files\PostgreSQL\12\ ← PostgreSQL database
└── bin\

There are two ways to change the default settings:

If you place an application.yml file next to the JAR (in the same directory), Spring Boot automatically detects the external file and overrides the defaults inside the JAR. You only need to write the parameters you want to change:

# C:\Program Files\inSCADA\application.yml
spring:
datasource:
url: jdbc:postgresql://192.168.1.100:5432/promis
password: strong_password
server:
http:
redirect: true

The installation script uses this method — parameters are passed directly via -D flags through NSSM:

-Dserver.ssl.key-store="C:\Program Files\inSCADA\inscada-keystore.p12"
-Dserver.ssl.key-store-password=19051905
-Dspring.influxdb.username=inscada
-Dspring.influxdb.password=19051905
-Dspring.profiles.active=dev
-Duser.timezone=Europe/Istanbul
-Dins.files.path="C:\Program Files\inSCADA\files"

spring:
datasource:
driver-class-name: org.postgresql.Driver
url: jdbc:postgresql://localhost:5432/promis
username: postgres
password: 1907
minimum-idle: 10
maximum-pool-size: 25
ParameterDefaultDescription
urljdbc:postgresql://localhost:5432/promisPostgreSQL connection URL. Replace localhost with IP for remote server
usernamepostgresDatabase username
password1907Database password
minimum-idle10Minimum idle connections in the pool
maximum-pool-size25Maximum concurrent connections
jpa:
properties:
hibernate:
dialect: org.hibernate.dialect.PostgreSQLDialect
show_sql: false
default_schema: inscada
jdbc:
batch_size: 20
order_inserts: true
order_updates: true
hibernate:
ddl-auto: none
ParameterDefaultDescription
default_schemainscadaPostgreSQL schema name
show_sqlfalseLog SQL queries (for debugging)
batch_size20Bulk INSERT/UPDATE batch size
ddl-autononeSchema auto-creation disabled (managed by Flyway)
spring:
influxdb:
database: inscada
url: http://localhost:8086
username: inscada
password: 19051905
ParameterDefaultDescription
urlhttp://localhost:8086InfluxDB HTTP API address
databaseinscadaInfluxDB database name
usernameinscadaInfluxDB username
passwordInfluxDB password

InfluxDB 1.8 is used and located under the installation directory (influxdb-1.8.3-1/). Variable logs (historical data) are stored here.

Retention policies automatically created during installation:

Retention PolicyDurationData Type
autogenUnlimitedDefault
variable_value_rp365 daysVariable values
event_log_rp14 daysEvent logs
fired_alarm_rp365 daysAlarm history
auth_attempt_rp365 daysLogin attempts
spring:
redis:
host: localhost
port: 6379
ParameterDefaultDescription
hostlocalhostRedis server address
port6379Redis port number

Redis is used for caching live variable values and real-time data distribution.

server:
port: 8082
ssl:
enabled: true
key-alias: inscada
key-store: "C:\\Program Files\\inSCADA\\inscada-keystore.p12"
key-store-type: PKCS12
key-store-password: 19051905
http:
redirect: false
port: 8081
ParameterDefaultDescription
server.port8082HTTPS port number
server.http.port8081HTTP port number
server.http.redirectfalseHTTP → HTTPS redirect
ssl.enabledtrueSSL/TLS enabled
ssl.key-aliasinscadaCertificate alias
ssl.key-storeSSL certificate file (PKCS12) path
ssl.key-store-passwordKeystore password
PortProtocolUsage
8081HTTPWeb interface and REST API
8082HTTPSWeb interface and REST API (encrypted)
8086HTTPInfluxDB API (internal)
5432TCPPostgreSQL (internal)
6379TCPRedis (internal)
ins:
node:
id: ins01
files:
path: "C:\\Program Files\\inSCADA\\files"
jwt:
secret:
accessToken:
duration: 5
refreshToken:
duration: 1
job:
executor:
max-threads: 1000
variable:
value:
list:
size: 300
ParameterDefaultDescription
ins.node.idins01Node identifier (must be unique in cluster environments)
ins.files.path./fsFile storage directory (SVG, reports, attachments)
ins.jwt.secret(auto)JWT token signing key. If left empty, a random key is generated
ins.accessToken.duration5Access token duration (minutes)
ins.refreshToken.duration1Refresh token duration (days)
ins.job.executor.max-threads1000Maximum concurrent threads (scripts, connections, reports, etc.)
ins.variable.value.list.size300Variable recent values list size
spring:
artemis:
enabled: false
mode: NATIVE
remote:
broker:
enabled: false
list:
- host: 192.168.1.5
port: 61616
ParameterDefaultDescription
artemis.enabledfalseBuilt-in Artemis broker. false for single-machine installations
artemis.modeNATIVEBroker mode
remote.broker.enabledfalseRemote broker usage (cluster/HA configuration)
remote.broker.listRemote broker list (host + port)
ins:
cluster:
enabled: false
redis:
replication:
enabled: false

For detailed information about cluster configuration, see the Redundant Architecture page.

spring:
servlet:
multipart:
max-file-size: 256MB
max-request-size: 256MB
ParameterDefaultDescription
max-file-size256MBMaximum single file size
max-request-size256MBMaximum size per request
-Duser.timezone=Europe/Istanbul

Specified as a JVM parameter in the service installation script. Date/time displays and scheduling operations run according to this time zone.

spring:
flyway:
schemas: inscada
table: schema_version

Flyway manages the database schema automatically. New migrations are applied automatically during updates. No manual intervention is required.


inSCADA supports three configuration profiles:

Used when no specific profile is specified.

spring:
profiles: dev
jpa:
properties:
hibernate:
show_sql: false
use_sql_comments: true
format_sql: true

SQL logs are enabled. Used for development and debugging. The dev profile is set by default in the installation script.

spring:
profiles: test
datasource:
url: jdbc:postgresql://192.168.2.123:5432/promis
influxdb:
url: http://192.168.2.100:9096
relay: true
cluster: influxdb_cluster
gzip: true
redis:
sentinel:
master: insredis
nodes: 192.168.2.154:26379, 192.168.2.118:26379, 192.168.2.136:26379

High availability test environment with InfluxDB Relay, Redis Sentinel, and remote database.

spring:
profiles: production
influxdb:
gzip: true

InfluxDB GZIP compression is enabled. Reduces network traffic.

Terminal window
:: Change profile with NSSM
nssm set inSCADA AppParameters "... -Dspring.profiles.active=production ..."
:: Or from the command line
java -jar inscada.jar --spring.profiles.active=production

NSSM (Non-Sucking Service Manager) runs inSCADA as a Windows service. The platform starts automatically when the computer boots and runs in the background.

The inSCADA_Service_Install.bat file is located in the installation directory. Simply run it as administrator:

Terminal window
:: Run as administrator
"C:\Program Files\inSCADA\inSCADA_Service_Install.bat"

This script does the following:

  1. Stops and removes the existing inSCADA service (if any)
  2. Creates a new service with NSSM
  3. Sets all JVM and configuration parameters
  4. Configures automatic startup and restart on failure
  5. Starts the service
Terminal window
@echo off
setlocal
set SERVICE_NAME="inSCADA"
set DISPLAY_NAME="inSCADA Service"
set JAVA_EXE="C:\Program Files\OpenJDK\jdk-11.0.18.10-hotspot\bin\java.exe"
set APP_DIR="C:\Program Files\inSCADA"
set APP_PARAMS="-Dserver.ssl.key-alias=inscada ^
-Dserver.ssl.key-store-password=19051905 ^
-Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" ^
-Dspring.influxdb.username=inscada ^
-Dspring.influxdb.password=19051905 ^
-Dspring.servlet.multipart.max-request-size=256MB ^
-Dspring.servlet.multipart.max-file-size=256MB ^
-Dins.variable.value.list.size=300 ^
-Djava.library.path=C:\Windows\system32 ^
-Dspring.profiles.active=dev ^
-Duser.timezone=Europe/Istanbul ^
-Dspring.datasource.url=jdbc:postgresql://localhost:5432/promis ^
-Dins.files.path=\"C:\Program Files\inSCADA\files\" ^
-jar \"C:\Program Files\inSCADA\inscada.jar\""
nssm stop %SERVICE_NAME% >nul 2>&1
nssm remove %SERVICE_NAME% confirm >nul 2>&1
nssm install %SERVICE_NAME% %JAVA_EXE%
nssm set %SERVICE_NAME% DisplayName "%DISPLAY_NAME%"
nssm set %SERVICE_NAME% AppDirectory %APP_DIR%
nssm set %SERVICE_NAME% AppParameters %APP_PARAMS%
nssm set %SERVICE_NAME% ObjectName LocalSystem
nssm set %SERVICE_NAME% Start SERVICE_AUTO_START
nssm set %SERVICE_NAME% AppExit Default Restart
nssm set %SERVICE_NAME% AppRestartDelay 5000
nssm start %SERVICE_NAME%

InfluxDB also runs as a separate Windows service:

Terminal window
:: Run as administrator
"C:\Program Files\inSCADA\inSCADA_TimeserisDB_Service_Install.bat"

This script creates a service named inSCADA TimeSeries DB:

SettingValue
ExecutableC:\Program Files\inSCADA\influxdb-1.8.3-1\influxd.exe
Configinfluxdb-1.8.3-1\influxdb.conf
StartAutomatic
RestartAutomatic on failure (5s delay)

If you want to create a service with custom parameters:

Terminal window
:: Download NSSM: https://nssm.cc/download
:: Add nssm.exe to PATH or run with full path
:: Create the service
nssm install inSCADA "C:\Program Files\OpenJDK\jdk-11.0.18.10-hotspot\bin\java.exe"
:: Working directory
nssm set inSCADA AppDirectory "C:\Program Files\inSCADA"
:: JVM parameters — adjust as needed
nssm set inSCADA AppParameters ^
"-Xms512m -Xmx4096m ^
-Dserver.ssl.key-alias=inscada ^
-Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" ^
-Dserver.ssl.key-store-password=19051905 ^
-Dspring.profiles.active=production ^
-Duser.timezone=Europe/Istanbul ^
-jar \"C:\Program Files\inSCADA\inscada.jar\""
:: Automatic startup & error handling
nssm set inSCADA DisplayName "inSCADA Service"
nssm set inSCADA Start SERVICE_AUTO_START
nssm set inSCADA AppExit Default Restart
nssm set inSCADA AppRestartDelay 5000
:: Start
nssm start inSCADA
ParameterDescriptionRecommended
-XmsInitial heap memory512m
-XmxMaximum heap memory2048m (2 GB)

For large projects (1000+ variables, many connections):

-Xms1024m -Xmx4096m
Terminal window
:: Start / stop / restart the service
nssm start inSCADA
nssm stop inSCADA
nssm restart inSCADA
:: Check status
nssm status inSCADA
:: Edit configuration (GUI)
nssm edit inSCADA
:: Remove the service
nssm remove inSCADA confirm

With standard Windows commands:

Terminal window
net start inSCADA
net stop inSCADA
sc query inSCADA
:: or graphical management via services.msc

The auto-create-cert.bat script in the installation directory:

  • Creates a self-signed PKCS12 keystore
  • Adds localhost, computer name, and IP with SAN (Subject Alternative Name)
  • Exports the public certificate as inscada.cer
  • Automatically adds the certificate to Windows Trusted Root
Terminal window
:: Run as administrator
"C:\Program Files\inSCADA\auto-create-cert.bat"

The create-cert.bat script allows you to enter custom values:

Terminal window
"C:\Program Files\inSCADA\create-cert.bat"
:: Prompts for keystore file name, password, CN, IP, and hostname

To use your own CA certificate:

Terminal window
# Create PKCS12 from PEM
keytool -importkeystore -srckeystore my-cert.pfx \
-srcstoretype PKCS12 -destkeystore inscada-keystore.p12 \
-deststoretype PKCS12 -alias inscada
# Or with OpenSSL
openssl pkcs12 -export \
-in certificate.crt -inkey private.key \
-out inscada-keystore.p12 -name inscada

Then update the NSSM parameters:

Terminal window
nssm set inSCADA AppParameters "... -Dserver.ssl.key-store=\"C:\Program Files\inSCADA\inscada-keystore.p12\" -Dserver.ssl.key-store-password=new_password ..."
nssm restart inSCADA

The firewallsettings.bat script in the installation directory adds the required port rules:

Terminal window
:: Run as administrator
"C:\Program Files\inSCADA\firewallsettings.bat"

Added rules:

RuleDirectionPortProtocol
inSCADA HTTP (8081)Inbound + Outbound8081TCP
inSCADA HTTPS (8082)Inbound + Outbound8082TCP

Parameters to check after a new installation:

ParameterCheck
spring.datasource.passwordHas the default password been changed?
server.ssl.key-store-passwordIs the certificate password strong?
spring.influxdb.passwordIs the InfluxDB password secure?
ins.jwt.secretHas a strong secret been defined for production?
ins.accessToken.durationDoes it meet security requirements? (default: 5 min)
server.http.redirectIs it set to true in production?
user.timezoneIs the correct time zone configured?
JVM -XmxHas adequate memory been allocated for the project size?
FirewallHas firewallsettings.bat been run?
SSL CertificateHas the certificate been added to Trusted Root?