Systemkomponenter

Kommunal räddningstjänst – systemarkitektur och infrastruktur

Version 1.0 – September 2025

Innehållsförteckning

Systemöversikt

Systemet är byggt för att stödja både små kommunala räddningstjänster och stora räddningstjänstförbund med flera kommuner och stationer. Arkitekturen är designad för hög tillgänglighet, säkerhet och skalbarhet.

Systemarkitektur

Översiktsdiagram över systemarkitekturen med alla komponenter och deras relationer.

Systemöversikt

graph TB subgraph "Användare" U1[Webbläsare] U2[Mobilapp] U3[API-klienter] end subgraph "Load Balancer" LB[HAProxy/Nginx] end subgraph "Autentisering" IdP[Egen IdP] SAML[SAML2] MFA[Tvåfaktor] end subgraph "Applikationsservrar" APP1[Webbserver 1
Ubuntu + PHP/Node.js] APP2[Webbserver 2
Ubuntu + PHP/Node.js] end subgraph "API & Databas" API[REST API Server] DB1[(PostgreSQL
Primary)] DB2[(PostgreSQL
Standby)] PGIS[PostGIS] end subgraph "Integrationsmotor" TEIS[Teis] end subgraph "Externa system" SOS[SOS Alarm] MSB[MSB] TKARTOR[T-Kartor GIS] RAKEL[Rakel] EKONOMI[Ekonomisystem] end subgraph "Monitoring" MON[Prometheus/Grafana] LOG[ELK Stack] end U1 --> LB U2 --> LB U3 --> LB LB --> IdP IdP --> SAML SAML --> MFA MFA --> APP1 MFA --> APP2 APP1 --> API APP2 --> API API --> DB1 DB1 --> DB2 DB1 --> PGIS TEIS --> SOS TEIS --> MSB TEIS --> TKARTOR TEIS --> RAKEL TEIS --> EKONOMI APP1 --> TEIS APP2 --> TEIS APP1 --> MON APP2 --> MON API --> MON DB1 --> LOG style LB fill:#e1f5fe style IdP fill:#f3e5f5 style API fill:#e3f2fd style TEIS fill:#fff3e0 style DB1 fill:#e8f5e8 style SOS fill:#ffebee

Infrastruktur

Systemet kräver en robust infrastruktur med redundans och hög tillgänglighet. Följande komponenter är nödvändiga:

Minimikrav

Servrar & Operativsystem

Applikationsservrar

KomponentSpecifikationBeskrivning
OperativsystemUbuntu Server 22.04 LTSLångtidsstöd, säkerhetsuppdateringar till 2027
WebbserverNginx 1.22+ eller Apache 2.4+Reverse proxy och statisk filhantering
ApplikationsserverPHP 8.1+ (FPM) eller Node.js 18+Kör applikationslogiken
Process ManagerPM2 (Node.js) eller PHP-FPMHanterar applikationsprocesser
Minne8 GB RAM (min), 16 GB (rekommenderat)För applikationsprocesser
CPU4 kärnor (min), 8 kärnor (rekommenderat)För parallell bearbetning
Disk100 GB SSD (min), 500 GB SSD (rekommenderat)För operativsystem och applikationer
Nätverk1 Gbps (min), 10 Gbps (rekommenderat)För extern kommunikation

Load Balancer

KomponentSpecifikationBeskrivning
Load BalancerHAProxy 2.6+ eller NginxFördelar trafik mellan applikationsservrar
SSL/TLSLet's Encrypt eller kommersiell certifikatKrypterad kommunikation (HTTPS)
Health ChecksInbyggt i HAProxy/NginxKontrollerar att servrar är tillgängliga
Session PersistenceSticky sessionsFör användarsessioner
Minne4 GB RAMFör load balancer-processer
CPU2 kärnorFör trafikhantering

Monitoring & Logging Servrar

KomponentSpecifikationBeskrivning
MonitoringPrometheus + GrafanaMätvärden och visualisering
LoggingELK Stack (Elasticsearch, Logstash, Kibana)Centraliserad logghantering
Minne16 GB RAMFör loggindexering och queries
CPU4 kärnorFör loggbehandling
Disk500 GB SSD + 2 TB HDDSSD för index, HDD för arkiv

Databas

PostgreSQL

KomponentSpecifikationBeskrivning
DatabasmotorPostgreSQL 15+Relationsdatabas med ACID-garantier
GeodataPostGIS 3.3+Geografiska funktioner (SWEREF 99 TM, WGS84)
ReplikationStreaming ReplicationPrimary + Standby för hög tillgänglighet
BackuppgBackRest eller pg_basebackupAutomatiska säkerhetskopior
Minne32 GB RAM (min), 64 GB (rekommenderat)För databasbuffer och cache
CPU8 kärnor (min), 16 kärnor (rekommenderat)För databasprocesser
Disk1 TB SSD (min), 2 TB SSD (rekommenderat)För databasfiler
Backup Storage5 TB HDD eller objektlagringFör säkerhetskopior
Connection PoolingPgBouncerHanterar databasanslutningar

Databaskonfiguration

  • Encoding: UTF-8
  • Locale: sv_SE.UTF-8
  • Time Zone: Europe/Stockholm
  • Max Connections: 200 (konfigureras via PgBouncer)
  • Shared Buffers: 25% av RAM
  • Effective Cache Size: 75% av RAM
  • Maintenance Work Mem: 2 GB
  • Checkpoint Segments: 32

Integrationsmotor (Teis)

Teis Integration Platform

KomponentSpecifikationBeskrivning
IntegrationsmotorTeis 4.0+Enterprise Service Bus för systemintegration
ProtokollREST, SOAP, FTP/SFTP, JMS, MQTTStöd för olika kommunikationsprotokoll
MeddelandeformatJSON, XML, CSV, EDIOlika dataformat för integration
TransformeringXSLT, JSONPath, XPathDatatransformering mellan system
RoutningContent-based routingIntelligent meddelanderoutning
FelhanteringDead Letter QueueHantering av misslyckade meddelanden
MonitoringInbyggd dashboardÖvervakning av integrationer
Minne16 GB RAMFör integrationsprocesser
CPU8 kärnorFör parallell bearbetning
Disk200 GB SSDFör Teis-installation och loggar

Integrationer

  • SOS Alarm: Larmmottagning via REST API eller SOAP
  • MSB: Händelserapportering via REST API
  • T-Kartor GIS: Kartdata och geografiska tjänster via WMS/WFS
  • Rakel: Talgruppskommunikation via API
  • Ekonomisystem: Fakturering och ekonomidata via REST/SOAP
  • E-post: Notifieringar via SMTP
  • SMS: Notifieringar via SMS-gateway

Autentisering & Säkerhet

Identity Provider (IdP)

KomponentSpecifikationBeskrivning
IdPKeycloak 20+ eller Shibboleth IdP 4+Centraliserad identitetshantering
ProtokollSAML 2.0, OpenID Connect, OAuth 2.0Standardiserade autentiseringsprotokoll
AnvändarregisterLDAP/Active Directory eller lokal databasAnvändarhantering
TvåfaktorTOTP (Google Authenticator), SMS, E-postYtterligare säkerhetslager
Enkel inloggningSSO via SAML2En inloggning för alla system
Session ManagementInbyggt i IdPHantering av användarsessioner
Minne8 GB RAMFör IdP-processer
CPU4 kärnorFör autentiseringsprocesser
Disk100 GB SSDFör IdP-installation och loggar

SAML2 Service Provider (SP)

KomponentSpecifikationBeskrivning
SAML2 SPmod_auth_mellon (Apache) eller Shibboleth SPSAML2-autentisering för webbapplikationer
MetadataXML-filer för IdP och SPKonfiguration av SAML2-federation
AssertionSAML2 AssertionAutentiseringsbevis från IdP
Attribute MappingAnvändarattribut från IdPMappning av användarattribut

Säkerhetskomponenter

KomponentSpecifikationBeskrivning
Firewalliptables eller UFWNätverkssäkerhet
SSL/TLSTLS 1.3, Let's EncryptKrypterad kommunikation
Intrusion DetectionFail2banSkydd mot brute force-attacker
Vulnerability ScanningOpenVAS eller NessusRegelbunden sårbarhetsskanning
Backup EncryptionGPG eller AES-256Krypterade säkerhetskopior
Access ControlRBAC (Role-Based Access Control)Rollbaserad åtkomstkontroll
Audit LoggingCentraliserad loggningSpårbarhet av användaraktivitet

Säkerhetskrav

  • GDPR: Personuppgiftshantering enligt GDPR
  • MSBFS 2020:7/2020:8: IT-säkerhetsskydd för statliga myndigheter
  • Regelbunden uppdatering: Säkerhetsuppdateringar minst månadsvis
  • Penetrationstest: Årlig penetrationstestning
  • Incident Response: Plan för hantering av säkerhetsincidenter

Externa system

Integrerade system

SystemProtokollBeskrivning
SOS AlarmREST API, SOAPLarmmottagning och insatsrapportering
MSBREST APIHändelserapportering och statistik
T-Kartor GISWMS, WFS, REST APIKartdata och geografiska tjänster
RakelREST APITalgruppskommunikation och samverkan
EkonomisystemREST API, SOAP, CSVFakturering och ekonomidata
E-postserverSMTP, IMAPE-postnotifieringar
SMS-gatewayREST API, SMPPSMS-notifieringar
LDAP/Active DirectoryLDAP, LDAPSAnvändarregister för IdP

Integrationer via Teis

  • SOS Alarm: Automatisk larmmottagning, insatsrapportering
  • MSB: Automatisk händelserapportering enligt MSB:s krav
  • T-Kartor GIS: Kartvisning, geokodning, ruttplanering
  • Rakel: Talgruppskommunikation vid större insatser
  • Ekonomisystem: Fakturering av tillsyner, tillstånd, kontroller
  • Notifieringar: E-post och SMS för viktiga händelser

Monitoring & Logging

Monitoring

KomponentSpecifikationBeskrivning
Metrics CollectionPrometheus 2.40+Insamling av mätvärden
VisualizationGrafana 9.0+Visualisering av mätvärden
AlertingAlertmanagerVarningar vid problem
System MetricsNode ExporterSystemmätvärden (CPU, minne, disk)
Database MetricsPostgreSQL ExporterDatabasmätvärden
Application MetricsCustom exportersApplikationsspecifika mätvärden
Uptime MonitoringUptime Kuma eller PingdomÖvervakning av systemtillgänglighet

Logging

KomponentSpecifikationBeskrivning
Log AggregationElasticsearch 8.0+Centraliserad loggsamling och sökning
Log ProcessingLogstash 8.0+Loggbehandling och transformering
Log VisualizationKibana 8.0+Visualisering och analys av loggar
Log ShippingFilebeat, FluentdTransport av loggar från servrar
Application LogsStructured logging (JSON)Strukturerade applikationsloggar
Audit LogsSeparate audit log indexSpårbarhet för säkerhetsgranskning
Log Retention90 dagar (aktiv), 1 år (arkiv)Lagringstid för loggar

Övervakade mätvärden

  • System: CPU, minne, disk, nätverk
  • Databas: Anslutningar, queries, replikationsstatus, backup-status
  • Applikation: Response time, error rate, throughput
  • Integrationer: Meddelandehastighet, felhastighet, köstorlek
  • Säkerhet: Inloggningsförsök, misslyckade autentiseringar, säkerhetshändelser

Backup & Disaster Recovery

Backup-strategi

TypFrekvensRetentionBeskrivning
Full BackupVeckovis4 veckorKomplett säkerhetskopia av databas
Incremental BackupDagligen30 dagarInkrementella säkerhetskopior
Transaction Log BackupVar 15:e minut7 dagarTransaktionsloggar för point-in-time recovery
File System BackupDagligen30 dagarSäkerhetskopior av konfigurationsfiler
Application BackupDagligen30 dagarSäkerhetskopior av applikationsfiler

Disaster Recovery Plan

  • RTO (Recovery Time Objective): 4 timmar
  • RPO (Recovery Point Objective): 15 minuter
  • Backup Testing: Månadsvis test av återställning
  • Off-site Backup: Säkerhetskopior lagras på separat plats
  • Disaster Recovery Site: Sekundär datacenter för failover

Nätverk

Nätverksarkitektur

KomponentSpecifikationBeskrivning
DMZSeparate network segmentDemilitariserad zon för externa tjänster
Internal NetworkPrivate network (10.0.0.0/8)Internt nätverk för applikationsservrar
Database NetworkPrivate network (10.1.0.0/16)Isolerat nätverk för databasservrar
Management NetworkPrivate network (10.2.0.0/16)Hanteringsnätverk för administration
VPNOpenVPN eller WireGuardFjärråtkomst för administration
DNSInternal DNS serverNamnmatchning för interna tjänster
NTPInternal NTP serverTidssynkronisering

Installation & Konfiguration

Installationssteg

  1. Infrastruktur: Installera och konfigurera Ubuntu-servrar
  2. Nätverk: Konfigurera nätverk, firewall och load balancer
  3. Databas: Installera PostgreSQL med PostGIS och konfigurera replikering
  4. IdP: Installera och konfigurera Keycloak/Shibboleth IdP
  5. SAML2: Konfigurera SAML2-federation mellan IdP och SP
  6. Tvåfaktor: Aktivera tvåfaktor-autentisering i IdP
  7. Teis: Installera och konfigurera Teis-integrationsmotor
  8. Applikation: Installera och konfigurera webbapplikationen
  9. Integrationer: Konfigurera integrationer med externa system
  10. Monitoring: Installera och konfigurera Prometheus/Grafana och ELK Stack
  11. Backup: Konfigurera automatiska säkerhetskopior
  12. Testning: Testa alla komponenter och integrationer

Källor (urval): MSBFS 2020:7/2020:8 (IT-säkerhetsskydd); GDPR (personuppgiftshantering); Ubuntu Server dokumentation; PostgreSQL dokumentation; Teis dokumentation; SAML2 specifikation; Keycloak dokumentation.