--- Pangolin vs. Cloudflare Tunnel --- ## 🛡️ Pangolin vs. Cloudflare Tunnel | Merkmal | Cloudflare Tunnel (`cloudflared`) | Pangolin (Self-Hosted) | |------------------|---------------------------------------------|-------------------------------------------------| | **Kontrolle** | Zentralisiert (Cloudflare sieht Traffic). | **Dezentral** (Du besitzt den VPS & Schlüssel). | | **Datenschutz** | SSL terminiert bei Cloudflare. | **End-to-End** (SSL terminiert auf DEINEM VPS). | | **AGB / Limits** | Verbot von Video-Streaming (Plex/Jellyfin). | **Keine Limits** (Du bestimmst den Traffic). | | **Protokolle** | Primär TCP/HTTP. | **TCP & UDP** (Dank WireGuard-Basis). | | **Kosten** | Kostenlos (Free Tier). | VPS-Miete (ca. 4€ bei Hetzner). | | **Features** | WAF, DDoS-Schutz (proprietär). | SSO, CrowdSec, Geoblocking (Open Source). | --- ## 🚀 Deployment-Bauplan (Hetzner + MS-R1) ### Teil 1: VPS Setup (Hetzner Cloud) 1. Erstelle einen **CX21** VPS (Location: Frankfurt für geringste Latenz). 2. Installiere Docker und erstelle das Pangolin-Verzeichnis. **Docker Compose für den VPS (`compose.yaml`):** ```yaml services: pangolin: image: ghcr.io/m-pennat/pangolin:latest container_name: pangolin restart: unless-stopped ports: - "80:80" # HTTP (Let's Encrypt) - "443:443" # HTTPS - "51820:51820/udp" # WireGuard Tunnel volumes: - ./data:/var/lib/pangolin - /var/run/docker.sock:/var/run/docker.sock environment: - PANGOLIN_DOMAIN=dashboard.deinedomain.de ``` *Nach dem Start (`docker compose up -d`) unter der Domain einloggen und einen neuen **Site-Client** anlegen, um den **Enrollment Token** zu erhalten.* --- ### Teil 2: Home-Server Setup (MS-R1 / Debian 12 arm64) Auf deinem MS-R1 installierst du den Gegenpart **Newt**. Da du Debian 12 auf arm64 nutzt, ist das Setup extrem ressourcensparend. **Docker Compose für den MS-R1 (`compose.yaml`):** ```yaml services: # Der Tunnel-Client newt: image: ghcr.io/m-pennat/newt:latest container_name: newt restart: unless-stopped environment: - NEWT_ENROLL_TOKEN=DEIN_TOKEN_VON_HETZNER_VPS depends_on: - gitea # Dein Service (Beispiel: Gitea) gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped volumes: - ./gitea_data:/data # Hinweis: Kein "ports"-Mapping nötig! Zugriff erfolgt über den Tunnel. ``` --- ## 💡 Warum das für dich ein "Erfolg" ist * **Kein Port-Forwarding:** Dein Router zu Hause bleibt komplett dicht. * **Arm64-Optimiert:** Debian 12 und die Container nutzen kaum CPU-Zyklen deines MS-R1. * **Identity-Aware Proxy:** Du kannst im Pangolin-Dashboard (Hetzner) mit drei Klicks einstellen, dass man sich erst per **Google** oder **GitHub** anmelden muss, um dein Gitea überhaupt zu sehen. ---