Autor: Dillmoser Baraban

  • Seealm Seebruck

    🌐 Dahoam Mesh-Weiche

    Zentrale Vermittlungsstelle (Traefik v3 & Headscale) zur sicheren Anbindung dezentraler Homeserver ohne Portfreigaben am Router.

    🗺️ Der Weg des Datenverkehrs (Ende-zu-Ende)

    Ein eingehender HTTPS-Aufruf aus dem Internet wird auf dem Hostkey-VPS entgegengenommen, dort vollautomatisch mit einem echten Let’s-Encrypt-Zertifikat versehen und über den verschlüsselten Tailscale/WireGuard-Mesh-Tunnel direkt an den dezentralen Homeserver weitergeleitet:Browser / ClientInternet-NutzerPort 443Hostkey VPS (Weiche)Traefik v3Auto-TLS / SSLHeadscaleControl PlaneTailscale Mesh100.64.0.0/10Knoten SeebruckDietPi VM in PVEwp-seppi:8080

    1. DNS-Wildcard
    *.aopen.nas64.de routet direkt auf die VPS-IP. Subdomains erfordern keine manuelle DNS-Verwaltung.

    2. TLS & Zertifikat
    Traefik v3 stellt automatisch Let’s-Encrypt-Zertifikate per HTTP-01 aus und terminiert SSL zentral am VPS.

    3. CGNAT-Bypass
    Der Tunnel baut sich von innen nach außen auf. Keine Portweiterleitung in Kundenroutern erforderlich.

    Erledigt & Online Meilensteine des Setups

    • VPS Basis & Härtung: Debian 12 auf Hostkey VPS gehärtet (Key-only SSH, UFW Firewall für Ports 22/80/443, Fail2ban, Auto-Upgrades).
    • Zentrale Vermittlung (Traefik v3 & Headscale): Reverse-Proxy und selbst gehostete Headscale-Instanz laufen containerisiert im Mesh-Netz.
    • Domain-Architektur: Saubere Wildcard-Domain aopen.nas64.de – vollständig frei von geteilten DynDNS-Rate-Limits.
    • Mesh-Kopplung: 4 registrierte Knoten im Headscale-Netzwerk (100.64.0.0/10).
    • Erstes Kunden-Deployment (Live): Kunde Seppi in Seebruck (100.64.0.4) – WordPress Docker-Stack via Remote-SSH vom VPS ausgerollt. Endpunkt https://wp-seppi.aopen.nas64.de ist live und zertifiziert.

    📖 Rezept 1: WordPress-Kundenknoten remote ausrollen

    Dieses Rezept rollt einen neuen Dienst für einen Kunden vollautomatisch über das Mesh-Netzwerk aus.

    1. Headscale Pre-Auth-Key auf dem VPS erzeugen

    docker exec headscale headscale preauthkeys create --user 1 --expiration 24h

    2. Remote-Node verbinden & Hostname setzen

    tailscale up \
    --login-server https://headscale.aopen.nas64.de \
    --authkey <PRE-AUTH-KEY> \
    --hostname seebruck-seppi \
    --accept-routes

    3. SSH-Key-Vertrauen über das Mesh herstellen

    VPS-Public-Key in die /root/.ssh/authorized_keys des Client-Nodes eintragen, damit künftige Deployments und Updates direkt vom Hostkey-VPS per SSH ohne Passworteingabe durchlaufen.

    4. WordPress-Stack per Remote-SSH vom VPS deployen

    ssh root@100.64.0.4 'bash -s' << 'EOF'
    set -e
    mkdir -p /opt/wp-seppi && cd /opt/wp-seppi
    
    cat << 'YAML' > compose.yaml
    services:
    db:
    image: mariadb:10.11
    container_name: wp-seppi-db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: secret_root_password_seppi
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: secret_wp_password_seppi
    volumes:
      - db_data:/var/lib/mysql
    
    wordpress:
    image: wordpress:php8.2-apache
    container_name: wp-seppi-app
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: secret_wp_password_seppi
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    
    volumes:
    db_data:
    wp_data:
    YAML
    
    docker compose up -d
    EOF

    Hinweis: Das offizielle WordPress-Image erkennt HTTP_X_FORWARDED_PROTO bereits nativ – kein WORDPRESS_CONFIG_EXTRA erforderlich!

    5. Traefik-Route am VPS aktivieren (/opt/headscale-traefik/traefik/dynamic/wp-seppi.yml)

    http:
    routers:
    wp-seppi-router:
      rule: "Host(`wp-seppi.aopen.nas64.de`)"
      entryPoints:
        - websecure
      service: wp-seppi-svc
      tls:
        certResolver: letsencrypt
    
    services:
    wp-seppi-svc:
      loadBalancer:
        servers:
          - url: "http://100.64.0.4:8080"

    Roadmap Nächste Schritte

    1. Auto-Sync Daemon: Shell-Skript auf dem VPS, das neue Headscale-Registrierungen erkennt und Traefik-Routen automatisch aus Vorlagen generiert.
    2. Zero-Touch Bootstick: USB-Stick mit vorkonfiguriertem DietPi/Alpine-Image für Kunden, das beim Einstecken automatisch ins Mesh joint.
    3. Eigene Kundendomains: Aufschaltung beliebiger Kunden-Domains via CNAME auf den VPS.

    TRAUNROCKS

    Dahoam Cloud • Digitale Souveränität • Dezentrale Infrastruktur