Zum Inhalt

Netzwerk & VPN

Netzwerktopologie

Alle Geraete im Heimnetzwerk sind ueber ein UniFi-Netzwerk (UDM Pro) verbunden. Der Hetzner vServer ist ueber einen Tailscale VPN-Tunnel angebunden.

Adressen im LAN (10.10.10.0/24)

Geraet Adresse Rolle
UDM Pro 10.10.10.1 Gateway/Router, Port-Forwards (siehe Erreichbarkeit von aussen)
Homeserver (Intel NUC) 10.10.10.3 Produktiver Docker-Host
Dev-Workstation (Laptop) 10.10.10.6 Entwicklungsmaschine
AI-Server 10.10.10.7 KI-Inferenz, nicht extern erreichbar
UNAS Pro 10.10.10.150 NAS, NFS v3, RAID 6

Erreichbarkeit von aussen

Vom Internet aus ist derzeit kein Dienst des NUC per Hostname erreichbar. Alle Traefik-Router lauten *.home.robinwerner.net; ein externer Aufruf trifft also auf keinen passenden Host-Header. Fernzugriff laeuft ueber Tailscale.

Oeffentlich auf die Heim-IP zeigen genau zwei Records, gepflegt von Cloudflare DDNS und bewusst unproxied: ddns.robinwerner.net und udm.robinwerner.net. An ddns.robinwerner.net haengt der TeamSpeak-Zugang fuer Freunde — der braucht auf der UDM Forwards fuer 9987/udp (Voice) und 30033 (Dateitransfer). 10011 ist ServerQuery, die Admin-Schnittstelle: die gehoert nicht nach aussen.

Der Cloudflare Tunnel wurde am 06.09.2026 stillgelegt (homeserver#195). Er hatte ha.robinwerner.net und vs.robinwerner.net bedient und in sieben Wochen null Anfragen gesehen. Er kommt auch nicht zurueck: sein 100-MB-Upload-Limit schneidet zum Beispiel Immich-Videos ab.

Offener Punkt: Port-Forward 443 auf der UDM

Die UDM leitet laut bisheriger Dokumentation 443 auf den Traefik des NUC weiter. Da kein Router einen externen Hostname traegt, bedient dieser Forward nichts — er ist offene Angriffsflaeche ohne Funktion und soll deaktiviert werden. Noch nicht verifiziert, ob er ueberhaupt aktiv ist: die UDM-Konfiguration ist von hier nicht lesbar, und ein Test aus dem LAN heraus ist wegen Hairpin-NAT wertlos. Gegenprobe von aussen (Mobilfunk oder vServer): curl -skI --max-time 8 https://<Heim-IP>/. Bis E10 wird oeffentliche Exposition bewusst nicht neu aufgebaut.

VPN (Headscale + Tailscale)

  • Headscale laeuft auf dem Hetzner vServer als selbst-gehosteter Tailscale Coordination Server
  • Tailscale Clients auf NUC, Dev-Workstation und mobilen Geraeten
  • ACL-Regeln beschraenken den Zugriff: tag:server (Hetzner) darf nur Monitoring-Ports im Heimnetz erreichen

Siehe: Headscale | Tailscale

DNS

  • Pi-hole + Unbound auf dem NUC (10.10.10.3) als lokaler DNS-Resolver mit Adblocker
  • Cloudflare fuer externe DNS-Verwaltung (API-gesteuert)
  • Magic DNS im VPN-Netzwerk via Headscale

Siehe: Pi-hole

Unbound steht dauerhaft auf unhealthy — die Aufloesung funktioniert trotzdem

Der Healthcheck des Images ruft drill-hc auf, das im Container nicht existiert (executable file not found in $PATH). Der Zaehler stand am 18.08.2026 bei ueber 103.000 Fehlschlaegen. Eine Abfrage ueber Pi-hole an Unbound liefert korrekte Antworten — es ist ausschliesslich der Healthcheck defekt. Da Unbound nicht an Traefik haengt, hat der Status keine Betriebsfolge; er verdeckt aber einen echten Ausfall, sollte es je einen geben.


Homeserver — Docker-Netzwerke

Dieser Abschnitt beschreibt die internen Docker-Netzwerke des Homeservers.

Proxy Network

Alle web-zugaenglichen Services teilen sich das externe proxy_network (10.100.0.0/16). Traefik routet den Traffic anhand von Host-Regeln und terminiert TLS mit Let's Encrypt (DNS-Challenge via Cloudflare).

Interne Netzwerke

Services die Datenbanken oder interne Kommunikation brauchen, nutzen eigene isolierte Netzwerke:

Netzwerk Services Zweck
proxy_network Traefik + alle web-zugaenglichen Services Reverse-Proxy-Routing
monitoring Prometheus, VictoriaMetrics/Logs, Grafana, Alloy, Alertmanager, ntfy-alertmanager, Exporter Metrics/Logs-Kommunikation
paperlessngx_internal Paperless, Postgres, Redis, Gotenberg, Tika DB/Cache-Isolation
ollama_internal Ollama IPEX, Ollama Vision, Qdrant, Docling, Open WebUI, Prometheus LLM-Stack und RAG
immich_internal Immich Server, Postgres, Valkey, Machine Learning DB/Cache/ML-Isolation
voice_internal wyoming-parakeet, wyoming-piper Sprachpfad
dns_network Pi-hole, Unbound DNS-Aufloesung
influxdbnet InfluxDB, Telegraf, Grafana Zeitreihen-Daten
teamspeaknet TeamSpeak, MariaDB TS3-Isolation
speedtesttracker_internal Speedtest-Tracker, Postgres Speedtest-DB
pkvapp_internal PKV-App Frontend/Backend, Postgres App-Isolation
bonus-tracker_internal Bonus-Tracker Frontend/Backend App-Isolation
homeassistant_default HA-MCP MCP-Zugriff auf die HA-API
nut_default NUT upsd USV-Daemon

Mehrfach-Mitgliedschaften

Einige Container haengen in zwei Netzen: Traefik-erreichbare Dienste zusaetzlich in proxy_network (Paperless, Immich, Open WebUI, Speedtest-Tracker, Grafana, Prometheus, Alertmanager), Prometheus zudem in ollama_internal, um dort scrapen zu koennen. Das Diagramm zeigt jeden Dienst nur einmal — in seinem fachlichen Heimatnetz.

Der AI-Server hat sein eigenes Docker-Netz ai (llama-swap, Sprachpfad, Open WebUI, node-exporter) und ein noch leeres proxy-Netz fuer die spaetere Traefik-Anbindung.

Host-Netzwerk

Einige Services nutzen network_mode: host — entweder weil sie direkten Netzwerk-Zugriff brauchen oder weil ihre Protokolle nicht ueber einen Reverse-Proxy funktionieren:

  • Home Assistant — mDNS-Discovery, Bluetooth, Zigbee
  • ESPHome — mDNS fuer OTA-Updates
  • Tailscale — VPN-Tunnel (Headscale als Login-Server)
  • Cloudflare DDNS — Aktualisiert die A-Records bei IP-Wechsel
  • Syncthing — Device-Discovery
  • Snowflake — Tor-Bridge-Relay