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
166 lines
6.0 KiB
Markdown
166 lines
6.0 KiB
Markdown
# quiXzoom — Ren målarkitektur
|
||
# 2026-06-14 · Bernt
|
||
|
||
## PRINCIP
|
||
En server. En process per ansvar. Systemctl för allt. nginx som enda ingångspunkt.
|
||
Inget K8s. Inget Kong. Inget MSK. Inga PM2-processer i produktion.
|
||
|
||
---
|
||
|
||
## MÅLBILD — server-2 (r8g.4xlarge, eu-north-1b)
|
||
|
||
```
|
||
INTERNET
|
||
│
|
||
▼
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ nginx (port 80 + 443, TLS-terminering) │
|
||
│ │
|
||
│ quixzoom.com ──────────────► redirect www │
|
||
│ www.quixzoom.com ───────────► /opt/amos/public/ │
|
||
│ quixzoom/ (statisk) │
|
||
│ api.quixzoom.com/api/qz/ ───► :3209 (quixzoom-api) │
|
||
│ api.quixzoom.com/api/qz/ :3390 (qz-engine) │
|
||
│ engine/ │
|
||
│ api.quixzoom.com/health ────► :3209/health │
|
||
│ │
|
||
│ amos.aamos.systems ─────────► :3100 (amos-core) │
|
||
│ bernt.aamos.systems ────────► :18789 (openclaw) │
|
||
│ [övriga interna domäner] │
|
||
└─────────────────────────────────────────────────────┘
|
||
│ │ │ │
|
||
▼ ▼ ▼ ▼
|
||
:3209 :3390 :3392 :3100
|
||
quixzoom- qz-engine billing- amos-core
|
||
api (Rust) engine (AI-hjärna)
|
||
(Node.js) (Rust)
|
||
│
|
||
▼
|
||
:6432 (pgbouncer)
|
||
│
|
||
▼
|
||
platform-identity-core.rds (Postgres)
|
||
[mål: migrera till lokal Postgres på server-2]
|
||
```
|
||
|
||
---
|
||
|
||
## TJÄNSTER SOM SKA VARA AKTIVA (systemctl enabled)
|
||
|
||
| Tjänst | Port | Ansvar |
|
||
|--------|------|--------|
|
||
| nginx | 80/443 | TLS, routing, statiska filer |
|
||
| amos-core | 3100 | AI-hjärna, intern plattform |
|
||
| aamos-quixzoom-engine | 3390 | Optisk analys, Rust |
|
||
| **quixzoom-api** | 3209 | Missions, auth, payments, zoomers — **ska bli systemctl** |
|
||
| aamos-billing-engine | 3392 | Stripe/betalningar, Rust |
|
||
| aamos-ledger | 3250 | Bokföring (LandveX) |
|
||
| ouroboros-identity | 3207 | Auth/JWT |
|
||
| pgbouncer | 6432 | DB connection pooling |
|
||
| nats-server | 4222 | Intern eventbuss |
|
||
| openclaw-gateway | 18789 | Bernt AI-agent |
|
||
| amos-watchdog | — | Vaktar amos-core |
|
||
|
||
**Allt annat: disabled och stoppat.**
|
||
|
||
---
|
||
|
||
## AKTUELLT LÄGE vs MÅLBILD
|
||
|
||
### ✅ Redan rätt
|
||
- nginx, amos-core, qz-engine, billing-engine, ledger, identity, pgbouncer, nats, openclaw
|
||
|
||
### 🔴 Måste åtgärdas
|
||
|
||
**1. quixzoom-api kör via PM2 — ska vara systemctl**
|
||
- 90 kraschar beror troligen på att PM2 och systemd-arv kolliderar (PORT-variabel-konflikt syns i koden)
|
||
- Flytta till: `/etc/systemd/system/quixzoom-api.service`
|
||
|
||
**2. qz-webhook kör via PM2 från /home/bernt/qz-ci/**
|
||
- Flytta till: `/etc/systemd/system/qz-webhook.service`
|
||
- Flytta kod till: `/opt/amos/data/qz-webhook/`
|
||
|
||
**3. nginx api.quixzoom.com pekar på port 7060/7050 som inte finns**
|
||
- Ta bort /api/missions/ och /api/regulatory/ locations tills tjänsterna finns
|
||
- Annars 502 på varje anrop dit
|
||
|
||
**4. www.quixzoom.com index = zoomer-start.html som inte finns**
|
||
- Bestäm rätt entry-point och lägg dit filen
|
||
|
||
**5. Credentials i klartext i index.mjs**
|
||
- AWS_ACCESS_KEY_ID hårdkodat i källkod — kritiskt säkerhetsproblem
|
||
- Flytta till .env eller AWS instance profile
|
||
|
||
---
|
||
|
||
## AWS — VAD SOM KAN STÄNGAS NED (noll quiXzoom-beroende)
|
||
|
||
### Stäng omedelbart (inga aktiva kunder, inga konsekvenser):
|
||
|
||
| Resurs | Besparing/mån | Åtgärd |
|
||
|--------|--------------|--------|
|
||
| server-3-redundancy (r6g.xlarge) | ~140 USD | `aws ec2 stop-instances` |
|
||
| 2× graviton-worker (r6g.2xlarge) | ~560 USD | `aws ec2 stop-instances` |
|
||
| EKS karpenter-noder (2× r7g.4xlarge) | ~400-600 USD | Scale EKS nodepool till 0 |
|
||
| 4× orphaned Elastic IPs | ~18 USD | `aws ec2 release-address` |
|
||
|
||
### Kräver Johan-koordination:
|
||
| Resurs | Besparing/mån | Blocker |
|
||
|--------|--------------|---------|
|
||
| EKS cluster "wavult" (control plane) | ~72 USD | Vad kör Johan via K8s? |
|
||
| MSK Kafka | ~113 USD | Vad använder MSK? |
|
||
| RDS platform-identity-core Multi-AZ→single | ~50 USD | Planerat nedtid |
|
||
| server-1 (r8g.4xlarge) | ~600 USD | Vad kör kyc-mrz? |
|
||
|
||
**Total omedelbar besparing: ~1 100-1 300 USD/mån**
|
||
**Total med koordination: ~1 900-2 000 USD/mån**
|
||
|
||
---
|
||
|
||
## REGEL: JOHANS OCH SVENS ARBETE
|
||
|
||
Hårdlåst från 2026-06-14. Override kräver Eriks explicita godkännande.
|
||
|
||
- Allt arbete sker på **server-2** (befintlig)
|
||
- **Inga nya AWS-resurser** av något slag
|
||
- **Inga K8s-deployments** — quiXzoom kör systemctl direkt
|
||
- **Ingen ny RDS** — sikta på lokal Postgres
|
||
- **Ingen ny ElastiCache** — Redis kör lokalt på server-2 (:6379)
|
||
- **Inga nya Load Balancers** — nginx på server-2 är ingångspunkten
|
||
- Deploy-flöde: git push → qz-webhook (port 9100) → deploy.sh → systemctl restart
|
||
- CI: ci-runner (t3.medium) är OK för byggen, ingenting mer
|
||
|
||
---
|
||
|
||
## DEPLOY-FLÖDE (mål — enkelt och reproducerbart)
|
||
|
||
```
|
||
Johan pushar kod till Gitea
|
||
│
|
||
▼
|
||
qz-webhook (:9100) tar emot webhook
|
||
│
|
||
▼
|
||
/home/bernt/qz-ci/deploy.sh
|
||
• git pull
|
||
• npm ci (om node)
|
||
• cargo build --release (om rust)
|
||
• systemctl restart quixzoom-api
|
||
│
|
||
▼
|
||
nginx serverar trafik → ny kod live
|
||
```
|
||
|
||
Ingen Docker. Ingen K8s. Ingen pipeline-overhead.
|
||
|
||
---
|
||
|
||
## NÄSTA STEG (prioriterat)
|
||
|
||
1. **Flytta quixzoom-api till systemctl** — löser 90-kraschar-problemet
|
||
2. **Ta bort /api/missions/ och /api/regulatory/ från nginx** tills de finns
|
||
3. **Fixa www.quixzoom.com index-fil**
|
||
4. **Stoppa server-3, graviton-workers** — omedelbar besparing
|
||
5. **Rensa orphaned Elastic IPs**
|
||
6. **Säkerhetsproblem: credentials ur index.mjs** — separat åtgärd
|