Files
boc/iom/SELFHOSTED.md
T
Bernt bae705aa97 ARCHITECTURE: NFC roadmap, edge AI, audit logging
- Add NFC ePassport roadmap (ICAO 9303, eIDAS)
- Add TensorFlow.js edge face detection (BlazeFace)
- Add structured audit logger (GDPR-compliant)
- Risk scoring support

Part of KYC Apple Native UX v1.1.0
2026-06-29 16:24:48 +00:00

4.7 KiB

Self-Hosted Infrastructure

Allt är self-hosted. Inga externa beroenden.


Filosofi

"Om vi inte kontrollerar infrastrukturen, kontrollerar vi inte produkten."

Allt körs på egna servrar. Inga externa AI-tjänster. Inga externa lagringstjänster. Inga externa monitoreringstjänster.


Infrastruktur

Core Services

Tjänst Teknik Port Beskrivning
Database PostgreSQL + PostGIS 5432 Huvuddatabas
Cache Redis 6379 Cache + Message broker
Object Storage MinIO 9000/9001 S3-kompatibel lagring
Search Elasticsearch 9200 Fulltextsökning
Message Queue RabbitMQ 5672/15672 Advanced messaging

Monitoring & Logging

Tjänst Teknik Port Beskrivning
Metrics Prometheus 9090 Metrikinsamling
Dashboards Grafana 3000 Visualisering
Log Aggregation Loki 3100 Logghantering
Log Collector Promtail 9080 Loggskrapning

Networking

Tjänst Teknik Port Beskrivning
Reverse Proxy Nginx 80/443 Lastbalansering
VPN/Mesh Headscale 8080 Zero-trust nätverk

DevOps

Tjänst Teknik Port Beskrivning
CI/CD Jenkins 8081 Bygg och deploy
Container Registry Docker Registry 5000 Image-lagring
Backup Restic Krypterade backups

Application

Tjänst Teknik Port Beskrivning
API FastAPI 8000 Huvudapplikation
Worker Celery Bakgrundsjobb
Scheduler Celery Beat Schemalagda uppgifter

Snabbstart

# 1. Klona repo
git clone <repo-url>
cd iom

# 2. Konfigurera miljö
cp .env.example .env
# Redigera .env med dina värden

# 3. Starta allt
docker-compose -f docker-compose.selfhosted.yml up -d

# 4. Verifiera
docker-compose -f docker-compose.selfhosted.yml ps

# 5. Skapa första användare
curl -X POST http://localhost:8000/auth/register \
  -d '{"username": "admin", "password": "***", "role": "admin"}'

Tjänster

MinIO (Object Storage)

RabbitMQ (Message Queue)

Headscale (VPN)

Jenkins (CI/CD)

Registry (Container Registry)


Backup

# Manuell backup
./scripts/backup.sh

# Automatisk backup (dagligen)
# Redigerar crontab
crontab -e
# Lägg till:
0 2 * * * /path/to/iom/scripts/backup.sh

Övervakning

Grafana Dashboards

  • System Overview: CPU, minne, disk
  • API Metrics: Requests, latency, errors
  • Business Metrics: Observations, signals, decisions
  • AI Metrics: Model accuracy, predictions

Alerts

  • API nere
  • Hög felprocent
  • Disk full
  • Minne lågt
  • Database connections hög

Säkerhet

Nätverk

  • All kommunikation inom Docker-nätverk
  • Nginx som enda exponerad tjänst
  • Headscale för zero-trust VPN

Autentisering

  • JWT tokens
  • Role-based access control
  • API keys för tjänster

Kryptering

  • Restic för krypterade backups
  • HTTPS via Nginx
  • PostgreSQL SSL

Skalning

Horisontell skalning

# Skala API
docker-compose -f docker-compose.selfhosted.yml up -d --scale api=3

# Skala workers
docker-compose -f docker-compose.selfhosted.yml up -d --scale worker=5

Vertikal skalning

  • Öka resurser för PostgreSQL
  • Mer minne för Elasticsearch
  • Större disk för MinIO

Felsökning

# Loggar
docker-compose -f docker-compose.selfhosted.yml logs -f api
docker-compose -f docker-compose.selfhosted.yml logs -f worker

# Status
docker-compose -f docker-compose.selfhosted.yml ps

# Resurser
docker stats

# Nätverk
docker network inspect iom-network

Sammanfattning

Komplett self-hosted infrastruktur:

  • Database (PostgreSQL + PostGIS)
  • Cache (Redis)
  • Object Storage (MinIO)
  • Search (Elasticsearch)
  • Message Queue (RabbitMQ)
  • Monitoring (Prometheus + Grafana)
  • Logging (Loki + Promtail)
  • VPN (Headscale)
  • CI/CD (Jenkins)
  • Registry (Docker Registry)
  • Backup (Restic)
  • API (FastAPI)
  • Workers (Celery)

Inga externa beroenden. Full kontroll.