İçeriğe geç

Yapılandırma

inSCADA tek bir JAR dosyası olarak dağıtılır. Tüm yapılandırma parametreleri JAR içindeki application.yml dosyasında varsayılan değerleriyle gömülüdür.

Windows kurulumu sonrası dizin yapısı:

C:\Program Files\inSCADA\
├── inscada.jar ← platform (tek dosya)
├── inscada-keystore.p12 ← SSL sertifika
├── inscada.cer ← dışa aktarılmış public sertifika
├── application.yml ← özelleştirilmiş yapılandırma (opsiyonel)
├── inSCADA_Service_Install.bat ← NSSM servis kurulum scripti
├── inSCADA_TimeserisDB_Service_Install.bat ← InfluxDB servis kurulum scripti
├── firewallsettings.bat ← Windows Firewall kural scripti
├── create-cert.bat ← SSL sertifika oluşturma (interaktif)
├── auto-create-cert.bat ← SSL sertifika oluşturma (otomatik)
├── files\ ← dosya depolama (SVG, rapor, ekler)
├── logs\ ← uygulama logları
│ └── log.log
└── influxdb-1.8.3-1\ ← InfluxDB zaman serisi veritabanı
├── influxd.exe
├── influx.exe
├── influxdb.conf
└── TimeseriesData\ ← tarihsel veri dosyaları
C:\Program Files\OpenJDK\
└── jdk-11.0.18.10-hotspot\ ← Java 11 runtime
└── bin\java.exe
C:\Program Files\PostgreSQL\12\ ← PostgreSQL veritabanı
└── bin\

Varsayılan ayarları değiştirmenin iki yolu vardır:

JAR’ın yanına (aynı dizine) bir application.yml dosyası koyarsanız, Spring Boot harici dosyayı otomatik algılar ve JAR içindeki varsayılanların üzerine yazar. Yalnızca değiştirmek istediğiniz parametreleri yazmanız yeterlidir:

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

Kurulum scripti bu yöntemi kullanır — parametreler doğrudan NSSM üzerinden -D flag’leri ile geçirilir:

-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
ParametreVarsayılanAçıklama
urljdbc:postgresql://localhost:5432/promisPostgreSQL bağlantı URL’si. Uzak sunucu için localhost yerine IP yazın
usernamepostgresVeritabanı kullanıcı adı
password1907Veritabanı şifresi
minimum-idle10Havuzdaki minimum boş bağlantı sayısı
maximum-pool-size25Maksimum eşzamanlı bağlantı sayısı
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
ParametreVarsayılanAçıklama
default_schemainscadaPostgreSQL şema adı
show_sqlfalseSQL sorgularını loga yaz (debug için)
batch_size20Toplu INSERT/UPDATE batch boyutu
ddl-autononeŞema otomatik oluşturma kapalı (Flyway yönetir)
spring:
influxdb:
database: inscada
url: http://localhost:8086
username: inscada
password: 19051905
ParametreVarsayılanAçıklama
urlhttp://localhost:8086InfluxDB HTTP API adresi
databaseinscadaInfluxDB veritabanı adı
usernameinscadaInfluxDB kullanıcı adı
passwordInfluxDB şifresi

InfluxDB 1.8 kullanılır ve kurulum dizini altında (influxdb-1.8.3-1/) yer alır. Değişken logları (tarihsel veriler) burada tutulur.

Kurulum sırasında otomatik oluşturulan saklama politikaları:

Retention PolicySüreVeri Tipi
autogenSınırsızVarsayılan
variable_value_rp365 günDeğişken değerleri
event_log_rp14 günOlay logları
fired_alarm_rp365 günAlarm geçmişi
auth_attempt_rp365 günGiriş denemeleri
spring:
redis:
host: localhost
port: 6379
ParametreVarsayılanAçıklama
hostlocalhostRedis sunucu adresi
port6379Redis port numarası

Redis, anlık değişken değerlerinin cache’lenmesi ve gerçek zamanlı veri dağıtımı için kullanılır.

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
ParametreVarsayılanAçıklama
server.port8082HTTPS port numarası
server.http.port8081HTTP port numarası
server.http.redirectfalseHTTP → HTTPS yönlendirme
ssl.enabledtrueSSL/TLS etkin
ssl.key-aliasinscadaSertifika alias’ı
ssl.key-storeSSL sertifika dosyası (PKCS12) yolu
ssl.key-store-passwordKeystore şifresi
PortProtokolKullanım
8081HTTPWeb arayüzü ve REST API
8082HTTPSWeb arayüzü ve REST API (şifreli)
8086HTTPInfluxDB API (dahili)
5432TCPPostgreSQL (dahili)
6379TCPRedis (dahili)
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
ParametreVarsayılanAçıklama
ins.node.idins01Node tanımlayıcı (cluster ortamında benzersiz olmalı)
ins.files.path./fsDosya depolama dizini (SVG, rapor, ek dosyalar)
ins.jwt.secret(otomatik)JWT token imzalama anahtarı. Boş bırakılırsa rastgele üretilir
ins.accessToken.duration5Access token süresi (dakika)
ins.refreshToken.duration1Refresh token süresi (gün)
ins.job.executor.max-threads1000Maksimum eşzamanlı iş parçacığı (script, bağlantı, rapor vb.)
ins.variable.value.list.size300Değişken son değer listesi boyutu
spring:
artemis:
enabled: false
mode: NATIVE
remote:
broker:
enabled: false
list:
- host: 192.168.1.5
port: 61616
ParametreVarsayılanAçıklama
artemis.enabledfalseDahili Artemis broker. Tek makine kurulumunda false
artemis.modeNATIVEBroker modu
remote.broker.enabledfalseUzak broker kullanımı (cluster/HA yapılandırması)
remote.broker.listUzak broker listesi (host + port)
ins:
cluster:
enabled: false
redis:
replication:
enabled: false

Cluster yapılandırması hakkında detaylı bilgi için Yedekli Mimari sayfasına bakın.

spring:
servlet:
multipart:
max-file-size: 256MB
max-request-size: 256MB
ParametreVarsayılanAçıklama
max-file-size256MBTekil dosya maksimum boyutu
max-request-size256MBİstek başına maksimum boyut
-Duser.timezone=Europe/Istanbul

Servis kurulum scriptinde JVM parametresi olarak belirtilir. Tarih/saat gösterimleri ve zamanlama işlemleri bu zaman dilimine göre çalışır.

spring:
flyway:
schemas: inscada
table: schema_version

Flyway, veritabanı şemasını otomatik yönetir. Güncelleme sırasında yeni migration’lar otomatik uygulanır. Manuel müdahale gerekmez.


inSCADA üç yapılandırma profili destekler:

Özel profil belirtilmediğinde kullanılır.

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

SQL logları etkinleşir. Geliştirme ve hata ayıklama için kullanılır. Kurulum scriptinde varsayılan olarak dev profili ayarlıdır.

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

InfluxDB Relay, Redis Sentinel ve uzak veritabanı ile yüksek erişilebilirlik test ortamı.

spring:
profiles: production
influxdb:
gzip: true

InfluxDB GZIP sıkıştırma etkinleşir. Ağ trafiğini azaltır.

Terminal window
:: NSSM ile profil değiştirme
nssm set inSCADA AppParameters "... -Dspring.profiles.active=production ..."
:: Veya komut satırından
java -jar inscada.jar --spring.profiles.active=production

NSSM (Non-Sucking Service Manager), inSCADA’yı Windows servisi olarak çalıştırır. Platform, bilgisayar açıldığında otomatik başlar ve arka planda çalışır.

Kurulum dizininde inSCADA_Service_Install.bat dosyası bulunur. Yönetici olarak çalıştırmanız yeterlidir:

Terminal window
:: Yönetici olarak çalıştırın
"C:\Program Files\inSCADA\inSCADA_Service_Install.bat"

Bu script şunları yapar:

  1. Mevcut inSCADA servisini durdurur ve kaldırır (varsa)
  2. Yeni servisi NSSM ile oluşturur
  3. Tüm JVM ve yapılandırma parametrelerini ayarlar
  4. Otomatik başlatma ve hata durumunda yeniden başlatma yapılandırır
  5. Servisi başlatır
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 de ayrı bir Windows servisi olarak çalışır:

Terminal window
:: Yönetici olarak çalıştırın
"C:\Program Files\inSCADA\inSCADA_TimeserisDB_Service_Install.bat"

Bu script inSCADA TimeSeries DB adında bir servis oluşturur:

AyarDeğer
ExecutableC:\Program Files\inSCADA\influxdb-1.8.3-1\influxd.exe
Configinfluxdb-1.8.3-1\influxdb.conf
StartOtomatik
RestartHata durumunda otomatik (5s gecikme)

Özel parametrelerle servis kurmak isterseniz:

Terminal window
:: NSSM'i indirin: https://nssm.cc/download
:: nssm.exe'yi PATH'e ekleyin veya tam yol ile çalıştırın
:: Servisi oluştur
nssm install inSCADA "C:\Program Files\OpenJDK\jdk-11.0.18.10-hotspot\bin\java.exe"
:: Çalışma dizini
nssm set inSCADA AppDirectory "C:\Program Files\inSCADA"
:: JVM parametreleri — ihtiyaca göre düzenleyin
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\""
:: Otomatik başlatma & hata yönetimi
nssm set inSCADA DisplayName "inSCADA Service"
nssm set inSCADA Start SERVICE_AUTO_START
nssm set inSCADA AppExit Default Restart
nssm set inSCADA AppRestartDelay 5000
:: Başlat
nssm start inSCADA
ParametreAçıklamaÖnerilen
-XmsBaşlangıç heap belleği512m
-XmxMaksimum heap belleği2048m (2 GB)

Büyük projeler (1000+ değişken, çok sayıda bağlantı) için:

-Xms1024m -Xmx4096m
Terminal window
:: Servisi başlat / durdur / yeniden başlat
nssm start inSCADA
nssm stop inSCADA
nssm restart inSCADA
:: Durum kontrol
nssm status inSCADA
:: Yapılandırmayı düzenle (GUI)
nssm edit inSCADA
:: Servisi kaldır
nssm remove inSCADA confirm

Windows standart komutları ile:

Terminal window
net start inSCADA
net stop inSCADA
sc query inSCADA
:: veya services.msc ile grafiksel yönetim

Kurulum dizinindeki auto-create-cert.bat scripti:

  • Self-signed PKCS12 keystore oluşturur
  • SAN (Subject Alternative Name) ile localhost, bilgisayar adı ve IP ekler
  • Public sertifikayı inscada.cer olarak dışa aktarır
  • Sertifikayı Windows Trusted Root’a otomatik ekler
Terminal window
:: Yönetici olarak çalıştırın
"C:\Program Files\inSCADA\auto-create-cert.bat"

create-cert.bat scripti özel değerler girmenizi sağlar:

Terminal window
"C:\Program Files\inSCADA\create-cert.bat"
:: Keystore dosya adı, şifre, CN, IP ve hostname sorar

Kendi CA sertifikanızı kullanmak için:

Terminal window
# PEM'den PKCS12 oluşturun
keytool -importkeystore -srckeystore my-cert.pfx \
-srcstoretype PKCS12 -destkeystore inscada-keystore.p12 \
-deststoretype PKCS12 -alias inscada
# Veya OpenSSL ile
openssl pkcs12 -export \
-in certificate.crt -inkey private.key \
-out inscada-keystore.p12 -name inscada

Sonra NSSM parametrelerini güncelleyin:

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

Kurulum dizinindeki firewallsettings.bat scripti gerekli port kurallarını ekler:

Terminal window
:: Yönetici olarak çalıştırın
"C:\Program Files\inSCADA\firewallsettings.bat"

Eklenen kurallar:

KuralYönPortProtokol
inSCADA HTTP (8081)Gelen + Giden8081TCP
inSCADA HTTPS (8082)Gelen + Giden8082TCP

Yeni kurulum sonrası kontrol edilmesi gereken parametreler:

ParametreKontrol
spring.datasource.passwordVarsayılan şifre değiştirildi mi?
server.ssl.key-store-passwordSertifika şifresi güçlü mü?
spring.influxdb.passwordInfluxDB şifresi güvenli mi?
ins.jwt.secretÜretim ortamında güçlü bir secret tanımlandı mı?
ins.accessToken.durationGüvenlik gereksinimlerine uygun mu? (varsayılan: 5 dk)
server.http.redirectÜretimde true olarak ayarlandı mı?
user.timezoneDoğru zaman dilimi ayarlı mı?
JVM -XmxProje boyutuna uygun bellek ayrıldı mı?
Firewallfirewallsettings.bat çalıştırıldı mı?
SSL SertifikaSertifika Trusted Root’a eklendi mi?