docs(deployment): add full network architecture diagram
Some checks failed
CI / ruff (push) Successful in 9s
CI / docs (push) Has been cancelled
CI / deploy (push) Has been cancelled
CI / validate (push) Has been cancelled
CI / dependency-scanning (push) Has been cancelled
CI / pytest (push) Has been cancelled

ASCII diagram showing all services, Docker networks, port bindings,
and traffic flow from Cloudflare through Caddy to each container.
Clearly marks which ports are internet-exposed, localhost-only,
or Docker-internal-only.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-04 23:41:54 +01:00
parent 820ab1aaa4
commit 8c449d7baa

View File

@@ -2416,6 +2416,127 @@ After Google Wallet is verified working:
---
## Network Architecture Diagram
```
INTERNET
┌────────────┼────────────┐
│ │ │
┌────▼────┐ ┌────▼────┐ ┌─────▼─────┐
│Cloudflare│ │Cloudflare│ │ Cloudflare │
│wizard.lu │ │omsflow │ │rewardflow │
│(proxied) │ │(proxied)│ │ (proxied) │
└────┬─────┘ └────┬────┘ └─────┬─────┘
│ │ │
└────────────┼────────────┘
│ HTTPS :443
┌─────────────────────┼─────────────────────┐
│ HETZNER SERVER (91.99.65.229) │
│ │ │
│ ┌──────────────────▼──────────────────┐ │
│ │ CADDY (reverse proxy) │ │
│ │ :80 / :443 │ │
│ └──┬──────┬──────┬──────┬──────┬──────┘ │
│ │ │ │ │ │ │
│ │ │ │ │ │ │
┌─────┼─────┼──────┼──────┼──────┼──────┼──────┐ │
│ │ DOCKER NETWORKS │ │ │ │ │
│ │ │ │ │ │ │ │ │
│ ┌──▼──────▼──────▼──┐ │ │ │ │ │
│ │ orion_frontend │ │ │ │ │ │
│ │ │ │ │ │ │ │
│ │ ┌───────────────┐ │ │ │ │ │ │
│ │ │ API :8000 │◄┼──┘ │ │ │ │
│ │ │ 127.0.0.1:8001│ │ Caddy ►│:5555 │:3001 │ │
│ │ └───────┬───────┘ │ │ │ │ │
│ └─────────┼─────────┘ │ │ │ │
│ │ │ │ │ │
│ ┌─────────▼─────────────────────────────────┐ │
│ │ orion_backend │ │
│ │ │ │
│ │ ┌──────────┐ ┌───────────┐ │ │
│ │ │ PostgreSQL│ │ Redis │ │ │
│ │ │ :5432 │ │ :6379 │ │ │
│ │ │ (no host │ │ (no host │ │ │
│ │ │ port) │ │ port) │ │ │
│ │ └─────▲─────┘ └──▲───▲───┘ │ │
│ │ │ │ │ │ │
│ │ ┌─────┴───────────┴┐ ┌┴────────────────┐ │ │
│ │ │ celery-worker │ │ celery-beat │ │ │
│ │ │ (no host port) │ │ (no host port) │ │ │
│ │ └──────────────────┘ └──────────────────┘ │ │
│ │ │ │
│ │ ┌──────────────────┐ │ │
│ │ │ Flower │◄── Caddy :5555 │ │
│ │ │ 127.0.0.1:5555 │ flower.wizard.lu │ │
│ │ └──────────────────┘ │ │
│ └───────────────────────────────────────────┘ │
│ │
│ ┌───────────────────────────────────────────┐ │
│ │ orion_monitoring │ │
│ │ │ │
│ │ ┌──────────────┐ scrapes ┌───────────┐ │ │
│ │ │ Prometheus │◄──────────│ API │ │ │
│ │ │ 127.0.0.1: │ │ /metrics │ │ │
│ │ │ 9090 │ └───────────┘ │ │
│ │ │ │◄─── node-exporter :9100 │ │
│ │ │ │◄─── cadvisor :8080 │ │
│ │ │ │◄─── redis-exporter :9121│ │
│ │ │ │◄─── alertmanager :9093 │ │
│ │ └──────┬───────┘ │ │
│ │ │ query │ │
│ │ ┌──────▼───────┐ │ │
│ │ │ Grafana │◄── Caddy :3001 │ │
│ │ │ 127.0.0.1: │ grafana.wizard.lu │ │
│ │ │ 3001 │ │ │
│ │ └──────────────┘ │ │
│ │ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ Alertmanager │────►│ SendGrid │ │ │
│ │ │ 127.0.0.1: │ │ SMTP :587 │ │ │
│ │ │ 9093 │ │ (external) │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └───────────────────────────────────────────┘ │
└──────────────────────────────────────────────────┘
┌─────┼──────────────────────────────────────┐
│ GITEA STACK (~/gitea) │
│ │
│ ┌──────────────────┐ ┌────────────────┐ │
│ │ Gitea │ │ gitea-db │ │
│ │ 127.0.0.1:3000 │◄─│ PostgreSQL │ │
│ │ :2222 (public) │ │ (internal) │ │
│ └──────────────────┘ └────────────────┘ │
│ ▲ ▲ │
│ │ │ │
│ Caddy:3000 SSH :2222 │
│ git.wizard.lu (public, for git push) │
└────────────────────────────────────────────┘
─── EXPOSED TO INTERNET ───────────────────────────
:443 → Caddy (via Cloudflare proxy)
:80 → Caddy (redirects to HTTPS)
:22 → SSH (server access)
:2222 → Gitea SSH (git push/pull)
─── LOCALHOST ONLY (127.0.0.1) ────────────────────
:8001 → API (Caddy → API)
:3000 → Gitea web (Caddy → Gitea)
:3001 → Grafana (Caddy → Grafana)
:5555 → Flower (Caddy → Flower)
:9090 → Prometheus
:9093 → Alertmanager
:9100 → Node Exporter
:9121 → Redis Exporter
:8080 → cAdvisor
─── DOCKER INTERNAL ONLY (no host port) ───────────
:5432 → PostgreSQL
:6379 → Redis (password protected)
```
## Domain & Port Reference
| Service | Internal Port | External Port | Domain (via Caddy) |