diff --git a/docs/deployment/hetzner-server-setup.md b/docs/deployment/hetzner-server-setup.md index ea0d99dd..43031e5b 100644 --- a/docs/deployment/hetzner-server-setup.md +++ b/docs/deployment/hetzner-server-setup.md @@ -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) |