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

235 lines
4.7 KiB
Markdown

# 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
```bash
# 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)
- **URL:** http://localhost:9000
- **Console:** http://localhost:9001
- **Buckets:** iom-images, iom-exports
- **Användning:** Bilder, exports, backups
### Elasticsearch (Search)
- **URL:** http://localhost:9200
- **Användning:** Fulltextsökning, logganalys
### RabbitMQ (Message Queue)
- **URL:** http://localhost:15672
- **Användning:** Advanced messaging, event-driven arkitektur
### Headscale (VPN)
- **URL:** http://localhost:8080
- **Användning:** Zero-trust nätverk för noder
### Jenkins (CI/CD)
- **URL:** http://localhost:8081
- **Användning:** Bygg, test, deploy
### Registry (Container Registry)
- **URL:** http://localhost:5000
- **Användning:** Docker image-lagring
---
## Backup
```bash
# 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
```bash
# 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
```bash
# 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.**