Files
boc/intelligence/2026-06-14-quixzoom-clean-architecture.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

6.0 KiB
Raw Blame History

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