docs: Mermaid-Architektur-Vergleich (klassisch vs. iroh-forward)

Ersetzt das ASCII-Diagramm durch zwei Mermaid-Diagramme: klassischer
Nginx-Reverse-Proxy (Serving Host braucht geroutete IP/VPN + eingehenden Port)
vs. iroh-forward (ausgehend per Public Key, kein eingehender Port, CGNAT ok).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
sko
2026-06-22 02:20:33 +00:00
co-authored by Claude Opus 4.8
parent 4257d13e88
commit 41af63b128
+38 -10
View File
@@ -6,17 +6,45 @@ CGNAT / dynamischer IP), ohne VPN-Daemon und ohne Änderung an OPNsense/Nginx.
Umsetzung von **Option B** aus `recherche-vpn-vs-p2p-netzwerk.md`. Umsetzung von **Option B** aus `recherche-vpn-vs-p2p-netzwerk.md`.
## Architektur-Vergleich
### Klassischer Nginx-Reverse-Proxy
Nginx leitet per `proxy_pass` an eine **geroutete IP** des Serving Host weiter. Der Serving Host
muss dafür über das Netz erreichbar sein — also feste IP bzw. ein VPN-Tunnel und ein eingehender
Port. Standortwechsel, CGNAT oder dynamische IPs brechen das Setup.
```mermaid
flowchart LR
Client([Client]) -->|HTTPS| OPN[OPNsense]
OPN --> NGX[Nginx]
subgraph NH [Nginx-Host]
NGX
end
NGX -->|"proxy_pass<br/>http://10.0.0.5:3000<br/>(geroutetes Netz / VPN)"| APP
subgraph SH ["Serving Host — feste IP / VPN + eingehender Port nötig"]
APP[App :3000]
end
``` ```
[Nginx] proxy_pass http://127.0.0.1:9080
│ (lokales TCP) ### Mit iroh-forward
iroh-forward client --listen 127.0.0.1:9080 --peer <SERVER_ENDPOINT_ID> Nginx zeigt auf einen **lokalen** Port; der `iroh-forward client` baut die Verbindung über das
│ QUIC / Iroh (TLS 1.3, n0-Relay oder Hole-Punch); 1 QUIC-Stream pro TCP-Verbindung Iroh-Netz (QUIC, adressiert per Public Key) zum `iroh-forward server` auf. Beide Seiten verbinden
sich **ausgehend** (über n0-Relay oder direktes Hole-Punching) — der Serving Host braucht **keinen
iroh-forward server --to 127.0.0.1:3000 eingehenden Port** und darf hinter CGNAT / mit dynamischer IP an beliebigem Standort laufen.
```mermaid
[App :3000] flowchart LR
Client([Client]) -->|HTTPS| OPN[OPNsense]
OPN --> NGX[Nginx]
subgraph NH [Nginx-Host]
NGX -->|"proxy_pass<br/>http://127.0.0.1:9080"| IFC[iroh-forward client]
end
IFC <-->|"QUIC / Iroh · TLS 1.3<br/>dial by Public Key<br/>n0-Relay oder Hole-Punch"| IFS
subgraph SH ["Serving Host — kein eingehender Port · CGNAT / dyn. IP ok"]
IFS[iroh-forward server] -->|"127.0.0.1:3000"| APP[App :3000]
end
``` ```
QUIC multiplext beliebig viele Streams über **eine** Connection → parallele Requests skalieren QUIC multiplext beliebig viele Streams über **eine** Connection → parallele Requests skalieren