Files
bf-infra/caddy/Caddyfile
Christoph Emsenhuber 384f356290 TP34: terpene Quick-Win + Caddy-CF-Seeder + Renderer
- caddy/Caddyfile: terpene.teilzeitladen.xyz → 10.40.20.167:8890 (Quick-Win Schritt 0)
- nautobot/tp34-caddy-cf-seed.py: legt CustomFields caddy_fqdn/caddy_group auf
  ipam.Service an und setzt Werte fuer die 9 Routen mit vorhandenem Service-Objekt
- nautobot/tp34-caddy-render.py: rendert Caddyfile aus Nautobot, Diff gegen
  caddy/Caddyfile, optionaler Deploy via pct push + caddy reload

Deploy-Auflage fuer den terpene-Block:
  pct push 130 caddy/Caddyfile /etc/caddy/Caddyfile
  ssh root@10.40.20.40 "caddy reload --config /etc/caddy/Caddyfile"
(Plus CF-Tunnel-Route fuer terpene.teilzeitladen.xyz pruefen)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-09-08 11:48:18 +02:00

112 lines
3.0 KiB
Caddyfile

# 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
}
terpene.teilzeitladen.xyz {
reverse_proxy http://10.40.20.167:8890
}
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.30: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
}
}