# Reverse Proxy für den Betrieb im Firmennetz. # # Der Name ist öffentlich (hr.elycon.solutions), die Adresse dahinter privat # (10.x). Das ist erlaubt und der übliche Weg: der DNS-Eintrag ist von aussen # auflösbar, der Server nicht erreichbar. # # Warum das der Aufwand wert ist: Entra ID akzeptiert `http` nur für # localhost. Ohne HTTPS gibt es keine Anmeldung — und ein selbst signiertes # Zertifikat müsste auf jedem Arbeitsplatz als vertrauenswürdig hinterlegt # werden. Mit der DNS-Challenge kommt ein regulär vertrauenswürdiges # Zertifikat zustande, ohne dass der Server je aus dem Internet erreichbar # sein muss. # # Voraussetzung: ein Caddy-Build mit dem DNS-Modul des eigenen Anbieters, # etwa # xcaddy build --with github.com/caddy-dns/cloudflare # Andere Anbieter siehe https://github.com/caddy-dns # # Der API-Schlüssel gehört in eine Umgebungsvariable des Dienstes, nicht in # diese Datei. hr.elycon.solutions { tls { dns cloudflare {env.CLOUDFLARE_API_TOKEN} } # Die Anwendung lauscht nur auf der Loopback-Adresse (siehe # docker-compose.yml), erreichbar ist sie also ausschliesslich über # diesen Proxy. reverse_proxy 127.0.0.1:3000 # Ohne diese Weitergabe baut Auth.js seine Rückruf-Adresse aus dem # Container-Hostnamen statt aus dem echten Namen — die Anmeldung landet # dann auf einer Adresse, die niemand kennt. `trustHost` in # lib/auth/config.ts wertet genau diese Header aus. header_up X-Forwarded-Proto {scheme} header_up X-Forwarded-Host {host} encode gzip zstd log { output file /var/log/caddy/hr.log format json } }