meldestelle/docs/07_Infrastructure/Pangolin-vs-Cloudflare-Tunnel.md
Stefan Mogeritsch 09b0b1a462 infra: clean up Keycloak configuration, enforce consistency in .env, and improve health checks
Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
2026-03-06 11:23:24 +01:00

3.0 KiB

type status owner
Reference ACTIVE DevOps Engineer

🛡️ 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):

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):

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.