bae705aa97
- 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
287 lines
10 KiB
Markdown
287 lines
10 KiB
Markdown
# Infrastruktur-rapport — Nedtaktning 2026-06-14/15
|
||
**Utförd av:** Bernt (AI-agent)
|
||
**Datum:** 2026-06-14 00:00 – 2026-06-15 03:50 UTC
|
||
**Beslut av:** Erik Svensson
|
||
**Syfte:** Maximera ekonomisk återhållsamhet. Behåll endast quiXzoom-kritisk infrastruktur.
|
||
|
||
---
|
||
|
||
## FÖRE — Maj 2026
|
||
|
||
### Månadskostnad (maj, faktisk)
|
||
| Post | USD/mån |
|
||
|---|---|
|
||
| Savings Plans (Compute, 1år No Upfront) | 2 461 |
|
||
| EC2 Compute (utöver SP) | 922 |
|
||
| EC2 Other | 502 |
|
||
| ECS | 305 |
|
||
| MSK Kafka (3 brokers) | 340 |
|
||
| VPC/NAT Gateway | 228 |
|
||
| RDS (2 instanser) | 156 |
|
||
| CloudWatch | 138 |
|
||
| ELB (4 st) | 39 |
|
||
| ElastiCache | 63 |
|
||
| EKS | 74 |
|
||
| Bedrock | 63 |
|
||
| Kinesis | 23 |
|
||
| GuardDuty | 105 |
|
||
| Övrigt (Route53/S3/KMS/ECR/etc) | 60 |
|
||
| **TOTALT (exkl. skatt)** | **~5 420 USD/mån** |
|
||
|
||
### EC2-instanser (maj)
|
||
| Instans | Typ | Status | Funktion |
|
||
|---|---|---|---|
|
||
| server-2 (i-09b2204a52c2f33c9) | r8g.4xlarge | running | quiXzoom + AAMOS — ALLT |
|
||
| server-1 (i-0f5b6425bc415ce20) | r8g.4xlarge | stopped | Dubblett, amos + nginx + ollama |
|
||
| server-3-redundancy (i-0fc20ddba6bb17ead) | r6g.xlarge | running→stopped | Standby utan syfte |
|
||
| graviton-worker ×2 | r6g.2xlarge | running | ECS/K8s workers |
|
||
| karpenter-graviton ×2 | r7g.4xlarge | running | EKS Spot nodes |
|
||
| ci-runner (i-0638c0beae4ce4a1c) | t3.medium | stopped | CI |
|
||
| gpu-training ×2 | g5.2xlarge | stopped | ML-träning |
|
||
|
||
### Databaser (maj)
|
||
| DB | Klass | Multi-AZ | Kostnad |
|
||
|---|---|---|---|
|
||
| platform-identity-core | db.r6g.large | JA | ~83 USD/mån |
|
||
| platform-plane | db.t4g.micro | nej | ~12 USD/mån |
|
||
|
||
### Övrig infrastruktur (maj)
|
||
- **EKS cluster "wavult"** — Kong gateway, buildkit, k8s platform
|
||
- **MSK Kafka** — 3 brokers, ej använd av quiXzoom
|
||
- **ElastiCache** — Redis, okänt syfte
|
||
- **NAT Gateway** — privata subnets
|
||
- **4× Load Balancers** — 3 k8s-relaterade, 1 quiXzoom (aamos-prod-alb)
|
||
- **7× Elastic IPs** — 4 orphaned
|
||
- **Kinesis** — vyra-shot-events, 0 aktivitet
|
||
- **Tor-proxy** (tor-argus.service) — installerad 2026-06-08 som root, Kina-kringgång
|
||
- **GuardDuty** — alla features aktiverade inkl. Malware/EKS/RDS
|
||
|
||
---
|
||
|
||
## ÅTGÄRDER UTFÖRDA 2026-06-14/15
|
||
|
||
### Säkerhet
|
||
| Åtgärd | Detalj |
|
||
|---|---|
|
||
| **Tor raderat** | tor-argus.service stoppad/disabled, /usr/local/bin/tor, /etc/tor, /var/lib/tor borttagna |
|
||
| **GuardDuty bantad** | Disabled: EBS_MALWARE_PROTECTION, RDS_LOGIN_EVENTS, EKS_AUDIT_LOGS, EKS_RUNTIME_MONITORING, LAMBDA_NETWORK_LOGS, RUNTIME_MONITORING. Kvar: CLOUD_TRAIL, DNS_LOGS, FLOW_LOGS, S3_DATA_EVENTS |
|
||
|
||
### AWS-resurser borttagna
|
||
| Resurs | Besparing |
|
||
|---|---|
|
||
| ALB aamos-prod-alb (+ listeners + target group) | −21 USD/mån |
|
||
| RDS platform-identity-core | −12 USD/mån |
|
||
| RDS platform-plane | −12 USD/mån |
|
||
| Kinesis vyra-shot-events | −23 USD/mån |
|
||
| server-1 terminerad (EIP releasad) | −4 USD/mån |
|
||
| 3× orphaned EIPs (försvann med ALB) | −11 USD/mån |
|
||
| GuardDuty features bantade | −90 USD/mån |
|
||
|
||
*Tidigare nedtaktat (före denna session): EKS, MSK, ECS, ElastiCache, NAT Gateway, graviton-workers, server-3*
|
||
|
||
### Databasmigrering RDS → Lokal Postgres
|
||
| Steg | Detalj |
|
||
|---|---|
|
||
| Postgres 16 installerad | `dnf install postgresql16-server`, initierad, systemd-enable |
|
||
| Databaser skapade | `amos` (714 tabeller), `wavult_identity` (734 tabeller) |
|
||
| Dump från RDS | pg_dump med SSL: amos 258 MB, wavult_identity 598 MB |
|
||
| Restore lokalt | pg_restore -j 4, warnings normala (extensions/sequences) |
|
||
| pg_hba konfigurerad | scram-sha-256 på localhost |
|
||
| pgbouncer switchad | Pekar nu mot 127.0.0.1:5432 istället för RDS |
|
||
| .env uppdaterad | DATABASE_URL, AMOS_DB_URL, SUPABASE_DB_URL → 127.0.0.1 |
|
||
| .env backup | /opt/amos/.env.bak-rds-20260614-* |
|
||
| RDS deletion protection av | `modify-db-instance --no-deletion-protection` |
|
||
| RDS raderade | `delete-db-instance --skip-final-snapshot` |
|
||
|
||
---
|
||
|
||
## EFTER — Juni 2026
|
||
|
||
### Kvarvarande infrastruktur
|
||
| Resurs | Detalj |
|
||
|---|---|
|
||
| **server-2** (i-09b2204a52c2f33c9) | r8g.4xlarge, running, 16.170.83.169 |
|
||
| **Postgres 16 (lokal)** | /var/lib/pgsql/data, databaser: amos + wavult_identity |
|
||
| **pgbouncer** | 127.0.0.1:6432 → lokal Postgres |
|
||
| **NATS JetStream** | Lokal message bus |
|
||
| **nginx** | Reverse proxy, Let's Encrypt SSL |
|
||
| **aamos-prod-tg / ALB** | BORTTAGEN — DNS pekar direkt på 16.170.83.169 |
|
||
| **GuardDuty** | Aktiv, bantad kärna (CloudTrail + DNS + FlowLogs) |
|
||
| **Route53** | aamos.systems zon, alla A-records → 16.170.83.169 |
|
||
| **S3** | quiXzoom-buckets + platform-backups |
|
||
| **ECR** | Container images |
|
||
| **Savings Plans** | 3.418 USD/tim, löper t.o.m. 2027-04-30 |
|
||
|
||
### Stoppade instanser (kostar ingenting)
|
||
| Instans | Typ | Syfte |
|
||
|---|---|---|
|
||
| server-3-redundancy | r6g.xlarge | Standby (definieras senare) |
|
||
| ci-runner | t3.medium | CI/CD |
|
||
| gpu-training | g5.2xlarge | ML-träning (ALETHEIA/HEPHAISTOS) |
|
||
| ouroboros-gpu-training | g5.2xlarge | ML-träning backup |
|
||
|
||
### Tjänster på server-2 (aktiva)
|
||
```
|
||
amos-core.service active (port 3100)
|
||
quixzoom-api.service active (port 3209)
|
||
aamos-quixzoom-engine.service active (Rust)
|
||
aamos-ledger.service active
|
||
aamos-billing-engine.service active
|
||
aamos-api-gateway.service active
|
||
postgresql.service active (port 5432, lokal)
|
||
pgbouncer.service active (port 6432)
|
||
nats-server.service active
|
||
nginx.service active
|
||
openclaw-gateway.service active
|
||
clickhouse.service active (Docker)
|
||
```
|
||
|
||
### Ny månadskostnad (estimerad)
|
||
| Post | USD/mån |
|
||
|---|---|
|
||
| Savings Plans (fast, ej påverkbar) | 2 461 |
|
||
| GuardDuty (kärna) | ~10 |
|
||
| Route53 | ~5 |
|
||
| S3 | ~5 |
|
||
| CloudWatch | ~5 |
|
||
| ECR | ~2 |
|
||
| Secrets Manager | ~2 |
|
||
| KMS | ~2 |
|
||
| **TOTALT** | **~2 492 USD/mån** |
|
||
|
||
**Besparing vs maj: −2 928 USD/mån (−54%)**
|
||
|
||
---
|
||
|
||
## ÅTERSKAPNINGSGUIDE — Framtida behov
|
||
|
||
### När quiXzoom växer och behöver mer compute
|
||
|
||
**SP täcker 3.418 USD/tim.** r8g.4xlarge = ~1.00 USD/tim.
|
||
Du har headroom för **ytterligare ~2.4 USD/tim** compute täckt av SP utan extra kostnad.
|
||
Det motsvarar: 2× r8g.2xlarge (0.50/tim styck) ELLER 1× r8g.8xlarge (2.01/tim).
|
||
|
||
```bash
|
||
# Starta server-3 (r6g.xlarge, stopped, redo direkt)
|
||
aws ec2 start-instances --instance-ids i-0fc20ddba6bb17ead
|
||
|
||
# Starta ci-runner (t3.medium, för CI/CD-behov)
|
||
aws ec2 start-instances --instance-ids i-0638c0beae4ce4a1c
|
||
```
|
||
|
||
### När ML-träning behövs (ALETHEIA/HEPHAISTOS)
|
||
|
||
```bash
|
||
# Starta gpu-training (g5.2xlarge, stopped — startar på sekunder)
|
||
aws ec2 start-instances --instance-ids i-04239ef03d26b218b
|
||
# eller ouroboros-gpu-training
|
||
aws ec2 start-instances --instance-ids i-0b96090f76c603b23
|
||
|
||
# VIKTIGT: Stoppa igen efter körning — g5.2xlarge kostar ~1.21 USD/tim
|
||
aws ec2 stop-instances --instance-ids i-04239ef03d26b218b
|
||
```
|
||
|
||
### När RDS-liknande managed DB behövs igen
|
||
|
||
```bash
|
||
# Skapa ny RDS t4g.micro (billigaste, ~12 USD/mån)
|
||
aws rds create-db-instance \
|
||
--db-instance-identifier <namn> \
|
||
--db-instance-class db.t4g.micro \
|
||
--engine postgres \
|
||
--engine-version 16 \
|
||
--master-username wavult_admin \
|
||
--master-user-password <lösen> \
|
||
--allocated-storage 20 \
|
||
--no-multi-az \
|
||
--no-publicly-accessible \
|
||
--region eu-north-1
|
||
|
||
# Dump från lokal Postgres till ny RDS:
|
||
pg_dump -h 127.0.0.1 -U wavult_admin -d amos -Fc -f /tmp/amos.pgc
|
||
pg_restore -h <rds-endpoint> -U wavult_admin -d amos /tmp/amos.pgc
|
||
```
|
||
|
||
### När Load Balancer behövs igen (multi-server setup)
|
||
|
||
```bash
|
||
# Skapa ny ALB
|
||
aws elbv2 create-load-balancer \
|
||
--name aamos-prod-alb \
|
||
--subnets subnet-XXXX subnet-YYYY \
|
||
--security-groups sg-XXXX \
|
||
--scheme internet-facing \
|
||
--type application
|
||
|
||
# Skapa target group mot server-2
|
||
aws elbv2 create-target-group \
|
||
--name aamos-prod-tg \
|
||
--protocol HTTPS \
|
||
--port 443 \
|
||
--vpc-id vpc-XXXX \
|
||
--target-type instance \
|
||
--health-check-path /health
|
||
|
||
# OBS: Utan ALB går trafik direkt via nginx på server-2.
|
||
# ALB behövs bara vid horisontell skalning (flera instanser).
|
||
```
|
||
|
||
### När MSK Kafka behövs (event streaming i skala)
|
||
|
||
```bash
|
||
# NATS JetStream räcker för quiXzoom-volymer.
|
||
# MSK motiveras när: >100k events/sek ELLER multi-region ELLER extern integration.
|
||
# Kostnad: ~340 USD/mån (3 brokers). Starta först när det är motiverat.
|
||
|
||
aws kafka create-cluster-v2 \
|
||
--cluster-name aamos-events \
|
||
--provisioned BrokerNodeGroupInfo={InstanceType=kafka.t3.small,...},NumberOfBrokerNodes=3
|
||
```
|
||
|
||
### Savings Plan — vad händer april 2027
|
||
|
||
SP löper ut **2027-04-30**. Från maj 2027:
|
||
- Kostnad för server-2 tillkommer: ~722 USD/mån
|
||
- Total kostnad utan SP: ~750–800 USD/mån (server-2 + övrigt)
|
||
- **Beslut att ta mars 2027:** Köp ny SP (om compute-footprint motiverar) eller kör on-demand
|
||
|
||
```
|
||
Påminnelse att sätta: mars 2027 — utvärdera ny Savings Plan
|
||
Nuvarande SP-id: 77610c74-2f99-4ae5-a3c3-4019c08302b4
|
||
```
|
||
|
||
---
|
||
|
||
## SÄKERHETSNOTERINGAR
|
||
|
||
### GuardDuty findings kvar (ej åtgärdade)
|
||
- **S3 public anonymous access** på quiXzoom-buckets (quixzoom.de, .fr, .eu, etc) — HIGH 8.0
|
||
- Dessa är troligen avsiktliga static-site buckets. Verifiera att de inte exponerar känslig data.
|
||
- **CompromisedInstanceGroup** (9.0) — härstammar från Tor-trafiken som nu är borttagen.
|
||
- Archivera dessa findings i GuardDuty efter att du bekräftat att Tor är borttaget.
|
||
|
||
### Kvarstående secrets i .env
|
||
- .env på server-2 innehåller klartext-credentials för många tjänster
|
||
- Rekommendation: migrera till AWS Secrets Manager successivt
|
||
- Backup av .env finns i /opt/amos/.env.bak-rds-*
|
||
|
||
---
|
||
|
||
## TIDSLINJE
|
||
|
||
| Tid (UTC) | Åtgärd |
|
||
|---|---|
|
||
| 2026-06-14 00:52 | Erik beslutar om absolut ekonomisk återhållsamhet |
|
||
| 2026-06-14 05:30 | Tor-analys, GuardDuty CRITICAL 9.0 identifierat |
|
||
| 2026-06-14 05:45 | Tor raderat från server-2 |
|
||
| 2026-06-14 05:47 | GuardDuty bantad (−90 USD/mån) |
|
||
| 2026-06-14 05:48 | Kinesis borttagen (−23 USD/mån) |
|
||
| 2026-06-14 05:50 | ALB borttagen (−21 USD/mån) |
|
||
| 2026-06-14 05:52 | server-1 terminerad, EIP releasad (−4 USD/mån) |
|
||
| 2026-06-14 05:54 | Postgres 16 installerad på server-2 |
|
||
| 2026-06-14 05:59 | RDS-dump klar (amos 258 MB, identity 598 MB) |
|
||
| 2026-06-14 06:03 | Restore till lokal Postgres (714+734 tabeller) |
|
||
| 2026-06-14 06:05 | .env + pgbouncer switchad till localhost |
|
||
| 2026-06-14 06:06 | RDS deletion protection av, båda RDS raderade |
|
||
| 2026-06-15 03:50 | Verifiering — allt rent, rapport klar |
|