CNB-Bank Documentation#
Homelab, cloud infrastructure, and a distributed caching system powering a banking/trading service.
System Overview#
---
config:
layout: dagre
---
flowchart TB
subgraph Pi2["Pi 2 — Funnel (Ubuntu)"]
CFT2["Cloudflare Tunnel<br>User Traffic"]
CFMT2["Cloudflare Tunnel<br>Mgmt Access"]
end
subgraph K3s["K3s Cluster"]
Traefik["Traefik<br>Ingress + LB"]
Banking["Banking API<br>Express.js :8080"]
Trading["Trading API<br>Express.js :8081"]
Secrets["K8s Secrets<br>DB Creds + API Keys"]
end
subgraph Host["Host Services"]
PGB[("PostgreSQL<br>cnb_banking")]
PGT[("Trading Service<br>Distributed Caching")]
PGExp["PostgreSQL Exporter"]
Prom["Prometheus<br>Central Metrics Store"]
Graf["Grafana<br>Single Dashboard"]
Backup["Backup Script<br>pg_dump → encrypt → S3"]
Cron["Dameon Cronjob"]
end
subgraph Pi1["Pi 1 — Main Server (Ubuntu)"]
K3s
Host
CFMT["Cloudflare Tunnel<br>Mgmt Access"]
end
subgraph AWS["AWS Cloud"]
S3[("S3<br>Encrypted Backups")]
end
Users(["Users"]) --> CF["Cloudflare<br>DNS + Tunnel Routing"]
CF -- User Tunnel --> CFT2
CF -- Mgmt Tunnel --> CFMT & CFMT2
CFT2 -- Traffic Forward --> Traefik
Traefik --> Banking & Trading
Secrets -. Injected .-> Banking & Trading
Banking --> PGB
Trading --> PGT & AV(["Alpha Vantage API"])
Cron --> Backup
Prom -. Scrapes all<br> available resources .-> K3s
Prom -. Scrapes .-> PGExp
Prom --> Graf
Backup --> S3