# TP31 — Reverse Proxy BF (Caddy), LXC 130 / 10.40.20.40 # SSoT: docs/teilprojekte.md → TP31. Deploy: pct push 130 caddy/Caddyfile /etc/caddy/Caddyfile # # Zertifikate ausschliesslich per DNS-01, damit auch rein INTERNE Namen gueltige # Zertifikate bekommen, ohne dass von aussen irgendetwas erreichbar sein muss. # Token: /etc/caddy/caddy.env (chmod 600, NICHT im Repo) — eng geschnitten auf # Zone:DNS:Edit fuer emsenhuber.net. NICHT das account-weite CF_API_TOKEN. { email christoph@emsenhuber.com acme_dns cloudflare {env.CF_DNS_API_TOKEN} } # --- Backends mit Selbstsignat: Caddy prueft deren Zertifikat nicht --------- (selfsigned) { transport http { tls_insecure_skip_verify } } # ========================================================================= # OEFFENTLICH (via Cloudflare Tunnel + Access; Clients ohne WARP) # ========================================================================= vw.emsenhuber.net { # TP41 T2: /admin nur lokal/WARP-intern (kein CF-Header). Via CF (Header CF-Connecting-IP # gesetzt) -> 404 statt Vault-Admin. Ersetzt die frühere WAF-Edge-Regel (403). @cf_admin { header CF-Connecting-IP * path /admin /admin/* } respond @cf_admin 404 reverse_proxy http://10.40.20.127 } hass.emsenhuber.net { reverse_proxy http://10.40.20.105:8123 } n8n.emsenhuber.net { reverse_proxy http://10.40.20.167:5678 } gitea.emsenhuber.net { reverse_proxy http://10.40.20.157:3000 } # ========================================================================= # INTERN (Mesh/LAN; Split-Horizon zeigt diese Namen auf 10.40.20.40) # ========================================================================= nautobot.bf.emsenhuber.net { reverse_proxy http://10.40.20.154:8080 } # grafana.emsenhuber.net — 2026-08-25 entfernt: LXC 104 war seit Langem gestoppt und stand # noch auf VLAN1 (10.40.41.109); die Ingress-Zeile zeigte auf 10.40.20.109, das es nie gab. # Wiederaufbau spaeter als eigener Punkt, dann nach TP32-Systematik. ds-bf.emsenhuber.net { reverse_proxy http://10.40.20.10:8080 } ccu.bf.emsenhuber.net { reverse_proxy http://10.40.20.232 } iobroker.bf.emsenhuber.net { reverse_proxy http://10.40.20.107:8081 } z2m25.bf.emsenhuber.net { reverse_proxy http://10.40.20.106:8080 } # --- MCP-Endpunkte: heute spricht ~/.claude.json diese IPs roh -------------- pve-mcp.bf.emsenhuber.net { reverse_proxy http://10.40.20.173:3000 } ha-mcp.bf.emsenhuber.net { reverse_proxy http://10.40.20.105:9583 } n8n-mcp.bf.emsenhuber.net { reverse_proxy http://10.40.20.167:3001 } gitea-mcp.bf.emsenhuber.net { reverse_proxy http://10.40.20.167:3000 } # --- HTTPS-Backends (Selbstsignat) ----------------------------------------- pve.bf.emsenhuber.net { reverse_proxy https://10.40.20.100:8006 { import selfsigned } } portainer.bf.emsenhuber.net { reverse_proxy https://10.40.20.126:9443 { import selfsigned } } pbs.bf.emsenhuber.net { reverse_proxy https://10.40.20.135:8007 { import selfsigned } }