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
6.0 KiB
6.0 KiB
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)
- Flytta quixzoom-api till systemctl — löser 90-kraschar-problemet
- Ta bort /api/missions/ och /api/regulatory/ från nginx tills de finns
- Fixa www.quixzoom.com index-fil
- Stoppa server-3, graviton-workers — omedelbar besparing
- Rensa orphaned Elastic IPs
- Säkerhetsproblem: credentials ur index.mjs — separat åtgärd